KiCad PCB EDA Suite
symbol_editor_settings.cpp
Go to the documentation of this file.
1 /*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2020 KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23 
25 #include <settings/parameters.h>
27 #include "symbol_editor_settings.h"
28 #include <default_values.h>
29 
30 
32 const int libeditSchemaVersion = 0;
33 
34 
36  APP_SETTINGS_BASE( "symbol_editor", libeditSchemaVersion ),
37  m_Defaults(),
38  m_Repeat(),
39  m_ShowPinElectricalType( true ),
40  m_LibWidth(),
41  m_EditSymbolVisibleColumns()
42 {
43  // Make Coverity happy
45 
46  // Init settings:
47  SetLegacyFilename( "eeschema" );
48 
49  m_params.emplace_back( new PARAM<int>( "defaults.line_width",
51 
52  m_params.emplace_back( new PARAM<int>( "defaults.text_size",
54 
55  m_params.emplace_back( new PARAM<int>( "defaults.pin_length",
57 
58  m_params.emplace_back( new PARAM<int>( "defaults.pin_name_size",
60 
61  m_params.emplace_back( new PARAM<int>( "defaults.pin_num_size",
63 
64  m_params.emplace_back( new PARAM<int>( "repeat.label_delta", &m_Repeat.label_delta, 1 ) );
65 
66  m_params.emplace_back( new PARAM<int>( "repeat.pin_step", &m_Repeat.pin_step, 100 ) );
67 
68  m_params.emplace_back( new PARAM<int>( "repeat.x_step", &m_Repeat.x_step, 0 ) );
69 
70  m_params.emplace_back( new PARAM<int>( "repeat.y_step", &m_Repeat.y_step, 100 ) );
71 
72  m_params.emplace_back( new PARAM<bool>( "show_pin_electrical_type",
73  &m_ShowPinElectricalType, true ) );
74 
75  m_params.emplace_back( new PARAM<int>( "lib_table_width", &m_LibWidth, 250 ) );
76 
77  m_params.emplace_back( new PARAM<wxString>( "edit_component_visible_columns",
78  &m_EditSymbolVisibleColumns, "0 1 2 3 4 5 6 7" ) );
79 
80  m_params.emplace_back( new PARAM<wxString>( "pin_table_visible_columns",
81  &m_PinTableVisibleColumns, "0 1 2 3 4 8 9" ) );
82 
83  m_params.emplace_back(
84  new PARAM<bool>( "use_eeschema_color_settings", &m_UseEeschemaColorSettings, true ) );
85 }
86 
87 
89 {
90  bool ret = APP_SETTINGS_BASE::MigrateFromLegacy( aCfg );
91 
92  // Now modify the loaded grid selection, because in earlier versions the grids index was shared
93  // between all applications and started at 1000 mils. There is a 4-position offset between
94  // this index and the possible eeschema grids list that we have to subtract.
95  std::string gridSizePtr = "window.grid.last_size";
96 
97  if( OPT<int> currentSize = Get<int>( gridSizePtr ) )
98  {
99  Set( gridSizePtr, *currentSize - 4 );
100  }
101  else
102  {
103  // Otherwise, default grid size should be 50 mils; index 1
104  Set( gridSizePtr, 1 );
105  }
106 
107  ret &= fromLegacy<int>( aCfg, "DefaultWireWidth", "defaults.line_width" );
108  ret &= fromLegacy<int>( aCfg, "DefaultPinLength", "defaults.pin_length" );
109  ret &= fromLegacy<int>( aCfg, "LibeditPinNameSize", "defaults.pin_name_size" );
110  ret &= fromLegacy<int>( aCfg, "LibeditPinNumSize", "defaults.pin_num_size" );
111 
112  ret &= fromLegacy<int>( aCfg, "LibeditRepeatLabelInc", "repeat.label_delta" );
113  ret &= fromLegacy<int>( aCfg, "LibeditPinRepeatStep", "repeat.pin_step" );
114  ret &= fromLegacy<int>( aCfg, "LibeditRepeatStepX", "repeat.x_step" );
115  ret &= fromLegacy<int>( aCfg, "LibeditRepeatStepY", "repeat.y_step" );
116 
117  ret &= fromLegacy<int>( aCfg, "LibeditLibWidth", "lib_table_width" );
118  ret &= fromLegacy<bool>( aCfg, "LibeditShowPinElectricalType", "show_pin_electrical_type" );
119 
120  ret &= fromLegacyString( aCfg, "LibEditFieldsShownColumns", "edit_component_visible_columns" );
121 
122  ret &= fromLegacyString( aCfg, "PinTableShownColumns", "pin_table_visible_columns" );
123 
124  return ret;
125 }
void Set(const std::string &aPath, ValueType aVal)
Stores a value into the JSON document Will throw an exception if ValueType isn't something that the l...
std::vector< PARAM_BASE * > m_params
The list of parameters (owned by this object)
#define DEFAULT_LINE_WIDTH_MILS
The default wire width in mils. (can be changed in preference menu)
virtual bool MigrateFromLegacy(wxConfigBase *aCfg) override
Migrates from wxConfig to JSON-based configuration.
#define DEFAULT_PIN_LENGTH
The default pin number size when creating pins(can be changed in preference menu)
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
#define DEFAULT_PINNUM_SIZE
The default pin name size when creating pins(can be changed in preference menu)
#define DEFAULT_PINNAME_SIZE
The default selection highlight thickness (can be changed in preference menu)
virtual bool MigrateFromLegacy(wxConfigBase *aLegacyConfig) override
Migrates from wxConfig to JSON-based configuration.
bool fromLegacyString(wxConfigBase *aConfig, const std::string &aKey, const std::string &aDest)
Translates a legacy wxConfig string value to a given JSON pointer value.
const int libeditSchemaVersion
! Update the schema version whenever a migration is required
boost::optional< T > OPT
Definition: optional.h:7
#define DEFAULT_TEXT_SIZE
Ratio of the font height to the baseline of the text above the wire.
void SetLegacyFilename(const wxString &aFilename)
Definition: json_settings.h:80