mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 02:03:12 +02:00
First, add automatic detection of toolkit DPI scaling options. For now, this is, in order, * Check the GDK_SCALE option under GTK+ (users can set this to force the scaling) * Check the value from WX's GetContentScalingFactor(). This will start to work correctly from WX 3.1 and GTK+ 3.10. Then, add a user-settable override in the main prefs panel, next to the icon scaling. This is independent of the icon scaling options. DPI handling is performed in a standalone class, so they can be shared between the prefs UI and the OpenGL backend easily. Also means Cairo could use the same interface in future. Also adjust the OpenGL grid drawing code to use the computed scale factor, which avoids over-thick grids in scaled environments (the user can manually thicken the grid if wanted). Fixes: lp:1797308 * https://bugs.launchpad.net/kicad/+bug/1797308
140 lines
3.8 KiB
C++
140 lines
3.8 KiB
C++
/*
|
|
* This program source code file is part of KiCad, a free EDA CAD application.
|
|
*
|
|
* Copyright (C) 2018 KiCad Developers, see AUTHORS.txt for contributors.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation, either version 3 of the License, or (at your
|
|
* option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#include <env_vars.h>
|
|
|
|
#include <map>
|
|
|
|
#include <common.h>
|
|
|
|
#include <wx/utils.h>
|
|
|
|
using STRING_MAP = std::map<wxString, wxString>;
|
|
|
|
/*
|
|
* List of pre-defined environment variables
|
|
*
|
|
* TODO - Instead of defining these values here,
|
|
* extract them from elsewhere in the program
|
|
* (where they are originally defined)
|
|
*/
|
|
static const ENV_VAR_LIST predefined_env_vars = {
|
|
"KIPRJMOD",
|
|
"KICAD_SYMBOL_DIR",
|
|
"KISYS3DMOD",
|
|
"KISYSMOD",
|
|
"KIGITHUB",
|
|
"KICAD_TEMPLATE_DIR",
|
|
"KICAD_USER_TEMPLATE_DIR",
|
|
"KICAD_PTEMPLATES",
|
|
};
|
|
|
|
|
|
bool IsEnvVarImmutable( const wxString& aEnvVar )
|
|
{
|
|
for( const auto& s: predefined_env_vars )
|
|
{
|
|
if( s == aEnvVar )
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
const ENV_VAR_LIST& GetPredefinedEnvVars()
|
|
{
|
|
return predefined_env_vars;
|
|
}
|
|
|
|
|
|
void initialiseEnvVarHelp( STRING_MAP& aMap )
|
|
{
|
|
// Set up dynamically, as we want to be able to use _() translations,
|
|
// which can't be done statically
|
|
aMap["KISYSMOD"] =
|
|
_( "The base path of locally installed system "
|
|
"footprint libraries (.pretty folders).");
|
|
aMap["KISYS3DMOD"] =
|
|
_( "The base path of system footprint 3D shapes (.3Dshapes folders).");
|
|
aMap["KICAD_SYMBOL_DIR"] =
|
|
_( "The base path of the locally installed symbol libraries.");
|
|
aMap["KIGITHUB"] =
|
|
_( "Used by KiCad to define the URL of the repository "
|
|
"of the official KiCad footprint libraries.");
|
|
aMap["KICAD_TEMPLATE_DIR"] =
|
|
_( "A directory containing project templates installed with KiCad.");
|
|
aMap["KICAD_USER_TEMPLATE_DIR"] =
|
|
_( "Optional. Can be defined if you want to create your own project "
|
|
"templates folder.");
|
|
aMap["KIPRJMOD"] =
|
|
_("Internally defined by KiCad (cannot be edited) and is set "
|
|
"to the absolute path of the currently loaded project file. This environment "
|
|
"variable can be used to define files and paths relative to the currently loaded "
|
|
"project. For instance, ${KIPRJMOD}/libs/footprints.pretty can be defined as a "
|
|
"folder containing a project specific footprint library named footprints.pretty." );
|
|
|
|
// Deprecated vars
|
|
aMap["KICAD_PTEMPLATES"] =
|
|
_( "Deprecated version of KICAD_TEMPLATE_DIR.");
|
|
}
|
|
|
|
|
|
wxString LookUpEnvVarHelp( const wxString& aEnvVar )
|
|
{
|
|
static STRING_MAP env_var_help_text;
|
|
|
|
if( env_var_help_text.size() == 0 )
|
|
initialiseEnvVarHelp( env_var_help_text );
|
|
|
|
return env_var_help_text[aEnvVar];
|
|
}
|
|
|
|
|
|
template<>
|
|
OPT<double> GetEnvVar( const wxString& aEnvVarName )
|
|
{
|
|
OPT<double> opt_value;
|
|
|
|
wxString env;
|
|
if( wxGetEnv( aEnvVarName, &env ) )
|
|
{
|
|
double value;
|
|
if( env.ToDouble( &value ) )
|
|
{
|
|
opt_value = value;
|
|
}
|
|
}
|
|
|
|
return opt_value;
|
|
}
|
|
|
|
template<>
|
|
OPT<wxString> GetEnvVar( const wxString& aEnvVarName )
|
|
{
|
|
OPT<wxString> opt_value;
|
|
|
|
wxString env;
|
|
if( wxGetEnv( aEnvVarName, &env ) )
|
|
{
|
|
opt_value = env;
|
|
}
|
|
|
|
return opt_value;
|
|
} |