KiCad PCB EDA Suite
BOARD_DESIGN_SETTINGS Class Reference

Container for design settings for a BOARD object. More...

#include <board_design_settings.h>

Inheritance diagram for BOARD_DESIGN_SETTINGS:
NESTED_SETTINGS JSON_SETTINGS

Public Member Functions

 BOARD_DESIGN_SETTINGS (JSON_SETTINGS *aParent, const std::string &aPath)
 
virtual ~BOARD_DESIGN_SETTINGS ()
 
 BOARD_DESIGN_SETTINGS (const BOARD_DESIGN_SETTINGS &aOther)
 
BOARD_DESIGN_SETTINGSoperator= (const BOARD_DESIGN_SETTINGS &aOther)
 
bool LoadFromFile (const wxString &aDirectory="") override
 Loads the backing file from disk and then calls Load() More...
 
BOARD_STACKUPGetStackupDescriptor ()
 
const BOARD_STACKUPGetStackupDescriptor () const
 
SEVERITY GetSeverity (int aDRCErrorCode)
 
bool Ignore (int aDRCErrorCode)
 Return true if the DRC error code's severity is SEVERITY_IGNORE. More...
 
NETCLASSESGetNetClasses () const
 
void SetNetClasses (NETCLASSES *aNetClasses)
 
ZONE_SETTINGSGetDefaultZoneSettings ()
 
void SetDefaultZoneSettings (const ZONE_SETTINGS &aSettings)
 
NETCLASSGetDefault () const
 
const wxString & GetCurrentNetClassName () const
 
bool UseNetClassTrack () const
 Return true if netclass values should be used to obtain appropriate track width. More...
 
bool UseNetClassVia () const
 Return true if netclass values should be used to obtain appropriate via size. More...
 
bool UseNetClassDiffPair () const
 Return true if netclass values should be used to obtain appropriate diff pair dimensions. More...
 
int GetBiggestClearanceValue ()
 
int GetSmallestClearanceValue ()
 
int GetCurrentMicroViaSize ()
 
int GetCurrentMicroViaDrill ()
 
unsigned GetTrackWidthIndex () const
 
void SetTrackWidthIndex (unsigned aIndex)
 Set the current track width list index to aIndex. More...
 
int GetCurrentTrackWidth () const
 
void SetCustomTrackWidth (int aWidth)
 Sets custom width for track (i.e. More...
 
int GetCustomTrackWidth () const
 
unsigned GetViaSizeIndex () const
 
void SetViaSizeIndex (unsigned aIndex)
 Set the current via size list index to aIndex. More...
 
int GetCurrentViaSize () const
 
void SetCustomViaSize (int aSize)
 Set custom size for via diameter (i.e. More...
 
int GetCustomViaSize () const
 
int GetCurrentViaDrill () const
 
void SetCustomViaDrill (int aDrill)
 Sets custom size for via drill (i.e. More...
 
int GetCustomViaDrill () const
 
void UseCustomTrackViaSize (bool aEnabled)
 Enables/disables custom track/via size settings. More...
 
bool UseCustomTrackViaSize () const
 
unsigned GetDiffPairIndex () const
 
void SetDiffPairIndex (unsigned aIndex)
 
void SetCustomDiffPairWidth (int aWidth)
 Sets custom track width for differential pairs (i.e. More...
 
int GetCustomDiffPairWidth ()
 
void SetCustomDiffPairGap (int aGap)
 Sets custom gap for differential pairs (i.e. More...
 
int GetCustomDiffPairGap ()
 Function GetCustomDiffPairGap. More...
 
void SetCustomDiffPairViaGap (int aGap)
 Sets custom via gap for differential pairs (i.e. More...
 
int GetCustomDiffPairViaGap ()
 
void UseCustomDiffPairDimensions (bool aEnabled)
 Enables/disables custom differential pair dimensions. More...
 
bool UseCustomDiffPairDimensions () const
 
int GetCurrentDiffPairWidth () const
 
int GetCurrentDiffPairGap () const
 
int GetCurrentDiffPairViaGap () const
 
void SetMinHoleSeparation (int aDistance)
 
void SetCopperEdgeClearance (int aDistance)
 
void SetSilkClearance (int aDistance)
 Set the minimum distance between silk items to aValue. More...
 
LSET GetEnabledLayers () const
 Return a bit-mask of all the layers that are enabled. More...
 
void SetEnabledLayers (LSET aMask)
 Change the bit-mask of enabled layers to aMask. More...
 
bool IsLayerEnabled (PCB_LAYER_ID aLayerId) const
 Test whether a given layer aLayerId is enabled. More...
 
int GetCopperLayerCount () const
 
void SetCopperLayerCount (int aNewLayerCount)
 Set the copper layer count to aNewLayerCount. More...
 
int GetBoardThickness () const
 
void SetBoardThickness (int aThickness)
 
int GetDRCEpsilon () const
 
int GetHolePlatingThickness () const
 Pad & via drills are finish size. More...
 
int GetLineThickness (PCB_LAYER_ID aLayer) const
 Return the default graphic segment thickness from the layer class for the given layer. More...
 
wxSize GetTextSize (PCB_LAYER_ID aLayer) const
 Return the default text size from the layer class for the given layer. More...
 
int GetTextThickness (PCB_LAYER_ID aLayer) const
 Return the default text thickness from the layer class for the given layer. More...
 
bool GetTextItalic (PCB_LAYER_ID aLayer) const
 
bool GetTextUpright (PCB_LAYER_ID aLayer) const
 
int GetLayerClass (PCB_LAYER_ID aLayer) const
 
bool SaveToFile (const wxString &aDirectory="", bool aForce=false) override
 Calls Store() and then saves the JSON document contents into the parent JSON_SETTINGS. More...
 
void SetParent (JSON_SETTINGS *aParent)
 
JSON_SETTINGSGetParent ()
 
wxString GetFilename () const
 
wxString GetFullFilename () const
 
void SetFilename (const wxString &aFilename)
 
SETTINGS_LOC GetLocation () const
 
void SetLegacyFilename (const wxString &aFilename)
 
bool IsReadOnly () const
 
void SetReadOnly (bool aReadOnly)
 
virtual void Load ()
 Updates the parameters of this object based on the current JSON document contents. More...
 
virtual bool Store ()
 Stores the current parameters into the JSON document represented by this object Note: this doesn't do any writing to disk; that's handled by SETTINGS_MANAGER. More...
 
void ResetToDefaults ()
 Resets all parameters to default values. More...
 
OPT< nlohmann::jsonGetJson (const std::string &aPath) const
 Fetches a JSON object that is a subset of this JSON_SETTINGS object, using a path of the form "key1.key2.key3" to refer to nested objects. More...
 
template<typename ValueType >
OPT< ValueType > Get (const std::string &aPath) const
 Fetches a value from within the JSON document. More...
 
template<>
OPT< wxString > Get (const std::string &aPath) const
 
template<typename ValueType >
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 library can handle. More...
 
template<>
void Set (const std::string &aPath, wxString aVal)
 
template<>
void Set (const std::string &aPath, wxString aVal)
 
bool Migrate ()
 Migrates the schema of this settings from the version in the file to the latest version. More...
 
virtual bool MigrateFromLegacy (wxConfigBase *aLegacyConfig)
 Migrates from wxConfig to JSON-based configuration. More...
 
void AddNestedSettings (NESTED_SETTINGS *aSettings)
 Transfers ownership of a given NESTED_SETTINGS to this object. More...
 
void ReleaseNestedSettings (NESTED_SETTINGS *aSettings)
 Saves and frees a nested settings object, if it exists within this one. More...
 
void SetManager (SETTINGS_MANAGER *aManager)
 

Static Public Member Functions

static nlohmann::json::json_pointer PointerFromString (std::string aPath)
 Builds a JSON pointer based on a given string. More...
 
static bool SetIfPresent (const nlohmann::json &aObj, const std::string &aPath, wxString &aTarget)
 Sets the given string if the given key/path is present. More...
 
static bool SetIfPresent (const nlohmann::json &aObj, const std::string &aPath, bool &aTarget)
 Sets the given bool if the given key/path is present. More...
 
static bool SetIfPresent (const nlohmann::json &aObj, const std::string &aPath, int &aTarget)
 Sets the given int if the given key/path is present. More...
 
static bool SetIfPresent (const nlohmann::json &aObj, const std::string &aPath, unsigned int &aTarget)
 Sets the given unsigned int if the given key/path is present. More...
 

Public Attributes

std::vector< int > m_TrackWidthList
 
std::vector< VIA_DIMENSIONm_ViasDimensionsList
 
std::vector< DIFF_PAIR_DIMENSIONm_DiffPairDimensionsList
 
bool m_MicroViasAllowed
 true to allow micro vias More...
 
bool m_BlindBuriedViaAllowed
 true to allow blind/buried vias More...
 
VIATYPE m_CurrentViaType
 (VIA_BLIND_BURIED, VIA_THROUGH, VIA_MICROVIA) More...
 
bool m_UseConnectedTrackWidth
 
int m_MinClearance
 
int m_TrackMinWidth
 
int m_ViasMinAnnulus
 
int m_ViasMinSize
 
int m_MinThroughDrill
 
int m_MicroViasMinSize
 
int m_MicroViasMinDrill
 
int m_CopperEdgeClearance
 
int m_HoleClearance
 
int m_HoleToHoleMin
 
int m_SilkClearance
 
std::shared_ptr< DRC_ENGINEm_DRCEngine
 
std::map< int, SEVERITYm_DRCSeverities
 
std::set< wxString > m_DrcExclusions
 
int m_ZoneFillVersion
 Option to select different fill algorithms. More...
 
bool m_ZoneKeepExternalFillets
 
int m_MaxError
 
int m_SolderMaskMargin
 
int m_SolderMaskMinWidth
 
int m_SolderPasteMargin
 
double m_SolderPasteMarginRatio
 
std::vector< TEXT_ITEM_INFOm_DefaultFPTextItems
 
int m_LineThickness [LAYER_CLASS_COUNT]
 
wxSize m_TextSize [LAYER_CLASS_COUNT]
 
int m_TextThickness [LAYER_CLASS_COUNT]
 
bool m_TextItalic [LAYER_CLASS_COUNT]
 
bool m_TextUpright [LAYER_CLASS_COUNT]
 
DIM_UNITS_MODE m_DimensionUnitsMode
 
int m_DimensionPrecision
 Number of digits after the decimal. More...
 
DIM_UNITS_FORMAT m_DimensionUnitsFormat
 
bool m_DimensionSuppressZeroes
 
DIM_TEXT_POSITION m_DimensionTextPosition
 
bool m_DimensionKeepTextAligned
 
int m_DimensionArrowLength
 
int m_DimensionExtensionOffset
 
wxPoint m_AuxOrigin
 origin for plot exports More...
 
wxPoint m_GridOrigin
 origin for grid offsets More...
 
PAD m_Pad_Master
 
bool m_HasStackup
 

Protected Member Functions

void registerMigration (int aOldSchemaVersion, int aNewSchemaVersion, std::function< bool(void)> aMigrator)
 Registers a migration from one schema version to another. More...
 
template<typename ValueType >
bool fromLegacy (wxConfigBase *aConfig, const std::string &aKey, const std::string &aDest)
 Translates a legacy wxConfig value to a given JSON pointer value. More...
 
bool fromLegacyString (wxConfigBase *aConfig, const std::string &aKey, const std::string &aDest)
 Translates a legacy wxConfig string value to a given JSON pointer value. More...
 
bool fromLegacyColor (wxConfigBase *aConfig, const std::string &aKey, const std::string &aDest)
 Translates a legacy COLOR4D stored in a wxConfig string to a given JSON pointer value. More...
 
virtual wxString getFileExt () const
 
virtual wxString getLegacyFileExt () const
 

Protected Attributes

JSON_SETTINGSm_parent
 A pointer to the parent object to load and store from. More...
 
std::string m_path
 The path (in pointer format) of where to store this document in the parent. More...
 
wxString m_filename
 The filename (not including path) of this settings file (inicode) More...
 
wxString m_legacy_filename
 The filename of the wxConfig legacy file (if different from m_filename) More...
 
SETTINGS_LOC m_location
 The location of this settings file (. More...
 
std::vector< PARAM_BASE * > m_params
 The list of parameters (owned by this object) More...
 
std::vector< NESTED_SETTINGS * > m_nested_settings
 Nested settings files that live inside this one, if any. More...
 
bool m_createIfMissing
 Whether or not the backing store file should be created it if doesn't exist. More...
 
bool m_createIfDefault
 Whether or not the backing store file should be created if all parameters are still at their default values. More...
 
bool m_writeFile
 Whether or not the backing store file should be written. More...
 
bool m_deleteLegacyAfterMigration
 Whether or not to delete legacy file after migration. More...
 
bool m_resetParamsIfMissing
 Whether or not to set parameters to their default value if missing from JSON on Load() More...
 
int m_schemaVersion
 Version of this settings schema. More...
 
SETTINGS_MANAGERm_manager
 A pointer to the settings manager managing this file (may be null) More...
 
std::vector< nlohmann::json::json_pointer > m_preserved_paths
 A list of JSON pointers that are preserved during a read-update-write to disk. More...
 
std::map< int, std::pair< int, std::function< bool()> > > m_migrators
 A map of starting schema version to a pair of <ending version, migrator function> More...
 

Private Member Functions

void initFromOther (const BOARD_DESIGN_SETTINGS &aOther)
 
bool migrateSchema0to1 ()
 

Private Attributes

unsigned m_trackWidthIndex
 
unsigned m_viaSizeIndex
 
unsigned m_diffPairIndex
 
bool m_useCustomTrackVia
 
int m_customTrackWidth
 
VIA_DIMENSION m_customViaSize
 
bool m_useCustomDiffPair
 
DIFF_PAIR_DIMENSION m_customDiffPair
 
int m_copperLayerCount
 Number of copper layers for this design. More...
 
LSET m_enabledLayers
 Bit-mask for layer enabling. More...
 
int m_boardThickness
 Board thickness for 3D viewer. More...
 
wxString m_currentNetClassName
 Current net class name used to display netclass info. More...
 
BOARD_STACKUP m_stackup
 the description of layers stackup, for board fabrication only physical layers are in layers stackup. More...
 
NETCLASSES m_internalNetClasses
 Net classes that are loaded from the board file before these were stored in the project. More...
 
NETCLASSESm_netClasses
 This will point to m_internalNetClasses until it is repointed to the project after load. More...
 
ZONE_SETTINGS m_defaultZoneSettings
 The default settings that will be used for new zones. More...
 

Detailed Description

Container for design settings for a BOARD object.

Definition at line 218 of file board_design_settings.h.

Constructor & Destructor Documentation

◆ BOARD_DESIGN_SETTINGS() [1/2]

BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS ( JSON_SETTINGS aParent,
const std::string &  aPath 
)

Definition at line 38 of file board_design_settings.cpp.

38  :
39  NESTED_SETTINGS( "board_design_settings", bdsSchemaVersion, aParent, aPath ),
41 {
42  // We want to leave alone parameters that aren't found in the project JSON as they may be
43  // initialized by the board file parser before NESTED_SETTINGS::LoadFromFile is called.
44  m_resetParamsIfMissing = false;
45 
46  // Create a default NETCLASS list so that things don't break horribly if there's no project
47  // loaded. This also is used during file load for legacy boards that have netclasses stored
48  // in the file. After load, this information will be moved to the project and the pointer
49  // updated.
51 
52  m_HasStackup = false; // no stackup defined by default
53 
54  LSET all_set = LSET().set();
55  m_enabledLayers = all_set; // All layers enabled at first.
56  // SetCopperLayerCount() will adjust this.
57 
58  SetCopperLayerCount( 2 ); // Default design is a double sided board
60 
61  // if true, when creating a new track starting on an existing track, use this track width
63 
65  m_MicroViasAllowed = false;
66 
67  // First is always the reference designator
68  m_DefaultFPTextItems.emplace_back( wxT( "REF**" ), true, F_SilkS );
69  // Second is always the value
70  m_DefaultFPTextItems.emplace_back( wxT( "" ), true, F_Fab );
71  // Any following ones are freebies
72  m_DefaultFPTextItems.emplace_back( wxT( "${REF}" ), true, F_Fab );
73 
78  m_TextItalic[ LAYER_CLASS_SILK ] = false;
80 
87 
88  // Edges & Courtyards; text properties aren't used but better to have them holding
89  // reasonable values than not.
96 
103 
108  m_TextItalic[ LAYER_CLASS_FAB ] = false;
109  m_TextUpright[ LAYER_CLASS_FAB ] = false;
110 
115  m_TextItalic[ LAYER_CLASS_OTHERS ] = false;
117 
126 
127  m_useCustomTrackVia = false;
131 
132  m_useCustomDiffPair = false;
136 
148 
149  for( int errorCode = DRCE_FIRST; errorCode <= DRCE_LAST; ++errorCode )
150  m_DRCSeverities[ errorCode ] = RPT_SEVERITY_ERROR;
151 
155 
158 
163 
164  m_MaxError = ARC_HIGH_DEF;
165  m_ZoneFillVersion = 6; // Use new algo by default to fill zones
166  m_ZoneKeepExternalFillets = false; // Use new algo by default. Legacy boards might
167  // want to set it to true for old algo....
168 
169  // Global mask margins:
172  m_SolderPasteMargin = 0; // Solder paste margin absolute value
173  m_SolderPasteMarginRatio = 0.0; // Solder paste margin as a ratio of pad size
174  // The final margin is the sum of these 2 values
175  // Usually < 0 because the mask is smaller than pad
176  // Layer thickness for 3D viewer
178 
179  m_viaSizeIndex = 0;
180  m_trackWidthIndex = 0;
181  m_diffPairIndex = 0;
182 
183  // Parameters stored in JSON in the project file
184 
185  // NOTE: Previously, BOARD_DESIGN_SETTINGS stored the basic board layer information (layer
186  // names and enable/disable state) in the project file even though this information is also
187  // stored in the board file. This was implemented for importing these settings from another
188  // project. Going forward, the import feature will just import from other board files (since
189  // we could have multi-board projects in the future anyway) so this functionality is dropped.
190 
191  m_params.emplace_back( new PARAM<bool>( "rules.allow_microvias", &m_MicroViasAllowed, false ) );
192 
193  m_params.emplace_back( new PARAM<bool>( "rules.allow_blind_buried_vias",
194  &m_BlindBuriedViaAllowed, false ) );
195 
196  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_clearance", &m_MinClearance,
198  MM_PER_IU ) );
199 
200  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_track_width", &m_TrackMinWidth,
202  MM_PER_IU ) );
203 
204  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_via_annular_width", &m_ViasMinAnnulus,
206  MM_PER_IU ) );
207 
208  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_via_diameter", &m_ViasMinSize,
210  MM_PER_IU ) );
211 
212  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_through_hole_diameter",
214  Millimeter2iu( 25.0 ), MM_PER_IU ) );
215 
216  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_microvia_diameter",
218  Millimeter2iu( 10.0 ), MM_PER_IU ) );
219 
220  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_microvia_drill", &m_MicroViasMinDrill,
222  Millimeter2iu( 10.0 ), MM_PER_IU ) );
223 
224  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_hole_to_hole", &m_HoleToHoleMin,
226  MM_PER_IU ) );
227 
228  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_hole_clearance", &m_HoleClearance,
230  MM_PER_IU ) );
231 
232  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_silk_clearance", &m_SilkClearance,
234  MM_PER_IU ) );
235 
236  // Note: a clearance of -0.01 is a flag indicating we should use the legacy (pre-6.0) method
237  // based on the edge cut thicknesses.
238  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_copper_edge_clearance",
240  Millimeter2iu( -0.01 ), Millimeter2iu( 25.0 ), MM_PER_IU ) );
241 
242  m_params.emplace_back( new PARAM_SCALED<int>( "rules.solder_mask_clearance",
244  Millimeter2iu( -1.0 ), Millimeter2iu( 1.0 ), MM_PER_IU ) );
245 
246  m_params.emplace_back( new PARAM_SCALED<int>( "rules.solder_mask_min_width",
248  Millimeter2iu( 1.0 ), MM_PER_IU ) );
249 
250  m_params.emplace_back( new PARAM_SCALED<int>( "rules.solder_paste_clearance",
252  Millimeter2iu( -1.0 ), Millimeter2iu( 1.0 ), MM_PER_IU ) );
253 
254  m_params.emplace_back( new PARAM<double>( "rules.solder_paste_margin_ratio",
256 
257  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "rule_severities",
258  [&]() -> nlohmann::json
259  {
260  nlohmann::json ret = {};
261 
262  for( const RC_ITEM& item : DRC_ITEM::GetItemsWithSeverities() )
263  {
264  wxString name = item.GetSettingsKey();
265  int code = item.GetErrorCode();
266 
267  if( name.IsEmpty() || m_DRCSeverities.count( code ) == 0 )
268  continue;
269 
270  ret[std::string( name.ToUTF8() )] = SeverityToString( m_DRCSeverities[code] );
271  }
272 
273  return ret;
274  },
275  [&]( const nlohmann::json& aJson )
276  {
277  if( !aJson.is_object() )
278  return;
279 
280  for( const RC_ITEM& item : DRC_ITEM::GetItemsWithSeverities() )
281  {
282  wxString name = item.GetSettingsKey();
283  std::string key( name.ToUTF8() );
284 
285  if( aJson.contains( key ) )
286  m_DRCSeverities[item.GetErrorCode()] = SeverityFromString( aJson[key] );
287  }
288  }, {} ) );
289 
290  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "drc_exclusions",
291  [&]() -> nlohmann::json
292  {
293  nlohmann::json js = nlohmann::json::array();
294 
295  for( const auto& entry : m_DrcExclusions )
296  js.push_back( entry );
297 
298  return js;
299  },
300  [&]( const nlohmann::json& aObj )
301  {
302  m_DrcExclusions.clear();
303 
304  if( !aObj.is_array() )
305  return;
306 
307  for( const nlohmann::json& entry : aObj )
308  {
309  if( entry.empty() )
310  continue;
311 
312  m_DrcExclusions.insert( entry.get<wxString>() );
313  }
314  },
315  {} ) );
316 
317  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "track_widths",
318  [&]() -> nlohmann::json
319  {
320  nlohmann::json js = nlohmann::json::array();
321 
322  for( const int& width : m_TrackWidthList )
323  js.push_back( Iu2Millimeter( width ) );
324 
325  return js;
326  },
327  [&]( const nlohmann::json& aJson )
328  {
329  if( !aJson.is_array() )
330  return;
331 
332  m_TrackWidthList.clear();
333 
334  for( const nlohmann::json& entry : aJson )
335  {
336  if( entry.empty() )
337  continue;
338 
339  m_TrackWidthList.emplace_back( Millimeter2iu( entry.get<double>() ) );
340  }
341  },
342  {} ) );
343 
344  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "via_dimensions",
345  [&]() -> nlohmann::json
346  {
347  nlohmann::json js = nlohmann::json::array();
348 
349  for( const auto& via : m_ViasDimensionsList )
350  {
351  nlohmann::json entry = {};
352 
353  entry["diameter"] = Iu2Millimeter( via.m_Diameter );
354  entry["drill"] = Iu2Millimeter( via.m_Drill );
355 
356  js.push_back( entry );
357  }
358 
359  return js;
360  },
361  [&]( const nlohmann::json& aObj )
362  {
363  if( !aObj.is_array() )
364  return;
365 
366  m_ViasDimensionsList.clear();
367 
368  for( const nlohmann::json& entry : aObj )
369  {
370  if( entry.empty() || !entry.is_object() )
371  continue;
372 
373  if( !entry.contains( "diameter" ) || !entry.contains( "drill" ) )
374  continue;
375 
376  int diameter = Millimeter2iu( entry["diameter"].get<double>() );
377  int drill = Millimeter2iu( entry["drill"].get<double>() );
378 
379  m_ViasDimensionsList.emplace_back( VIA_DIMENSION( diameter, drill ) );
380  }
381  },
382  {} ) );
383 
384  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "diff_pair_dimensions",
385  [&]() -> nlohmann::json
386  {
387  nlohmann::json js = nlohmann::json::array();
388 
389  for( const auto& pair : m_DiffPairDimensionsList )
390  {
391  nlohmann::json entry = {};
392 
393  entry["width"] = Iu2Millimeter( pair.m_Width );
394  entry["gap"] = Iu2Millimeter( pair.m_Gap );
395  entry["via_gap"] = Iu2Millimeter( pair.m_ViaGap );
396 
397  js.push_back( entry );
398  }
399 
400  return js;
401  },
402  [&]( const nlohmann::json& aObj )
403  {
404  if( !aObj.is_array() )
405  return;
406 
407  m_DiffPairDimensionsList.clear();
408 
409  for( const nlohmann::json& entry : aObj )
410  {
411  if( entry.empty() || !entry.is_object() )
412  continue;
413 
414  if( !entry.contains( "width" ) || !entry.contains( "gap" )
415  || !entry.contains( "via_gap" ) )
416  continue;
417 
418  int width = Millimeter2iu( entry["width"].get<double>() );
419  int gap = Millimeter2iu( entry["gap"].get<double>() );
420  int via_gap = Millimeter2iu( entry["via_gap"].get<double>() );
421 
422  m_DiffPairDimensionsList.emplace_back(
423  DIFF_PAIR_DIMENSION( width, gap, via_gap ) );
424  }
425  },
426  {} ) );
427 
428  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.silk_line_width",
430  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
431 
432  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.silk_text_size_v",
434  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
435 
436  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.silk_text_size_h",
438  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
439 
440  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.silk_text_thickness",
442  TEXTS_MAX_WIDTH, MM_PER_IU ) );
443 
444  m_params.emplace_back( new PARAM<bool>( "defaults.silk_text_italic",
445  &m_TextItalic[LAYER_CLASS_SILK], false ) );
446 
447  m_params.emplace_back( new PARAM<bool>( "defaults.silk_text_upright",
448  &m_TextUpright[ LAYER_CLASS_SILK ], true ) );
449 
450  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.copper_line_width",
452  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
453 
454  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.copper_text_size_v",
456  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
457 
458  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.copper_text_size_h",
460  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
461 
462  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.copper_text_thickness",
464  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
465 
466  m_params.emplace_back( new PARAM<bool>( "defaults.copper_text_italic",
467  &m_TextItalic[LAYER_CLASS_COPPER], false ) );
468 
469  m_params.emplace_back( new PARAM<bool>( "defaults.copper_text_upright",
470  &m_TextUpright[LAYER_CLASS_COPPER], true ) );
471 
472  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.board_outline_line_width",
474  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
475 
476  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.courtyard_line_width",
478  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
479 
480  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.fab_line_width",
482  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
483 
484  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.fab_text_size_v",
486  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
487 
488  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.fab_text_size_h",
490  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
491 
492  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.fab_text_thickness",
494  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
495 
496  m_params.emplace_back( new PARAM<bool>( "defaults.fab_text_italic",
497  &m_TextItalic[LAYER_CLASS_FAB], false ) );
498 
499  m_params.emplace_back( new PARAM<bool>( "defaults.fab_text_upright",
500  &m_TextUpright[LAYER_CLASS_FAB], true ) );
501 
502  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.other_line_width",
504  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
505 
506  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.other_text_size_v",
508  TEXTS_MAX_SIZE, MM_PER_IU ) );
509 
510  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.other_text_size_h",
512  TEXTS_MAX_SIZE, MM_PER_IU ) );
513 
514  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.other_text_thickness",
516  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
517 
518  m_params.emplace_back( new PARAM<bool>( "defaults.other_text_italic",
519  &m_TextItalic[LAYER_CLASS_OTHERS], false ) );
520 
521  m_params.emplace_back( new PARAM<bool>( "defaults.other_text_upright",
522  &m_TextUpright[LAYER_CLASS_OTHERS], true ) );
523 
524  m_params.emplace_back( new PARAM_ENUM<DIM_UNITS_MODE>( "defaults.dimension_units",
527 
528  m_params.emplace_back( new PARAM<int>( "defaults.dimension_precision",
529  &m_DimensionPrecision, 4, 0, 5 ) );
530 
531  m_params.emplace_back( new PARAM_ENUM<DIM_UNITS_FORMAT>( "defaults.dimensions.units_format",
534 
535  m_params.emplace_back( new PARAM<bool>( "defaults.dimensions.suppress_zeroes",
536  &m_DimensionSuppressZeroes, false ) );
537 
538  // NOTE: excluding DIM_TEXT_POSITION::MANUAL from the valid range here
539  m_params.emplace_back( new PARAM_ENUM<DIM_TEXT_POSITION>( "defaults.dimensions.text_position",
542 
543  m_params.emplace_back( new PARAM<bool>( "defaults.dimensions.keep_text_aligned",
544  &m_DimensionKeepTextAligned, true ) );
545 
546  m_params.emplace_back( new PARAM<int>( "defaults.dimensions.arrow_length",
548  Mils2iu( DEFAULT_DIMENSION_ARROW_LENGTH ) ) );
549 
550  m_params.emplace_back( new PARAM<int>( "defaults.dimensions.extension_offset",
553 
554  m_params.emplace_back( new PARAM<bool>( "defaults.zones.45_degree_only",
556 
557  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.zones.min_clearance",
559  Millimeter2iu( 0.0 ), Millimeter2iu( 25.0 ), MM_PER_IU ) );
560 
561  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "defaults.pads",
562  [&]() -> nlohmann::json
563  {
564  nlohmann::json ret =
565  {
566  { "width", Iu2Millimeter( m_Pad_Master.GetSize().x ) },
567  { "height", Iu2Millimeter( m_Pad_Master.GetSize().y ) },
568  { "drill", Iu2Millimeter( m_Pad_Master.GetDrillSize().x ) }
569  };
570 
571  return ret;
572  },
573  [&]( const nlohmann::json& aJson )
574  {
575  if( aJson.contains( "width" ) && aJson.contains( "height" )
576  && aJson.contains( "drill" ) )
577  {
578  wxSize sz;
579  sz.SetWidth( Millimeter2iu( aJson["width"].get<double>() ) );
580  sz.SetHeight( Millimeter2iu( aJson["height"].get<double>() ) );
581 
582  m_Pad_Master.SetSize( sz );
583 
584  int drill = Millimeter2iu( aJson["drill"].get<double>() );
585 
586  m_Pad_Master.SetDrillSize( wxSize( drill, drill ) );
587  }
588  }, {} ) );
589 
590  m_params.emplace_back( new PARAM_SCALED<int>( "rules.max_error", &m_MaxError, ARC_HIGH_DEF,
591  Millimeter2iu( 0.0001 ), Millimeter2iu( 1.0 ), MM_PER_IU ) );
592 
593  // TODO: replace with zones_fill_version parameter and migrate zones_use_no_outline?
594  m_params.emplace_back( new PARAM_LAMBDA<bool>( "zones_use_no_outline",
595  [this]() -> bool
596  {
597  return m_ZoneFillVersion >= 6;
598  },
599  [this]( bool aVal )
600  {
601  m_ZoneFillVersion = aVal ? 6 : 5;
602  },
603  6 ) );
604 
605  m_params.emplace_back( new PARAM<bool>( "zones_allow_external_fillets",
606  &m_ZoneKeepExternalFillets, false ) );
607 
608  registerMigration( 0, 1, std::bind( &BOARD_DESIGN_SETTINGS::migrateSchema0to1, this ) );
609 }
#define DEFAULT_EDGE_WIDTH
#define DEFAULT_SILK_TEXT_WIDTH
void SetCopperLayerCount(int aNewLayerCount)
Set the copper layer count to aNewLayerCount.
#define DEFAULT_TRACKMINWIDTH
Container to handle a stock of specific vias each with unique diameter and drill sizes in the BOARD c...
int m_ZoneFillVersion
Option to select different fill algorithms.
#define DEFAULT_COURTYARD_WIDTH
std::vector< TEXT_ITEM_INFO > m_DefaultFPTextItems
std::vector< PARAM_BASE * > m_params
The list of parameters (owned by this object)
#define DEFAULT_SOLDERPASTE_RATIO
#define DEFAULT_VIASMINSIZE
#define TEXTS_MAX_WIDTH
Maximum text width in internal units (10 inches)
Definition: pcbnew.h:33
std::vector< int > m_TrackWidthList
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
A holder for a rule check item, DRC in Pcbnew or ERC in Eeschema.
Definition: rc_item.h:72
NETCLASSES m_internalNetClasses
Net classes that are loaded from the board file before these were stored in the project.
#define LEGACY_COPPEREDGECLEARANCE
#define DEFAULT_BOARD_THICKNESS_MM
int m_DimensionPrecision
Number of digits after the decimal.
ZONE_SETTINGS m_defaultZoneSettings
The default settings that will be used for new zones.
#define DEFAULT_LINE_WIDTH
#define DEFAULT_DIMENSION_ARROW_LENGTH
#define DEFAULT_COPPER_LINE_WIDTH
#define DEFAULT_HOLETOHOLEMIN
Stores an enum as an integer.
Definition: parameters.h:226
void SetSize(const wxSize &aSize)
Definition: pad.h:228
DIFF_PAIR_DIMENSION m_customDiffPair
#define DEFAULT_CUSTOMDPAIRGAP
VIATYPE m_CurrentViaType
(VIA_BLIND_BURIED, VIA_THROUGH, VIA_MICROVIA)
nlohmann::json json
Definition: gerbview.cpp:40
Container to handle a stock of specific differential pairs each with unique track width,...
#define DEFAULT_MINCLEARANCE
#define DEFAULT_MINTHROUGHDRILL
DIM_TEXT_POSITION m_DimensionTextPosition
DIM_UNITS_MODE m_DimensionUnitsMode
#define DEFAULT_CUSTOMDPAIRVIAGAP
#define DEFAULT_DIMENSION_EXTENSION_OFFSET
#define DEFAULT_SOLDERPASTE_CLEARANCE
#define DEFAULT_TEXT_WIDTH
wxSize m_TextSize[LAYER_CLASS_COUNT]
#define DEFAULT_CUSTOMDPAIRWIDTH
const wxSize & GetDrillSize() const
Definition: pad.h:239
#define DEFAULT_SILK_TEXT_SIZE
int m_TextThickness[LAYER_CLASS_COUNT]
LSET is a set of PCB_LAYER_IDs.
#define DEFAULT_SILK_LINE_WIDTH
#define NULL
void SetDrillSize(const wxSize &aSize)
Definition: pad.h:238
const wxSize & GetSize() const
Definition: pad.h:229
bool m_TextItalic[LAYER_CLASS_COUNT]
Represents a parameter that has a scaling factor between the value in the file and the value used int...
Definition: parameters.h:388
#define ZONE_CLEARANCE_MIL
Definition: zones.h:33
Text appears outside the dimension line (default)
bool m_BlindBuriedViaAllowed
true to allow blind/buried vias
const int bdsSchemaVersion
#define TEXTS_MAX_SIZE
Maximum text size in internal units (10 inches)
Definition: pcbnew.h:32
#define DEFAULT_MICROVIASMINSIZE
#define DEFAULT_MICROVIASMINDRILL
#define DEFAULT_SOLDERMASK_MIN_WIDTH
int m_LineThickness[LAYER_CLASS_COUNT]
Text appears in line with the dimension line.
#define DEFAULT_HOLECLEARANCE
#define TEXTS_MIN_SIZE
Minimum text size in internal units (1 mil)
Definition: pcbnew.h:31
#define DEFAULT_COPPEREDGECLEARANCE
bool m_resetParamsIfMissing
Whether or not to set parameters to their default value if missing from JSON on Load()
wxString SeverityToString(const SEVERITY &aSeverity)
Definition: ui_common.cpp:47
const char * name
Definition: DXF_plotter.cpp:59
void registerMigration(int aOldSchemaVersion, int aNewSchemaVersion, std::function< bool(void)> aMigrator)
Registers a migration from one schema version to another.
#define DEFAULT_SILKCLEARANCE
std::map< int, SEVERITY > m_DRCSeverities
SEVERITY SeverityFromString(const wxString &aSeverity)
Definition: ui_common.cpp:36
static std::vector< std::reference_wrapper< RC_ITEM > > GetItemsWithSeverities()
Definition: drc_item.h:100
NESTED_SETTINGS(const std::string &aName, int aSchemaVersion, JSON_SETTINGS *aParent, const std::string &aPath)
#define DEFAULT_COPPER_TEXT_WIDTH
std::vector< VIA_DIMENSION > m_ViasDimensionsList
#define DEFAULT_CUSTOMTRACKWIDTH
DIM_UNITS_FORMAT m_DimensionUnitsFormat
#define DEFAULT_TEXT_SIZE
Ratio of the font height to the baseline of the text above the wire.
NETCLASSES * m_netClasses
This will point to m_internalNetClasses until it is repointed to the project after load.
#define DEFAULT_SOLDERMASK_CLEARANCE
#define DEFAULT_COPPER_TEXT_SIZE
bool m_MicroViasAllowed
true to allow micro vias
std::set< wxString > m_DrcExclusions
static constexpr int Millimeter2iu(double mm)
LSET m_enabledLayers
Bit-mask for layer enabling.
int m_boardThickness
Board thickness for 3D viewer.
bool m_TextUpright[LAYER_CLASS_COUNT]

References AUTOMATIC, BARE_SUFFIX, DEFAULT_BOARD_THICKNESS_MM, DEFAULT_COPPER_LINE_WIDTH, DEFAULT_COPPER_TEXT_SIZE, DEFAULT_COPPER_TEXT_WIDTH, DEFAULT_COPPEREDGECLEARANCE, DEFAULT_COURTYARD_WIDTH, DEFAULT_CUSTOMDPAIRGAP, DEFAULT_CUSTOMDPAIRVIAGAP, DEFAULT_CUSTOMDPAIRWIDTH, DEFAULT_CUSTOMTRACKWIDTH, DEFAULT_DIMENSION_ARROW_LENGTH, DEFAULT_DIMENSION_EXTENSION_OFFSET, DEFAULT_EDGE_WIDTH, DEFAULT_HOLECLEARANCE, DEFAULT_HOLETOHOLEMIN, DEFAULT_LINE_WIDTH, DEFAULT_MICROVIASMINDRILL, DEFAULT_MICROVIASMINSIZE, DEFAULT_MINCLEARANCE, DEFAULT_MINTHROUGHDRILL, DEFAULT_SILK_LINE_WIDTH, DEFAULT_SILK_TEXT_SIZE, DEFAULT_SILK_TEXT_WIDTH, DEFAULT_SILKCLEARANCE, DEFAULT_SOLDERMASK_CLEARANCE, DEFAULT_SOLDERMASK_MIN_WIDTH, DEFAULT_SOLDERPASTE_CLEARANCE, DEFAULT_SOLDERPASTE_RATIO, DEFAULT_TEXT_SIZE, DEFAULT_TEXT_WIDTH, DEFAULT_TRACKMINWIDTH, DEFAULT_VIASMINSIZE, DRCE_DANGLING_TRACK, DRCE_DANGLING_VIA, DRCE_DUPLICATE_FOOTPRINT, DRCE_EXTRA_FOOTPRINT, DRCE_FIRST, DRCE_LAST, DRCE_MISSING_COURTYARD, DRCE_MISSING_FOOTPRINT, DRCE_NET_CONFLICT, DRCE_NPTH_IN_COURTYARD, DRCE_PTH_IN_COURTYARD, F_Fab, F_SilkS, PAD::GetDrillSize(), DRC_ITEM::GetItemsWithSeverities(), PAD::GetSize(), INCHES, INLINE, LAYER_CLASS_COPPER, LAYER_CLASS_COURTYARD, LAYER_CLASS_EDGES, LAYER_CLASS_FAB, LAYER_CLASS_OTHERS, LAYER_CLASS_SILK, LEGACY_COPPEREDGECLEARANCE, m_BlindBuriedViaAllowed, m_boardThickness, m_CopperEdgeClearance, m_CurrentViaType, m_customDiffPair, m_customTrackWidth, m_customViaSize, m_DefaultFPTextItems, m_defaultZoneSettings, VIA_DIMENSION::m_Diameter, m_DiffPairDimensionsList, m_diffPairIndex, m_DimensionArrowLength, m_DimensionExtensionOffset, m_DimensionKeepTextAligned, m_DimensionPrecision, m_DimensionSuppressZeroes, m_DimensionTextPosition, m_DimensionUnitsFormat, m_DimensionUnitsMode, m_DrcExclusions, m_DRCSeverities, VIA_DIMENSION::m_Drill, m_enabledLayers, DIFF_PAIR_DIMENSION::m_Gap, m_HasStackup, m_HoleClearance, m_HoleToHoleMin, m_internalNetClasses, m_LineThickness, m_MaxError, m_MicroViasAllowed, m_MicroViasMinDrill, m_MicroViasMinSize, m_MinClearance, m_MinThroughDrill, m_netClasses, m_Pad_Master, JSON_SETTINGS::m_params, JSON_SETTINGS::m_resetParamsIfMissing, m_SilkClearance, m_SolderMaskMargin, m_SolderMaskMinWidth, m_SolderPasteMargin, m_SolderPasteMarginRatio, m_TextItalic, m_TextSize, m_TextThickness, m_TextUpright, m_TrackMinWidth, m_trackWidthIndex, m_TrackWidthList, m_UseConnectedTrackWidth, m_useCustomDiffPair, m_useCustomTrackVia, DIFF_PAIR_DIMENSION::m_ViaGap, m_ViasDimensionsList, m_viaSizeIndex, m_ViasMinAnnulus, m_ViasMinSize, DIFF_PAIR_DIMENSION::m_Width, ZONE_SETTINGS::m_Zone_45_Only, ZONE_SETTINGS::m_ZoneClearance, m_ZoneFillVersion, m_ZoneKeepExternalFillets, migrateSchema0to1(), Millimeter2iu(), name, NO_SUFFIX, OUTSIDE, PAREN_SUFFIX, JSON_SETTINGS::registerMigration(), RPT_SEVERITY_ERROR, RPT_SEVERITY_IGNORE, RPT_SEVERITY_WARNING, SetCopperLayerCount(), PAD::SetDrillSize(), PAD::SetSize(), SeverityFromString(), SeverityToString(), TEXTS_MAX_SIZE, TEXTS_MAX_WIDTH, TEXTS_MIN_SIZE, THROUGH, and ZONE_CLEARANCE_MIL.

◆ ~BOARD_DESIGN_SETTINGS()

BOARD_DESIGN_SETTINGS::~BOARD_DESIGN_SETTINGS ( )
virtual

Definition at line 612 of file board_design_settings.cpp.

613 {
614  if( m_parent )
615  {
617  m_parent = nullptr;
618  }
619 }
JSON_SETTINGS * m_parent
A pointer to the parent object to load and store from.
void ReleaseNestedSettings(NESTED_SETTINGS *aSettings)
Saves and frees a nested settings object, if it exists within this one.

References NESTED_SETTINGS::m_parent, and JSON_SETTINGS::ReleaseNestedSettings().

◆ BOARD_DESIGN_SETTINGS() [2/2]

BOARD_DESIGN_SETTINGS::BOARD_DESIGN_SETTINGS ( const BOARD_DESIGN_SETTINGS aOther)

Definition at line 622 of file board_design_settings.cpp.

622  :
623  NESTED_SETTINGS( "board_design_settings", bdsSchemaVersion, aOther.m_parent,
624  aOther.m_path ),
625  m_Pad_Master( nullptr )
626 {
627  initFromOther( aOther );
628 }
JSON_SETTINGS * m_parent
A pointer to the parent object to load and store from.
const int bdsSchemaVersion
NESTED_SETTINGS(const std::string &aName, int aSchemaVersion, JSON_SETTINGS *aParent, const std::string &aPath)
void initFromOther(const BOARD_DESIGN_SETTINGS &aOther)
std::string m_path
The path (in pointer format) of where to store this document in the parent.

References initFromOther().

Member Function Documentation

◆ AddNestedSettings()

void JSON_SETTINGS::AddNestedSettings ( NESTED_SETTINGS aSettings)
inherited

Transfers ownership of a given NESTED_SETTINGS to this object.

Can be used to construct a NESTED_SETTINGS without the parent object needing to know about the implementation of the nested object;

Parameters
aSettingsis the settings object to take ownership of
aTargetis a pointer to update to the passed in settings

Definition at line 659 of file json_settings.cpp.

660 {
661  wxLogTrace( traceSettings, "AddNestedSettings %s", aSettings->GetFilename() );
662  m_nested_settings.push_back( aSettings );
663 }
wxString GetFilename() const
Definition: json_settings.h:64
std::vector< NESTED_SETTINGS * > m_nested_settings
Nested settings files that live inside this one, if any.
const wxChar *const traceSettings
Flag to enable debug output of settings operations and management.

References JSON_SETTINGS::GetFilename(), JSON_SETTINGS::m_nested_settings, and traceSettings.

Referenced by NESTED_SETTINGS::SetParent().

◆ fromLegacy()

template<typename ValueType >
template bool JSON_SETTINGS::fromLegacy< bool > ( wxConfigBase *  aConfig,
const std::string &  aKey,
const std::string &  aDest 
)
protectedinherited

Translates a legacy wxConfig value to a given JSON pointer value.

Template Parameters
ValueTypeis the basic type of the value
Parameters
aConfigis the legacy config to read from
aKeyis the key (within the current path) to read
aDestis a string that will form a JSON pointer (key1.key2.key3) to write to

Definition at line 571 of file json_settings.cpp.

573 {
574  ValueType val;
575 
576  if( aConfig->Read( aKey, &val ) )
577  {
578  try
579  {
580  ( *this )[PointerFromString( aDest )] = val;
581  }
582  catch( ... )
583  {
584  wxASSERT_MSG( false, wxT( "Could not write value in fromLegacy!" ) );
585  return false;
586  }
587 
588  return true;
589  }
590 
591  return false;
592 }
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References JSON_SETTINGS::PointerFromString().

◆ fromLegacyColor()

bool JSON_SETTINGS::fromLegacyColor ( wxConfigBase *  aConfig,
const std::string &  aKey,
const std::string &  aDest 
)
protectedinherited

Translates a legacy COLOR4D stored in a wxConfig string to a given JSON pointer value.

Parameters
aConfigis the legacy config to read from
aKeyis the key (within the current path) to read
aDestis a string that will form a JSON pointer (key1.key2.key3) to write to

Definition at line 631 of file json_settings.cpp.

633 {
634  wxString str;
635 
636  if( aConfig->Read( aKey, &str ) )
637  {
639  color.SetFromWxString( str );
640 
641  try
642  {
643  nlohmann::json js = nlohmann::json::array( { color.r, color.g, color.b, color.a } );
644  ( *this )[PointerFromString( aDest )] = js;
645  }
646  catch( ... )
647  {
648  wxASSERT_MSG( false, wxT( "Could not write value in fromLegacyColor!" ) );
649  return false;
650  }
651 
652  return true;
653  }
654 
655  return false;
656 }
int color
Definition: DXF_plotter.cpp:60
nlohmann::json json
Definition: gerbview.cpp:40
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.
A color representation with 4 components: red, green, blue, alpha.
Definition: color4d.h:98

References color, and JSON_SETTINGS::PointerFromString().

Referenced by APP_SETTINGS_BASE::migrateWindowConfig().

◆ fromLegacyString()

bool JSON_SETTINGS::fromLegacyString ( wxConfigBase *  aConfig,
const std::string &  aKey,
const std::string &  aDest 
)
protectedinherited

Translates a legacy wxConfig string value to a given JSON pointer value.

Parameters
aConfigis the legacy config to read from
aKeyis the key (within the current path) to read
aDestis a string that will form a JSON pointer (key1.key2.key3) to write to

Definition at line 607 of file json_settings.cpp.

609 {
610  wxString str;
611 
612  if( aConfig->Read( aKey, &str ) )
613  {
614  try
615  {
616  ( *this )[PointerFromString( aDest )] = str.ToUTF8();
617  }
618  catch( ... )
619  {
620  wxASSERT_MSG( false, wxT( "Could not write value in fromLegacyString!" ) );
621  return false;
622  }
623 
624  return true;
625  }
626 
627  return false;
628 }
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References JSON_SETTINGS::PointerFromString().

Referenced by BITMAP2CMP_SETTINGS::MigrateFromLegacy(), FOOTPRINT_EDITOR_SETTINGS::MigrateFromLegacy(), GERBVIEW_SETTINGS::MigrateFromLegacy(), SYMBOL_EDITOR_SETTINGS::MigrateFromLegacy(), PROJECT_FILE::MigrateFromLegacy(), COMMON_SETTINGS::MigrateFromLegacy(), PCB_CALCULATOR_SETTINGS::MigrateFromLegacy(), APP_SETTINGS_BASE::MigrateFromLegacy(), EESCHEMA_SETTINGS::MigrateFromLegacy(), PCBNEW_SETTINGS::MigrateFromLegacy(), and APP_SETTINGS_BASE::migrateWindowConfig().

◆ Get() [1/2]

template<typename ValueType >
OPT<ValueType> JSON_SETTINGS::Get ( const std::string &  aPath) const
inlineinherited

Fetches a value from within the JSON document.

Will return an empty optional if the value is not found or a mismatching type.

Template Parameters
ValueTypeis the type to cast to
Parameters
aPathis the path within the document to retrieve
Returns
a value from within this document

Definition at line 124 of file json_settings.h.

125  {
126  if( OPT<nlohmann::json> ret = GetJson( aPath ) )
127  {
128  try
129  {
130  return ret->get<ValueType>();
131  }
132  catch( ... )
133  {
134  }
135  }
136 
137  return NULLOPT;
138  }
OPT< nlohmann::json > GetJson(const std::string &aPath) const
Fetches a JSON object that is a subset of this JSON_SETTINGS object, using a path of the form "key1....
const auto NULLOPT
Definition: optional.h:9
boost::optional< T > OPT
Definition: optional.h:7

References JSON_SETTINGS::GetJson(), and NULLOPT.

Referenced by PARAM< wxString >::Load(), COLOR_MAP_PARAM::Load(), PARAM_ENUM< EnumType >::Load(), PARAM_LAMBDA< nlohmann::json >::Load(), PARAM_SCALED< ValueType >::Load(), LoadFromFile(), PARAM< wxString >::MatchesFile(), COLOR_MAP_PARAM::MatchesFile(), PARAM_PATH::MatchesFile(), PARAM_ENUM< EnumType >::MatchesFile(), PARAM_LAMBDA< nlohmann::json >::MatchesFile(), and PARAM_SCALED< ValueType >::MatchesFile().

◆ Get() [2/2]

OPT< wxString > JSON_SETTINGS::Get ( const std::string &  aPath) const
inherited

Definition at line 689 of file json_settings.cpp.

690 {
691  if( OPT<nlohmann::json> opt_json = GetJson( aPath ) )
692  return wxString( opt_json->get<std::string>().c_str(), wxConvUTF8 );
693 
694  return NULLOPT;
695 }
OPT< nlohmann::json > GetJson(const std::string &aPath) const
Fetches a JSON object that is a subset of this JSON_SETTINGS object, using a path of the form "key1....
const auto NULLOPT
Definition: optional.h:9
boost::optional< T > OPT
Definition: optional.h:7

References JSON_SETTINGS::GetJson(), and NULLOPT.

◆ GetBiggestClearanceValue()

int BOARD_DESIGN_SETTINGS::GetBiggestClearanceValue ( )
Returns
the biggest clearance value found in NetClasses list.

Definition at line 851 of file board_design_settings.cpp.

852 {
853  int biggest = 0;
854  DRC_CONSTRAINT constraint;
855 
856  if( m_DRCEngine )
857  {
858  m_DRCEngine->QueryWorstConstraint( CLEARANCE_CONSTRAINT, constraint );
859  biggest = std::max( biggest, constraint.Value().Min() );
860 
861  m_DRCEngine->QueryWorstConstraint( HOLE_CLEARANCE_CONSTRAINT, constraint );
862  biggest = std::max( biggest, constraint.Value().Min() );
863 
864  m_DRCEngine->QueryWorstConstraint( EDGE_CLEARANCE_CONSTRAINT, constraint );
865  biggest = std::max( biggest, constraint.Value().Min() );
866  }
867 
868  return biggest;
869 }
MINOPTMAX< int > & Value()
Definition: drc_rule.h:122
T Min() const
Definition: minoptmax.h:33
std::shared_ptr< DRC_ENGINE > m_DRCEngine

References CLEARANCE_CONSTRAINT, EDGE_CLEARANCE_CONSTRAINT, HOLE_CLEARANCE_CONSTRAINT, m_DRCEngine, MINOPTMAX< T >::Min(), and DRC_CONSTRAINT::Value().

Referenced by ZONE_FILLER::buildThermalSpokes(), ZONE_FILLER::Fill(), PNS_KICAD_IFACE_BASE::SyncWorld(), TRACK::ViewBBox(), and FOOTPRINT::ViewBBox().

◆ GetBoardThickness()

◆ GetCopperLayerCount()

int BOARD_DESIGN_SETTINGS::GetCopperLayerCount ( ) const
inline
Returns
the number of enabled copper layers.

Definition at line 635 of file board_design_settings.h.

636  {
637  return m_copperLayerCount;
638  }
int m_copperLayerCount
Number of copper layers for this design.

References m_copperLayerCount.

Referenced by BOARD_STACKUP::BuildDefaultStackupList(), PANEL_SETUP_BOARD_STACKUP::buildLayerStackPanel(), DIALOG_NET_INSPECTOR::calculateViaLength(), BOARD::GetCopperLayerCount(), and ROUTER_TOOL::handleLayerSwitch().

◆ GetCurrentDiffPairGap()

int BOARD_DESIGN_SETTINGS::GetCurrentDiffPairGap ( ) const
inline
Returns
the current diff pair gap, according to the selected options ( using the default netclass value or a preset/custom value ) the default netclass is always in m_DiffPairDimensionsList[0].

Definition at line 559 of file board_design_settings.h.

560  {
561  if( m_useCustomDiffPair )
562  return m_customDiffPair.m_Gap;
563  else
565  }
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
DIFF_PAIR_DIMENSION m_customDiffPair

References m_diffPairIndex.

◆ GetCurrentDiffPairViaGap()

int BOARD_DESIGN_SETTINGS::GetCurrentDiffPairViaGap ( ) const
inline
Returns
the current diff pair via gap, according to the selected options ( using the default netclass value or a preset/custom value ) the default netclass is always in m_DiffPairDimensionsList[0].

Definition at line 572 of file board_design_settings.h.

573  {
574  if( m_useCustomDiffPair )
575  return m_customDiffPair.m_ViaGap;
576  else
577  return m_DiffPairDimensionsList[m_diffPairIndex].m_ViaGap;
578  }
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
DIFF_PAIR_DIMENSION m_customDiffPair

References m_diffPairIndex.

◆ GetCurrentDiffPairWidth()

int BOARD_DESIGN_SETTINGS::GetCurrentDiffPairWidth ( ) const
inline
Returns
the current diff pair track width, according to the selected options ( using the default netclass value or a preset/custom value ) the default netclass is always in m_DiffPairDimensionsList[0].

Definition at line 546 of file board_design_settings.h.

547  {
548  if( m_useCustomDiffPair )
549  return m_customDiffPair.m_Width;
550  else
552  }
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
DIFF_PAIR_DIMENSION m_customDiffPair

References m_diffPairIndex.

◆ GetCurrentMicroViaDrill()

int BOARD_DESIGN_SETTINGS::GetCurrentMicroViaDrill ( )
Returns
the current micro via drill that is the current netclass value.

Definition at line 891 of file board_design_settings.cpp.

892 {
893  NETCLASSPTR netclass = GetNetClasses().Find( m_currentNetClassName );
894 
895  return netclass->GetuViaDrill();
896 }
wxString m_currentNetClassName
Current net class name used to display netclass info.
NETCLASSPTR Find(const wxString &aName) const
Search this container for a NETCLASS given by aName.
Definition: netclass.cpp:132
NETCLASSES & GetNetClasses() const

References NETCLASSES::Find(), GetNetClasses(), and m_currentNetClassName.

◆ GetCurrentMicroViaSize()

int BOARD_DESIGN_SETTINGS::GetCurrentMicroViaSize ( )
Returns
the current micro via size that is the current netclass value.

Definition at line 883 of file board_design_settings.cpp.

884 {
885  NETCLASSPTR netclass = GetNetClasses().Find( m_currentNetClassName );
886 
887  return netclass->GetuViaDiameter();
888 }
wxString m_currentNetClassName
Current net class name used to display netclass info.
NETCLASSPTR Find(const wxString &aName) const
Search this container for a NETCLASS given by aName.
Definition: netclass.cpp:132
NETCLASSES & GetNetClasses() const

References NETCLASSES::Find(), GetNetClasses(), and m_currentNetClassName.

◆ GetCurrentNetClassName()

const wxString& BOARD_DESIGN_SETTINGS::GetCurrentNetClassName ( ) const
inline
Returns
the current net class name.

Definition at line 275 of file board_design_settings.h.

276  {
277  return m_currentNetClassName;
278  }
wxString m_currentNetClassName
Current net class name used to display netclass info.

References m_currentNetClassName.

Referenced by DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::buildFilterLists().

◆ GetCurrentTrackWidth()

int BOARD_DESIGN_SETTINGS::GetCurrentTrackWidth ( ) const
Returns
the current track width according to the selected options ( using the default netclass value or a preset/custom value ) the default netclass is always in m_TrackWidthList[0]

Definition at line 939 of file board_design_settings.cpp.

940 {
941  if( m_useCustomTrackVia )
942  return m_customTrackWidth;
943  else if( m_trackWidthIndex == 0 )
945  else
947 }
std::vector< int > m_TrackWidthList
int GetTrackWidth() const
Definition: netclass.h:128
NETCLASSES & GetNetClasses() const
NETCLASS * GetDefaultPtr() const
Definition: netclass.h:258

References NETCLASSES::GetDefaultPtr(), GetNetClasses(), NETCLASS::GetTrackWidth(), m_customTrackWidth, m_trackWidthIndex, m_TrackWidthList, and m_useCustomTrackVia.

Referenced by EDIT_TOOL::ChangeTrackWidth(), MICROWAVE_TOOL::createBaseFootprint(), MICROWAVE_TOOL::createFootprint(), MICROWAVE_TOOL::createInductorBetween(), PNS_KICAD_IFACE_BASE::ImportSizes(), and PCB_EDIT_FRAME::SetTrackSegmentWidth().

◆ GetCurrentViaDrill()

int BOARD_DESIGN_SETTINGS::GetCurrentViaDrill ( ) const
Returns
the current via size, according to the selected options ( using the default netclass value or a preset/custom value ) the default netclass is always in m_TrackWidthList[0].

Definition at line 917 of file board_design_settings.cpp.

918 {
919  int drill;
920 
921  if( m_useCustomTrackVia )
922  drill = m_customViaSize.m_Drill;
923  else if( m_viaSizeIndex == 0 )
924  drill = GetNetClasses().GetDefaultPtr()->GetViaDrill();
925  else
926  drill = m_ViasDimensionsList[ m_viaSizeIndex ].m_Drill;
927 
928  return drill > 0 ? drill : -1;
929 }
int GetViaDrill() const
Definition: netclass.h:136
NETCLASSES & GetNetClasses() const
NETCLASS * GetDefaultPtr() const
Definition: netclass.h:258
std::vector< VIA_DIMENSION > m_ViasDimensionsList

References NETCLASSES::GetDefaultPtr(), GetNetClasses(), NETCLASS::GetViaDrill(), m_customViaSize, VIA_DIMENSION::m_Drill, m_useCustomTrackVia, m_ViasDimensionsList, and m_viaSizeIndex.

Referenced by EDIT_TOOL::ChangeTrackWidth(), ROUTER_TOOL::handleLayerSwitch(), PNS_KICAD_IFACE_BASE::ImportSizes(), and PCB_EDIT_FRAME::SetTrackSegmentWidth().

◆ GetCurrentViaSize()

int BOARD_DESIGN_SETTINGS::GetCurrentViaSize ( ) const
Returns
the current via size, according to the selected options ( using the default netclass value or a preset/custom value ) the default netclass is always in m_TrackWidthList[0]

Definition at line 906 of file board_design_settings.cpp.

907 {
908  if( m_useCustomTrackVia )
910  else if( m_viaSizeIndex == 0 )
912  else
913  return m_ViasDimensionsList[ m_viaSizeIndex ].m_Diameter;
914 }
NETCLASSES & GetNetClasses() const
NETCLASS * GetDefaultPtr() const
Definition: netclass.h:258
int GetViaDiameter() const
Definition: netclass.h:132
std::vector< VIA_DIMENSION > m_ViasDimensionsList

References NETCLASSES::GetDefaultPtr(), GetNetClasses(), NETCLASS::GetViaDiameter(), m_customViaSize, VIA_DIMENSION::m_Diameter, m_useCustomTrackVia, m_ViasDimensionsList, and m_viaSizeIndex.

Referenced by EDIT_TOOL::ChangeTrackWidth(), ROUTER_TOOL::handleLayerSwitch(), PNS_KICAD_IFACE_BASE::ImportSizes(), and PCB_EDIT_FRAME::SetTrackSegmentWidth().

◆ GetCustomDiffPairGap()

int BOARD_DESIGN_SETTINGS::GetCustomDiffPairGap ( )
inline

Function GetCustomDiffPairGap.

Returns
Current custom gap width for differential pairs.

Definition at line 499 of file board_design_settings.h.

500  {
501  return m_customDiffPair.m_Gap;
502  }
DIFF_PAIR_DIMENSION m_customDiffPair

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ GetCustomDiffPairViaGap()

int BOARD_DESIGN_SETTINGS::GetCustomDiffPairViaGap ( )
inline
Returns
Current custom via gap width for differential pairs.

Definition at line 518 of file board_design_settings.h.

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ GetCustomDiffPairWidth()

int BOARD_DESIGN_SETTINGS::GetCustomDiffPairWidth ( )
inline
Returns
Current custom track width for differential pairs.

Definition at line 480 of file board_design_settings.h.

481  {
482  return m_customDiffPair.m_Width;
483  }
DIFF_PAIR_DIMENSION m_customDiffPair

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ GetCustomTrackWidth()

int BOARD_DESIGN_SETTINGS::GetCustomTrackWidth ( ) const
inline
Returns
Current custom width for a track.

Definition at line 359 of file board_design_settings.h.

360  {
361  return m_customTrackWidth;
362  }

References m_customTrackWidth.

Referenced by DIALOG_TRACK_VIA_SIZE::TransferDataToWindow().

◆ GetCustomViaDrill()

int BOARD_DESIGN_SETTINGS::GetCustomViaDrill ( ) const
inline
Returns
Current custom size for the via drill.

Definition at line 430 of file board_design_settings.h.

431  {
432  return m_customViaSize.m_Drill;
433  }

Referenced by DIALOG_TRACK_VIA_SIZE::TransferDataToWindow().

◆ GetCustomViaSize()

int BOARD_DESIGN_SETTINGS::GetCustomViaSize ( ) const
inline
Returns
Current custom size for the via diameter.

Definition at line 402 of file board_design_settings.h.

403  {
405  }

Referenced by DIALOG_TRACK_VIA_SIZE::TransferDataToWindow().

◆ GetDefault()

◆ GetDefaultZoneSettings()

ZONE_SETTINGS& BOARD_DESIGN_SETTINGS::GetDefaultZoneSettings ( )
inline

Definition at line 254 of file board_design_settings.h.

255  {
256  return m_defaultZoneSettings;
257  }
ZONE_SETTINGS m_defaultZoneSettings
The default settings that will be used for new zones.

References m_defaultZoneSettings.

Referenced by PCB_BASE_FRAME::GetZoneSettings(), BOARD::GetZoneSettings(), and PCB_PARSER::parseSetup().

◆ GetDiffPairIndex()

unsigned BOARD_DESIGN_SETTINGS::GetDiffPairIndex ( ) const
inline
Returns
the current diff pair dimension list index.

Definition at line 459 of file board_design_settings.h.

459 { return m_diffPairIndex; }

References m_diffPairIndex.

Referenced by BOARD_EDITOR_CONTROL::TrackWidthDec(), BOARD_EDITOR_CONTROL::TrackWidthInc(), and DIFF_PAIR_MENU::update().

◆ GetDRCEpsilon()

int BOARD_DESIGN_SETTINGS::GetDRCEpsilon ( ) const

Definition at line 1018 of file board_design_settings.cpp.

1019 {
1020  return Millimeter2iu( ADVANCED_CFG::GetCfg().m_DRCEpsilon );
1021 }
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
static constexpr int Millimeter2iu(double mm)

References ADVANCED_CFG::GetCfg(), and Millimeter2iu().

Referenced by DRC_TEST_PROVIDER_COPPER_CLEARANCE::Run().

◆ GetEnabledLayers()

LSET BOARD_DESIGN_SETTINGS::GetEnabledLayers ( ) const
inline

Return a bit-mask of all the layers that are enabled.

Returns
the enabled layers in bit-mapped form.

Definition at line 606 of file board_design_settings.h.

607  {
608  return m_enabledLayers;
609  }
LSET m_enabledLayers
Bit-mask for layer enabling.

References m_enabledLayers.

Referenced by BOARD_STACKUP::BuildDefaultStackupList(), CreatePadsShapesSection(), CreateRoutesSection(), BOARD::GetEnabledLayers(), and HYPERLYNX_EXPORTER::writeStackupInfo().

◆ getFileExt()

virtual wxString JSON_SETTINGS::getFileExt ( ) const
inlineprotectedvirtualinherited

Reimplemented in PROJECT_FILE, and PROJECT_LOCAL_SETTINGS.

Definition at line 274 of file json_settings.h.

275  {
276  return wxT( "json" );
277  }

Referenced by JSON_SETTINGS::GetFullFilename(), JSON_SETTINGS::LoadFromFile(), and JSON_SETTINGS::SaveToFile().

◆ GetFilename()

◆ GetFullFilename()

wxString JSON_SETTINGS::GetFullFilename ( ) const
inherited

Definition at line 81 of file json_settings.cpp.

82 {
83  return wxString( m_filename + "." + getFileExt() );
84 }
wxString m_filename
The filename (not including path) of this settings file (inicode)
virtual wxString getFileExt() const

References JSON_SETTINGS::getFileExt(), and JSON_SETTINGS::m_filename.

Referenced by JSON_SETTINGS::JSON_SETTINGS(), NESTED_SETTINGS::LoadFromFile(), JSON_SETTINGS::LoadFromFile(), and JSON_SETTINGS::SaveToFile().

◆ GetHolePlatingThickness()

int BOARD_DESIGN_SETTINGS::GetHolePlatingThickness ( ) const

Pad & via drills are finish size.

Adding the hole plating thickness gives you the actual hole size.

Definition at line 1024 of file board_design_settings.cpp.

1025 {
1026  return Millimeter2iu( ADVANCED_CFG::GetCfg().m_HoleWallThickness );
1027 }
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
static constexpr int Millimeter2iu(double mm)

References ADVANCED_CFG::GetCfg(), and Millimeter2iu().

Referenced by ZONE_FILLER::buildCopperItemClearances(), KIGFX::PCB_PAINTER::draw(), BOARD_ADAPTER::GetHolePlatingThickness(), getShape(), PNS_KICAD_IFACE_BASE::syncPad(), PNS_KICAD_IFACE_BASE::syncVia(), and DRC_TEST_PROVIDER_COPPER_CLEARANCE::testItemAgainstZones().

◆ GetJson()

OPT< nlohmann::json > JSON_SETTINGS::GetJson ( const std::string &  aPath) const
inherited

Fetches a JSON object that is a subset of this JSON_SETTINGS object, using a path of the form "key1.key2.key3" to refer to nested objects.

Parameters
aPathis a string containing one or more keys separated by '.'
Returns
a JSON object from within this one

Definition at line 420 of file json_settings.cpp.

421 {
422  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
423 
424  if( this->contains( ptr ) )
425  {
426  try
427  {
428  return OPT<nlohmann::json>{ this->at( ptr ) };
429  }
430  catch( ... )
431  {
432  }
433  }
434 
435  return OPT<nlohmann::json>{};
436 }
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:81
boost::optional< T > OPT
Definition: optional.h:7
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References alg::contains(), and JSON_SETTINGS::PointerFromString().

Referenced by JSON_SETTINGS::Get(), PARAM_LAMBDA< nlohmann::json >::Load(), PARAM_LIST< wxString >::Load(), PARAM_MAP< Value >::Load(), PARAM_WXSTRING_MAP::Load(), PARAM_LAMBDA< nlohmann::json >::MatchesFile(), PARAM_LIST< wxString >::MatchesFile(), PARAM_PATH_LIST::MatchesFile(), PARAM_MAP< Value >::MatchesFile(), and PARAM_WXSTRING_MAP::MatchesFile().

◆ GetLayerClass()

int BOARD_DESIGN_SETTINGS::GetLayerClass ( PCB_LAYER_ID  aLayer) const

Definition at line 1001 of file board_design_settings.cpp.

1002 {
1003  if( aLayer == F_SilkS || aLayer == B_SilkS )
1004  return LAYER_CLASS_SILK;
1005  else if( IsCopperLayer( aLayer ) )
1006  return LAYER_CLASS_COPPER;
1007  else if( aLayer == Edge_Cuts )
1008  return LAYER_CLASS_EDGES;
1009  else if( aLayer == F_CrtYd || aLayer == B_CrtYd )
1010  return LAYER_CLASS_COURTYARD;
1011  else if( aLayer == F_Fab || aLayer == B_Fab )
1012  return LAYER_CLASS_FAB;
1013  else
1014  return LAYER_CLASS_OTHERS;
1015 }
bool IsCopperLayer(LAYER_NUM aLayerId)
Tests whether a layer is a copper layer.

References B_CrtYd, B_Fab, B_SilkS, Edge_Cuts, F_CrtYd, F_Fab, F_SilkS, IsCopperLayer(), LAYER_CLASS_COPPER, LAYER_CLASS_COURTYARD, LAYER_CLASS_EDGES, LAYER_CLASS_FAB, LAYER_CLASS_OTHERS, and LAYER_CLASS_SILK.

Referenced by GetLineThickness(), GetTextItalic(), GetTextSize(), GetTextThickness(), and GetTextUpright().

◆ getLegacyFileExt()

virtual wxString JSON_SETTINGS::getLegacyFileExt ( ) const
inlineprotectedvirtualinherited

Reimplemented in PROJECT_FILE, and PROJECT_LOCAL_SETTINGS.

Definition at line 279 of file json_settings.h.

280  {
281  return wxEmptyString;
282  }

Referenced by JSON_SETTINGS::LoadFromFile().

◆ GetLineThickness()

int BOARD_DESIGN_SETTINGS::GetLineThickness ( PCB_LAYER_ID  aLayer) const

◆ GetLocation()

SETTINGS_LOC JSON_SETTINGS::GetLocation ( ) const
inlineinherited

Definition at line 70 of file json_settings.h.

70 { return m_location; }
SETTINGS_LOC m_location
The location of this settings file (.

References JSON_SETTINGS::m_location.

Referenced by SETTINGS_MANAGER::GetPathForSettingsFile().

◆ GetNetClasses()

◆ GetParent()

JSON_SETTINGS* NESTED_SETTINGS::GetParent ( void  )
inlineinherited

Definition at line 54 of file nested_settings.h.

55  {
56  return m_parent;
57  }
JSON_SETTINGS * m_parent
A pointer to the parent object to load and store from.

References NESTED_SETTINGS::m_parent.

Referenced by LoadFromFile().

◆ GetSeverity()

◆ GetSmallestClearanceValue()

int BOARD_DESIGN_SETTINGS::GetSmallestClearanceValue ( )
Returns
the smallest clearance value found in NetClasses list.

Definition at line 872 of file board_design_settings.cpp.

873 {
874  int clearance = GetDefault()->GetClearance();
875 
876  for( const std::pair<const wxString, NETCLASSPTR>& netclass : GetNetClasses().NetClasses() )
877  clearance = std::min( clearance, netclass.second->GetClearance() );
878 
879  return clearance;
880 }
NETCLASSES & GetNetClasses() const
int GetClearance() const
Definition: netclass.h:124
NETCLASS * GetDefault() const

References NETCLASS::GetClearance(), GetDefault(), and GetNetClasses().

Referenced by DIALOG_PLOT::init_Dialog().

◆ GetStackupDescriptor() [1/2]

◆ GetStackupDescriptor() [2/2]

const BOARD_STACKUP& BOARD_DESIGN_SETTINGS::GetStackupDescriptor ( ) const
inline

Definition at line 232 of file board_design_settings.h.

232 { return m_stackup; }
BOARD_STACKUP m_stackup
the description of layers stackup, for board fabrication only physical layers are in layers stackup.

References m_stackup.

◆ GetTextItalic()

bool BOARD_DESIGN_SETTINGS::GetTextItalic ( PCB_LAYER_ID  aLayer) const

◆ GetTextSize()

wxSize BOARD_DESIGN_SETTINGS::GetTextSize ( PCB_LAYER_ID  aLayer) const

Return the default text size from the layer class for the given layer.

Definition at line 1036 of file board_design_settings.cpp.

1037 {
1038  return m_TextSize[ GetLayerClass( aLayer ) ];
1039 }
int GetLayerClass(PCB_LAYER_ID aLayer) const
wxSize m_TextSize[LAYER_CLASS_COUNT]

References GetLayerClass(), and m_TextSize.

Referenced by PCB_BASE_FRAME::CreateNewFootprint(), EAGLE_PLUGIN::loadPlain(), DIALOG_FOOTPRINT_FP_EDITOR::OnAddField(), DIALOG_FOOTPRINT_PROPERTIES::OnAddField(), DRAWING_TOOL::PlaceText(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem().

◆ GetTextThickness()

int BOARD_DESIGN_SETTINGS::GetTextThickness ( PCB_LAYER_ID  aLayer) const

Return the default text thickness from the layer class for the given layer.

Definition at line 1042 of file board_design_settings.cpp.

1043 {
1044  return m_TextThickness[ GetLayerClass( aLayer ) ];
1045 }
int GetLayerClass(PCB_LAYER_ID aLayer) const
int m_TextThickness[LAYER_CLASS_COUNT]

References GetLayerClass(), and m_TextThickness.

Referenced by PCB_BASE_FRAME::CreateNewFootprint(), EAGLE_PLUGIN::loadPlain(), DIALOG_FOOTPRINT_FP_EDITOR::OnAddField(), DIALOG_FOOTPRINT_PROPERTIES::OnAddField(), DRAWING_TOOL::PlaceText(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem().

◆ GetTextUpright()

bool BOARD_DESIGN_SETTINGS::GetTextUpright ( PCB_LAYER_ID  aLayer) const

◆ GetTrackWidthIndex()

unsigned BOARD_DESIGN_SETTINGS::GetTrackWidthIndex ( ) const
inline

◆ GetViaSizeIndex()

unsigned BOARD_DESIGN_SETTINGS::GetViaSizeIndex ( ) const
inline

◆ Ignore()

bool BOARD_DESIGN_SETTINGS::Ignore ( int  aDRCErrorCode)

Return true if the DRC error code's severity is SEVERITY_IGNORE.

Definition at line 845 of file board_design_settings.cpp.

846 {
847  return m_DRCSeverities[ aDRCErrorCode ] == RPT_SEVERITY_IGNORE;
848 }
std::map< int, SEVERITY > m_DRCSeverities

References m_DRCSeverities, and RPT_SEVERITY_IGNORE.

Referenced by DRC_ENGINE::RunTests().

◆ initFromOther()

void BOARD_DESIGN_SETTINGS::initFromOther ( const BOARD_DESIGN_SETTINGS aOther)
private

Definition at line 638 of file board_design_settings.cpp.

639 {
640  // Copy of NESTED_SETTINGS around is not allowed, so let's just update the params.
651  m_ViasMinSize = aOther.m_ViasMinSize;
663  m_MaxError = aOther.m_MaxError;
669 
670  std::copy( std::begin( aOther.m_LineThickness ), std::end( aOther.m_LineThickness ),
671  std::begin( m_LineThickness ) );
672 
673  std::copy( std::begin( aOther.m_TextSize ), std::end( aOther.m_TextSize ),
674  std::begin( m_TextSize ) );
675 
676  std::copy( std::begin( aOther.m_TextThickness ), std::end( aOther.m_TextThickness ),
677  std::begin( m_TextThickness ) );
678 
679  std::copy( std::begin( aOther.m_TextItalic ), std::end( aOther.m_TextItalic ),
680  std::begin( m_TextItalic ) );
681 
682  std::copy( std::begin( aOther.m_TextUpright ), std::end( aOther.m_TextUpright ),
683  std::begin( m_TextUpright ) );
684 
693 
694  m_AuxOrigin = aOther.m_AuxOrigin;
695  m_GridOrigin = aOther.m_GridOrigin;
696  m_HasStackup = aOther.m_HasStackup;
697 
710  m_stackup = aOther.m_stackup;
711 
712  // Only take the pointer from the other if it isn't the default
713  if( aOther.m_netClasses == &aOther.m_internalNetClasses )
715  else
716  m_netClasses = aOther.m_netClasses;
717 
719 }
int m_ZoneFillVersion
Option to select different fill algorithms.
wxString m_currentNetClassName
Current net class name used to display netclass info.
std::vector< TEXT_ITEM_INFO > m_DefaultFPTextItems
wxPoint m_GridOrigin
origin for grid offsets
std::vector< int > m_TrackWidthList
BOARD_STACKUP m_stackup
the description of layers stackup, for board fabrication only physical layers are in layers stackup.
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
NETCLASSES m_internalNetClasses
Net classes that are loaded from the board file before these were stored in the project.
int m_DimensionPrecision
Number of digits after the decimal.
ZONE_SETTINGS m_defaultZoneSettings
The default settings that will be used for new zones.
DIFF_PAIR_DIMENSION m_customDiffPair
VIATYPE m_CurrentViaType
(VIA_BLIND_BURIED, VIA_THROUGH, VIA_MICROVIA)
DIM_TEXT_POSITION m_DimensionTextPosition
DIM_UNITS_MODE m_DimensionUnitsMode
wxSize m_TextSize[LAYER_CLASS_COUNT]
int m_TextThickness[LAYER_CLASS_COUNT]
bool m_TextItalic[LAYER_CLASS_COUNT]
bool m_BlindBuriedViaAllowed
true to allow blind/buried vias
int m_LineThickness[LAYER_CLASS_COUNT]
std::map< int, SEVERITY > m_DRCSeverities
std::vector< VIA_DIMENSION > m_ViasDimensionsList
DIM_UNITS_FORMAT m_DimensionUnitsFormat
NETCLASSES * m_netClasses
This will point to m_internalNetClasses until it is repointed to the project after load.
int m_copperLayerCount
Number of copper layers for this design.
bool m_MicroViasAllowed
true to allow micro vias
std::set< wxString > m_DrcExclusions
LSET m_enabledLayers
Bit-mask for layer enabling.
wxPoint m_AuxOrigin
origin for plot exports
int m_boardThickness
Board thickness for 3D viewer.
bool m_TextUpright[LAYER_CLASS_COUNT]

References m_AuxOrigin, m_BlindBuriedViaAllowed, m_boardThickness, m_CopperEdgeClearance, m_copperLayerCount, m_currentNetClassName, m_CurrentViaType, m_customDiffPair, m_customTrackWidth, m_customViaSize, m_DefaultFPTextItems, m_defaultZoneSettings, m_DiffPairDimensionsList, m_diffPairIndex, m_DimensionArrowLength, m_DimensionExtensionOffset, m_DimensionKeepTextAligned, m_DimensionPrecision, m_DimensionSuppressZeroes, m_DimensionTextPosition, m_DimensionUnitsFormat, m_DimensionUnitsMode, m_DrcExclusions, m_DRCSeverities, m_enabledLayers, m_GridOrigin, m_HasStackup, m_HoleClearance, m_HoleToHoleMin, m_internalNetClasses, m_LineThickness, m_MaxError, m_MicroViasAllowed, m_MicroViasMinDrill, m_MicroViasMinSize, m_MinClearance, m_MinThroughDrill, m_netClasses, m_SilkClearance, m_SolderMaskMargin, m_SolderMaskMinWidth, m_SolderPasteMargin, m_SolderPasteMarginRatio, m_stackup, m_TextItalic, m_TextSize, m_TextThickness, m_TextUpright, m_TrackMinWidth, m_trackWidthIndex, m_TrackWidthList, m_UseConnectedTrackWidth, m_useCustomDiffPair, m_useCustomTrackVia, m_ViasDimensionsList, m_viaSizeIndex, m_ViasMinAnnulus, m_ViasMinSize, m_ZoneFillVersion, and m_ZoneKeepExternalFillets.

Referenced by BOARD_DESIGN_SETTINGS(), and operator=().

◆ IsLayerEnabled()

bool BOARD_DESIGN_SETTINGS::IsLayerEnabled ( PCB_LAYER_ID  aLayerId) const
inline

Test whether a given layer aLayerId is enabled.

Parameters
aLayerIdThe layer to be tested.
Returns
true if the layer is enabled.

Definition at line 624 of file board_design_settings.h.

625  {
626  if( aLayerId >= 0 && aLayerId < PCB_LAYER_ID_COUNT )
627  return m_enabledLayers[aLayerId];
628 
629  return false;
630  }
LSET m_enabledLayers
Bit-mask for layer enabling.

References PCB_LAYER_ID_COUNT.

Referenced by BOARD::IsLayerEnabled(), and BOARD::IsLayerVisible().

◆ IsReadOnly()

bool JSON_SETTINGS::IsReadOnly ( ) const
inlineinherited

◆ Load()

void JSON_SETTINGS::Load ( )
virtualinherited

Updates the parameters of this object based on the current JSON document contents.

Definition at line 87 of file json_settings.cpp.

88 {
89  for( auto param : m_params )
90  {
91  try
92  {
93  param->Load( this, m_resetParamsIfMissing );
94  }
95  catch( ... )
96  {
97  // Skip unreadable parameters in file
98  wxLogTrace( traceSettings, "param '%s' load err", param->GetJsonPath().c_str() );
99  }
100  }
101 }
std::vector< PARAM_BASE * > m_params
The list of parameters (owned by this object)
bool m_resetParamsIfMissing
Whether or not to set parameters to their default value if missing from JSON on Load()
const wxChar *const traceSettings
Flag to enable debug output of settings operations and management.

References JSON_SETTINGS::m_params, JSON_SETTINGS::m_resetParamsIfMissing, and traceSettings.

Referenced by COLOR_SETTINGS::CreateBuiltinColorSettings(), NESTED_SETTINGS::LoadFromFile(), JSON_SETTINGS::LoadFromFile(), LoadFromFile(), COLOR_SETTINGS::migrateSchema0to1(), and SETTINGS_MANAGER::SaveColorSettings().

◆ LoadFromFile()

bool BOARD_DESIGN_SETTINGS::LoadFromFile ( const wxString &  aDirectory = "")
overridevirtual

Loads the backing file from disk and then calls Load()

Parameters
aDirectoryis the path to the file
Returns
true if the file was found on disk and loaded or migrated

Reimplemented from JSON_SETTINGS.

Definition at line 773 of file board_design_settings.cpp.

774 {
775  bool ret = NESTED_SETTINGS::LoadFromFile( aDirectory );
776 
777  // A number of things won't have been translated by the PROJECT_FILE migration because of
778  // descoped objects required to decode this data. So, it will be in the legacy.pcbnew
779  // section and needs to be pulled out here
780 
781  PROJECT_FILE* project = dynamic_cast<PROJECT_FILE*>( GetParent() );
782 
783  if( !project )
784  return ret;
785 
786  bool migrated = false;
787 
788  auto drcName =
789  []( int aCode ) -> std::string
790  {
791  std::shared_ptr<DRC_ITEM> item = DRC_ITEM::Create( aCode );
792  wxString name = item->GetSettingsKey();
793  return std::string( name.ToUTF8() );
794  };
795 
796  std::string bp = "board.design_settings.rule_severities.";
797  std::string rs = "rule_severities.";
798 
799  if( OPT<bool> v =
800  project->Get<bool>( PointerFromString( bp + "legacy_no_courtyard_defined" ) ) )
801  {
802  if( *v )
803  ( *this )[PointerFromString( rs + drcName( DRCE_MISSING_COURTYARD ) )] = "error";
804  else
805  ( *this )[PointerFromString( rs + drcName( DRCE_MISSING_COURTYARD ) )] = "ignore";
806 
807  project->erase( PointerFromString( bp + "legacy_no_courtyard_defined" ) );
808  migrated = true;
809  }
810 
811  if( OPT<bool> v = project->Get<bool>( PointerFromString( bp + "legacy_courtyards_overlap" ) ) )
812  {
813  if( *v )
814  ( *this )[PointerFromString( rs + drcName( DRCE_OVERLAPPING_FOOTPRINTS ) )] = "error";
815  else
816  ( *this )[PointerFromString( rs + drcName( DRCE_OVERLAPPING_FOOTPRINTS ) )] = "ignore";
817 
818  project->erase( PointerFromString( bp + "legacy_courtyards_overlap" ) );
819  migrated = true;
820  }
821 
822  if( project->contains( "legacy" ) )
823  {
824  // This defaults to false for new boards, but version 5.1.x and prior kept the fillets
825  // so we do the same for legacy boards.
827 
828  project->at( "legacy" ).erase( "pcbnew" );
829  }
830 
831  // Now that we have everything, we need to load again
832  if( migrated )
833  Load();
834 
835  return ret;
836 }
static std::shared_ptr< DRC_ITEM > Create(int aErrorCode)
Constructs a DRC_ITEM for the given error code.
Definition: drc_item.cpp:245
JSON_SETTINGS * GetParent()
bool LoadFromFile(const wxString &aDirectory="") override
Loads the JSON document from the parent and then calls Load()
PROJECT_FILE is the backing store for a PROJECT, in JSON format.
Definition: project_file.h:62
OPT< ValueType > Get(const std::string &aPath) const
Fetches a value from within the JSON document.
const char * name
Definition: DXF_plotter.cpp:59
boost::optional< T > OPT
Definition: optional.h:7
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.
virtual void Load()
Updates the parameters of this object based on the current JSON document contents.

References DRC_ITEM::Create(), DRCE_MISSING_COURTYARD, DRCE_OVERLAPPING_FOOTPRINTS, JSON_SETTINGS::Get(), NESTED_SETTINGS::GetParent(), JSON_SETTINGS::Load(), NESTED_SETTINGS::LoadFromFile(), m_ZoneKeepExternalFillets, name, and JSON_SETTINGS::PointerFromString().

◆ Migrate()

bool JSON_SETTINGS::Migrate ( )
inherited

Migrates the schema of this settings from the version in the file to the latest version.

Schema migration doesn't need to be used every time a setting is added! This is intended to be more of an "escape hatch" in the event that we decide to move settings around or make other changes to a settings file format that can't simply be handled by loading a new default

Returns
true if migration was successful

Definition at line 448 of file json_settings.cpp.

449 {
450  int filever = at( PointerFromString( "meta.version" ) ).get<int>();
451 
452  while( filever < m_schemaVersion )
453  {
454  if( !m_migrators.count( filever ) )
455  {
456  wxLogTrace( traceSettings, "Migrator missing for %s version %d!",
457  typeid( *this ).name(), filever );
458  return false;
459  }
460 
461  std::pair<int, std::function<bool()>> pair = m_migrators.at( filever );
462 
463  if( pair.second() )
464  {
465  wxLogTrace( traceSettings, "Migrated %s from %d to %d", typeid( *this ).name(),
466  filever, pair.first );
467  filever = pair.first;
468  ( *this )[PointerFromString( "meta.version" )] = filever;
469  }
470  else
471  {
472  wxLogTrace( traceSettings, "Migration failed for %s from %d to %d",
473  typeid( *this ).name(), filever, pair.first );
474  return false;
475  }
476  }
477 
478  return true;
479 }
std::map< int, std::pair< int, std::function< bool()> > > m_migrators
A map of starting schema version to a pair of <ending version, migrator function>
const wxChar *const traceSettings
Flag to enable debug output of settings operations and management.
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.
int m_schemaVersion
Version of this settings schema.

References JSON_SETTINGS::m_migrators, JSON_SETTINGS::m_schemaVersion, JSON_SETTINGS::PointerFromString(), and traceSettings.

Referenced by NESTED_SETTINGS::LoadFromFile(), and JSON_SETTINGS::LoadFromFile().

◆ MigrateFromLegacy()

bool JSON_SETTINGS::MigrateFromLegacy ( wxConfigBase *  aLegacyConfig)
virtualinherited

Migrates from wxConfig to JSON-based configuration.

Should be implemented by any subclasses of JSON_SETTINGS that map to a legacy (wxConfig-based) config file.

Parameters
aLegacyConfigis a wxConfigBase holding a loaded configuration to migrate
Returns
true if migration was successful

Reimplemented in PCBNEW_SETTINGS, EESCHEMA_SETTINGS, APP_SETTINGS_BASE, PCB_CALCULATOR_SETTINGS, COMMON_SETTINGS, EDA_3D_VIEWER_SETTINGS, PROJECT_FILE, COLOR_SETTINGS, PROJECT_LOCAL_SETTINGS, SYMBOL_EDITOR_SETTINGS, GERBVIEW_SETTINGS, FOOTPRINT_EDITOR_SETTINGS, CVPCB_SETTINGS, BITMAP2CMP_SETTINGS, PL_EDITOR_SETTINGS, and KICAD_SETTINGS.

Definition at line 482 of file json_settings.cpp.

483 {
484  wxLogTrace( traceSettings,
485  "MigrateFromLegacy() not implemented for %s", typeid( *this ).name() );
486  return false;
487 }
const wxChar *const traceSettings
Flag to enable debug output of settings operations and management.

References traceSettings.

Referenced by JSON_SETTINGS::LoadFromFile().

◆ migrateSchema0to1()

bool BOARD_DESIGN_SETTINGS::migrateSchema0to1 ( )
private

Schema 0 to 1: default dimension precision changed in meaning. Previously it was an enum with the following meaning:

0: 0.01mm / 1 mil / 0.001 in 1: 0.001mm / 0.1 mil / 0.0001 in 2: 0.0001mm / 0.01 mil / 0.00001 in

Now it is indepenent of display units and is an integer meaning the number of digits displayed after the decimal point, so we have to migrate based on the default units.

The units is an integer with the following mapping:

0: Inches 1: Mils 2: Millimetres

Definition at line 722 of file board_design_settings.cpp.

723 {
741  nlohmann::json::json_pointer units_ptr( "/defaults/dimension_units" );
742  nlohmann::json::json_pointer precision_ptr( "/defaults/dimension_precision" );
743 
744  if( !( contains( units_ptr ) && contains( precision_ptr ) &&
745  at( units_ptr ).is_number_integer() &&
746  at( precision_ptr ).is_number_integer() ) )
747  {
748  // if either is missing or invalid, migration doesn't make sense
749  return true;
750  }
751 
752  int units = at( units_ptr ).get<int>();
753  int precision = at( precision_ptr ).get<int>();
754 
755  // The enum maps directly to precision if the units is mils
756  int extraDigits = 0;
757 
758  switch( units )
759  {
760  case 0: extraDigits = 3; break;
761  case 2: extraDigits = 2; break;
762  default: break;
763  }
764 
765  precision += extraDigits;
766 
767  ( *this )[precision_ptr] = precision;
768 
769  return true;
770 }
bool contains(const _Container &__container, _Value __value)
Returns true if the container contains the given value.
Definition: kicad_algo.h:81

References alg::contains().

Referenced by BOARD_DESIGN_SETTINGS().

◆ operator=()

BOARD_DESIGN_SETTINGS & BOARD_DESIGN_SETTINGS::operator= ( const BOARD_DESIGN_SETTINGS aOther)

Definition at line 631 of file board_design_settings.cpp.

632 {
633  initFromOther( aOther );
634  return *this;
635 }
void initFromOther(const BOARD_DESIGN_SETTINGS &aOther)

References initFromOther().

◆ PointerFromString()

nlohmann::json::json_pointer JSON_SETTINGS::PointerFromString ( std::string  aPath)
staticinherited

Builds a JSON pointer based on a given string.

Parameters
aPathis the path in the form "key1.key2.key3"
Returns
a JSON pointer that can be used to index into a JSON object

Definition at line 490 of file json_settings.cpp.

491 {
492  std::replace( aPath.begin(), aPath.end(), '.', '/' );
493  aPath.insert( 0, "/" );
494 
495  nlohmann::json::json_pointer p;
496 
497  try
498  {
499  p = nlohmann::json::json_pointer( aPath );
500  }
501  catch( ... )
502  {
503  wxASSERT_MSG( false, wxT( "Invalid pointer path in PointerFromString!" ) );
504  }
505 
506  return p;
507 }

Referenced by JSON_SETTINGS::fromLegacy(), JSON_SETTINGS::fromLegacyColor(), JSON_SETTINGS::fromLegacyString(), JSON_SETTINGS::GetJson(), JSON_SETTINGS::JSON_SETTINGS(), NESTED_SETTINGS::LoadFromFile(), JSON_SETTINGS::LoadFromFile(), LoadFromFile(), JSON_SETTINGS::Migrate(), APP_SETTINGS_BASE::migrateFindReplace(), FOOTPRINT_EDITOR_SETTINGS::MigrateFromLegacy(), GERBVIEW_SETTINGS::MigrateFromLegacy(), SYMBOL_EDITOR_SETTINGS::MigrateFromLegacy(), PROJECT_FILE::MigrateFromLegacy(), EDA_3D_VIEWER_SETTINGS::MigrateFromLegacy(), COMMON_SETTINGS::MigrateFromLegacy(), PCB_CALCULATOR_SETTINGS::MigrateFromLegacy(), APP_SETTINGS_BASE::MigrateFromLegacy(), EESCHEMA_SETTINGS::MigrateFromLegacy(), PCBNEW_SETTINGS::MigrateFromLegacy(), SETTINGS_MANAGER::SaveColorSettings(), NESTED_SETTINGS::SaveToFile(), PROJECT_LOCAL_SETTINGS::SaveToFile(), PROJECT_FILE::SaveToFile(), JSON_SETTINGS::Set(), and JSON_SETTINGS::SetIfPresent().

◆ registerMigration()

void JSON_SETTINGS::registerMigration ( int  aOldSchemaVersion,
int  aNewSchemaVersion,
std::function< bool(void)>  aMigrator 
)
protectedinherited

Registers a migration from one schema version to another.

If the schema version in the file loaded from disk is less than the schema version of the JSON_SETTINGS class, migration functions will be called one after the other until the data is up-to-date.

Parameters
aOldSchemaVersionis the starting schema version for this migration
aNewSchemaVersionis the ending schema version for this migration
aMigratoris a function that performs the migration and returns true if successful

Definition at line 439 of file json_settings.cpp.

441 {
442  wxASSERT( aNewSchemaVersion > aOldSchemaVersion );
443  wxASSERT( aNewSchemaVersion <= m_schemaVersion );
444  m_migrators[aOldSchemaVersion] = std::make_pair( aNewSchemaVersion, aMigrator );
445 }
std::map< int, std::pair< int, std::function< bool()> > > m_migrators
A map of starting schema version to a pair of <ending version, migrator function>
int m_schemaVersion
Version of this settings schema.

References JSON_SETTINGS::m_migrators, and JSON_SETTINGS::m_schemaVersion.

Referenced by BOARD_DESIGN_SETTINGS(), COLOR_SETTINGS::COLOR_SETTINGS(), COMMON_SETTINGS::COMMON_SETTINGS(), FOOTPRINT_EDITOR_SETTINGS::FOOTPRINT_EDITOR_SETTINGS(), and PROJECT_LOCAL_SETTINGS::PROJECT_LOCAL_SETTINGS().

◆ ReleaseNestedSettings()

void JSON_SETTINGS::ReleaseNestedSettings ( NESTED_SETTINGS aSettings)
inherited

Saves and frees a nested settings object, if it exists within this one.

Parameters
aSettingsis a pointer to a NESTED_SETTINGS that has already been added to this one

Definition at line 666 of file json_settings.cpp.

667 {
668  if( !aSettings )
669  return;
670 
671  auto it = std::find_if( m_nested_settings.begin(), m_nested_settings.end(),
672  [&aSettings]( const JSON_SETTINGS* aPtr ) {
673  return aPtr == aSettings;
674  } );
675 
676  if( it != m_nested_settings.end() )
677  {
678  wxLogTrace( traceSettings, "Flush and release %s", ( *it )->GetFilename() );
679  ( *it )->SaveToFile();
680  m_nested_settings.erase( it );
681  }
682 
683  aSettings->SetParent( nullptr );
684 }
std::vector< NESTED_SETTINGS * > m_nested_settings
Nested settings files that live inside this one, if any.
const wxChar *const traceSettings
Flag to enable debug output of settings operations and management.
void SetParent(JSON_SETTINGS *aParent)

References JSON_SETTINGS::m_nested_settings, NESTED_SETTINGS::SetParent(), and traceSettings.

Referenced by BOARD::ClearProject(), ~BOARD_DESIGN_SETTINGS(), ERC_SETTINGS::~ERC_SETTINGS(), NESTED_SETTINGS::~NESTED_SETTINGS(), NET_SETTINGS::~NET_SETTINGS(), and SCHEMATIC_SETTINGS::~SCHEMATIC_SETTINGS().

◆ ResetToDefaults()

void JSON_SETTINGS::ResetToDefaults ( )
inherited

Resets all parameters to default values.

Does NOT write to file or update underlying JSON.

Definition at line 313 of file json_settings.cpp.

314 {
315  for( auto param : m_params )
316  param->SetDefault();
317 }
std::vector< PARAM_BASE * > m_params
The list of parameters (owned by this object)

References JSON_SETTINGS::m_params.

Referenced by EDA_3D_VIEWER::Process_Special_Functions(), PANEL_COMMON_SETTINGS::ResetPanel(), and PANEL_MOUSE_SETTINGS::ResetPanel().

◆ SaveToFile()

bool NESTED_SETTINGS::SaveToFile ( const wxString &  aDirectory = "",
bool  aForce = false 
)
overridevirtualinherited

Calls Store() and then saves the JSON document contents into the parent JSON_SETTINGS.

Parameters
aDirectoryis ignored
Returns
true if the document contents were updated

Reimplemented from JSON_SETTINGS.

Definition at line 117 of file nested_settings.cpp.

118 {
119  if( !m_parent )
120  return false;
121 
122  bool modified = Store();
123 
124  try
125  {
126  nlohmann::json patch =
127  nlohmann::json::diff( *this, ( *m_parent )[PointerFromString( m_path )] );
128  modified |= !patch.empty();
129  }
130  catch( ... )
131  {
132  modified = true;
133  }
134 
135  if( !modified && !aForce )
136  return false;
137 
138  try
139  {
140  ( *m_parent )[PointerFromString( m_path ) ].update( *this );
141 
142  wxLogTrace( traceSettings, "Stored NESTED_SETTINGS %s with schema %d",
144  }
145  catch( ... )
146  {
147  wxLogTrace( traceSettings, "NESTED_SETTINGS %s: Could not store to %s at %s",
149  }
150 
151  return modified;
152 }
virtual bool Store()
Stores the current parameters into the JSON document represented by this object Note: this doesn't do...
wxString GetFilename() const
Definition: json_settings.h:64
nlohmann::json json
Definition: gerbview.cpp:40
wxString m_filename
The filename (not including path) of this settings file (inicode)
JSON_SETTINGS * m_parent
A pointer to the parent object to load and store from.
std::string m_path
The path (in pointer format) of where to store this document in the parent.
const wxChar *const traceSettings
Flag to enable debug output of settings operations and management.
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.
int m_schemaVersion
Version of this settings schema.

References JSON_SETTINGS::GetFilename(), JSON_SETTINGS::m_filename, NESTED_SETTINGS::m_parent, NESTED_SETTINGS::m_path, JSON_SETTINGS::m_schemaVersion, JSON_SETTINGS::PointerFromString(), JSON_SETTINGS::Store(), and traceSettings.

◆ Set() [1/3]

template<typename ValueType >
void JSON_SETTINGS::Set ( const std::string &  aPath,
ValueType  aVal 
)
inlineinherited

Stores a value into the JSON document Will throw an exception if ValueType isn't something that the library can handle.

Template Parameters
ValueTypeis the type to store
Parameters
aPathis a path to store in the form "key1.key2.key3"
aValis the value to store

Definition at line 148 of file json_settings.h.

149  {
150  ( *this )[PointerFromString( aPath ) ] = aVal;
151  }
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References JSON_SETTINGS::PointerFromString().

Referenced by COLOR_MAP_PARAM::Store(), PARAM< wxString >::Store(), PARAM_PATH::Store(), PARAM_ENUM< EnumType >::Store(), PARAM_LAMBDA< nlohmann::json >::Store(), PARAM_SCALED< ValueType >::Store(), PARAM_LIST< wxString >::Store(), PARAM_PATH_LIST::Store(), PARAM_MAP< Value >::Store(), and PARAM_WXSTRING_MAP::Store().

◆ Set() [2/3]

template<>
void JSON_SETTINGS::Set ( const std::string &  aPath,
wxString  aVal 
)
inherited

◆ Set() [3/3]

template<>
void JSON_SETTINGS::Set ( const std::string &  aPath,
wxString  aVal 
)
inherited

Definition at line 698 of file json_settings.cpp.

699 {
700  ( *this )[PointerFromString( std::move( aPath ) ) ] = aVal.ToUTF8();
701 }
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References JSON_SETTINGS::PointerFromString().

◆ SetBoardThickness()

void BOARD_DESIGN_SETTINGS::SetBoardThickness ( int  aThickness)
inline

Definition at line 648 of file board_design_settings.h.

648 { m_boardThickness = aThickness; }
int m_boardThickness
Board thickness for 3D viewer.

Referenced by LEGACY_PLUGIN::loadGENERAL(), and PANEL_SETUP_BOARD_STACKUP::TransferDataFromWindow().

◆ SetCopperEdgeClearance()

void BOARD_DESIGN_SETTINGS::SetCopperEdgeClearance ( int  aDistance)
Parameters
aValueThe minimum distance between copper items and board edges.

Definition at line 963 of file board_design_settings.cpp.

964 {
965  m_CopperEdgeClearance = aDistance;
966 }

References m_CopperEdgeClearance.

Referenced by PCB_EDIT_FRAME::OpenProjectFiles(), and PANEL_SETUP_FEATURE_CONSTRAINTS::TransferDataFromWindow().

◆ SetCopperLayerCount()

void BOARD_DESIGN_SETTINGS::SetCopperLayerCount ( int  aNewLayerCount)

Set the copper layer count to aNewLayerCount.

Parameters
aNewLayerCountThe new number of enabled copper layers.

Definition at line 975 of file board_design_settings.cpp.

976 {
977  m_copperLayerCount = aNewLayerCount;
978 
979  // Update only enabled copper layers mask
980  m_enabledLayers &= ~LSET::AllCuMask();
981 
982  if( aNewLayerCount > 0 )
983  m_enabledLayers |= LSET::AllCuMask( aNewLayerCount );
984 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
LSET is a set of PCB_LAYER_IDs.
int m_copperLayerCount
Number of copper layers for this design.
LSET m_enabledLayers
Bit-mask for layer enabling.

References LSET::AllCuMask(), m_copperLayerCount, and m_enabledLayers.

Referenced by BOARD_DESIGN_SETTINGS(), and BOARD::SetCopperLayerCount().

◆ SetCustomDiffPairGap()

void BOARD_DESIGN_SETTINGS::SetCustomDiffPairGap ( int  aGap)
inline

Sets custom gap for differential pairs (i.e.

not available in netclasses or preset list).

Parameters
aGapis the new gap.

Definition at line 490 of file board_design_settings.h.

491  {
492  m_customDiffPair.m_Gap = aGap;
493  }
DIFF_PAIR_DIMENSION m_customDiffPair

Referenced by ROUTER_TOOL::DpDimensionsDialog(), and BOARD::SynchronizeNetsAndNetClasses().

◆ SetCustomDiffPairViaGap()

void BOARD_DESIGN_SETTINGS::SetCustomDiffPairViaGap ( int  aGap)
inline

Sets custom via gap for differential pairs (i.e.

not available in netclasses or preset list).

Parameters
aGapis the new gap. Specify 0 to use the DiffPairGap for vias as well.

Definition at line 510 of file board_design_settings.h.

511  {
512  m_customDiffPair.m_ViaGap = aGap;
513  }
DIFF_PAIR_DIMENSION m_customDiffPair

Referenced by ROUTER_TOOL::DpDimensionsDialog(), and BOARD::SynchronizeNetsAndNetClasses().

◆ SetCustomDiffPairWidth()

void BOARD_DESIGN_SETTINGS::SetCustomDiffPairWidth ( int  aWidth)
inline

Sets custom track width for differential pairs (i.e.

not available in netclasses or preset list).

Parameters
aDrillis the new track wdith.

Definition at line 472 of file board_design_settings.h.

473  {
474  m_customDiffPair.m_Width = aWidth;
475  }
DIFF_PAIR_DIMENSION m_customDiffPair

Referenced by ROUTER_TOOL::DpDimensionsDialog(), and BOARD::SynchronizeNetsAndNetClasses().

◆ SetCustomTrackWidth()

void BOARD_DESIGN_SETTINGS::SetCustomTrackWidth ( int  aWidth)
inline

Sets custom width for track (i.e.

not available in netclasses or preset list).

To have it returned with GetCurrentTrackWidth() you need to enable custom track & via sizes with UseCustomTrackViaSize().

Parameters
aWidthis the new track width.

Definition at line 351 of file board_design_settings.h.

352  {
353  m_customTrackWidth = aWidth;
354  }

Referenced by BOARD::SynchronizeNetsAndNetClasses(), and DIALOG_TRACK_VIA_SIZE::TransferDataFromWindow().

◆ SetCustomViaDrill()

void BOARD_DESIGN_SETTINGS::SetCustomViaDrill ( int  aDrill)
inline

Sets custom size for via drill (i.e.

not available in netclasses or preset list).

To have it returned with GetCurrentViaDrill() you need to enable custom track & via sizes with UseCustomTrackViaSize().

Parameters
aDrillis the new drill size.

Definition at line 422 of file board_design_settings.h.

423  {
424  m_customViaSize.m_Drill = aDrill;
425  }

Referenced by BOARD::SynchronizeNetsAndNetClasses(), and DIALOG_TRACK_VIA_SIZE::TransferDataFromWindow().

◆ SetCustomViaSize()

void BOARD_DESIGN_SETTINGS::SetCustomViaSize ( int  aSize)
inline

Set custom size for via diameter (i.e.

not available in netclasses or preset list).

To have it returned with GetCurrentViaSize() you need to enable custom track & via sizes with UseCustomTrackViaSize().

Parameters
aSizeis the new drill diameter.

Definition at line 394 of file board_design_settings.h.

395  {
396  m_customViaSize.m_Diameter = aSize;
397  }

Referenced by BOARD::SynchronizeNetsAndNetClasses(), and DIALOG_TRACK_VIA_SIZE::TransferDataFromWindow().

◆ SetDefaultZoneSettings()

void BOARD_DESIGN_SETTINGS::SetDefaultZoneSettings ( const ZONE_SETTINGS aSettings)
inline

Definition at line 259 of file board_design_settings.h.

260  {
261  m_defaultZoneSettings = aSettings;
262  }
ZONE_SETTINGS m_defaultZoneSettings
The default settings that will be used for new zones.

Referenced by PCB_BASE_FRAME::SetZoneSettings(), and BOARD::SetZoneSettings().

◆ SetDiffPairIndex()

void BOARD_DESIGN_SETTINGS::SetDiffPairIndex ( unsigned  aIndex)
Parameters
aIndexis the diff pair dimensions list index to set.

Definition at line 950 of file board_design_settings.cpp.

951 {
952  m_diffPairIndex = std::min( aIndex, (unsigned) 8 );
953  m_useCustomDiffPair = false;
954 }

References m_diffPairIndex, and m_useCustomDiffPair.

Referenced by DIFF_PAIR_MENU::eventHandler(), BOARD_EDITOR_CONTROL::TrackWidthDec(), and BOARD_EDITOR_CONTROL::TrackWidthInc().

◆ SetEnabledLayers()

void BOARD_DESIGN_SETTINGS::SetEnabledLayers ( LSET  aMask)

Change the bit-mask of enabled layers to aMask.

Parameters
aMask= The new bit-mask of enabled layers.

Definition at line 987 of file board_design_settings.cpp.

988 {
989  // Back and front layers are always enabled.
990  aMask.set( B_Cu ).set( F_Cu );
991 
992  m_enabledLayers = aMask;
993 
994  // update m_CopperLayerCount to ensure its consistency with m_EnabledLayers
995  m_copperLayerCount = ( aMask & LSET::AllCuMask() ).count();
996 }
static LSET AllCuMask(int aCuLayerCount=MAX_CU_LAYERS)
Return a mask holding the requested number of Cu PCB_LAYER_IDs.
Definition: lset.cpp:750
int m_copperLayerCount
Number of copper layers for this design.
LSET m_enabledLayers
Bit-mask for layer enabling.

References LSET::AllCuMask(), B_Cu, F_Cu, m_copperLayerCount, and m_enabledLayers.

Referenced by BOARD::SetEnabledLayers().

◆ SetFilename()

void JSON_SETTINGS::SetFilename ( const wxString &  aFilename)
inlineinherited

Definition at line 68 of file json_settings.h.

68 { m_filename = aFilename; }
wxString m_filename
The filename (not including path) of this settings file (inicode)

References JSON_SETTINGS::m_filename.

Referenced by SETTINGS_MANAGER::SaveProjectAs().

◆ SetIfPresent() [1/4]

bool JSON_SETTINGS::SetIfPresent ( const nlohmann::json aObj,
const std::string &  aPath,
wxString &  aTarget 
)
staticinherited

Sets the given string if the given key/path is present.

Parameters
aObjis the source object
aTargetis the storage destination
Returns
True if set, false if not

Definition at line 510 of file json_settings.cpp.

512 {
513  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
514 
515  if( aObj.contains( ptr ) && aObj.at( ptr ).is_string() )
516  {
517  aTarget = aObj.at( ptr ).get<wxString>();
518  return true;
519  }
520 
521  return false;
522 }
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References JSON_SETTINGS::PointerFromString().

Referenced by FOOTPRINT_EDITOR_SETTINGS::FOOTPRINT_EDITOR_SETTINGS(), and PROJECT_LOCAL_SETTINGS::PROJECT_LOCAL_SETTINGS().

◆ SetIfPresent() [2/4]

bool JSON_SETTINGS::SetIfPresent ( const nlohmann::json aObj,
const std::string &  aPath,
bool &  aTarget 
)
staticinherited

Sets the given bool if the given key/path is present.

Parameters
aObjis the source object
aTargetis the storage destination
Returns
True if set, false if not

Definition at line 525 of file json_settings.cpp.

527 {
528  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
529 
530  if( aObj.contains( ptr ) && aObj.at( ptr ).is_boolean() )
531  {
532  aTarget = aObj.at( ptr ).get<bool>();
533  return true;
534  }
535 
536  return false;
537 }
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References JSON_SETTINGS::PointerFromString().

◆ SetIfPresent() [3/4]

bool JSON_SETTINGS::SetIfPresent ( const nlohmann::json aObj,
const std::string &  aPath,
int &  aTarget 
)
staticinherited

Sets the given int if the given key/path is present.

Parameters
aObjis the source object
aTargetis the storage destination
Returns
True if set, false if not

Definition at line 540 of file json_settings.cpp.

542 {
543  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
544 
545  if( aObj.contains( ptr ) && aObj.at( ptr ).is_number_integer() )
546  {
547  aTarget = aObj.at( ptr ).get<int>();
548  return true;
549  }
550 
551  return false;
552 }
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References JSON_SETTINGS::PointerFromString().

◆ SetIfPresent() [4/4]

bool JSON_SETTINGS::SetIfPresent ( const nlohmann::json aObj,
const std::string &  aPath,
unsigned int &  aTarget 
)
staticinherited

Sets the given unsigned int if the given key/path is present.

Parameters
aObjis the source object
aTargetis the storage destination
Returns
True if set, false if not

Definition at line 555 of file json_settings.cpp.

557 {
558  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
559 
560  if( aObj.contains( ptr ) && aObj.at( ptr ).is_number_unsigned() )
561  {
562  aTarget = aObj.at( ptr ).get<unsigned int>();
563  return true;
564  }
565 
566  return false;
567 }
static nlohmann::json::json_pointer PointerFromString(std::string aPath)
Builds a JSON pointer based on a given string.

References JSON_SETTINGS::PointerFromString().

◆ SetLegacyFilename()

void JSON_SETTINGS::SetLegacyFilename ( const wxString &  aFilename)
inlineinherited

Definition at line 72 of file json_settings.h.

72 { m_legacy_filename = aFilename; }
wxString m_legacy_filename
The filename of the wxConfig legacy file (if different from m_filename)

References JSON_SETTINGS::m_legacy_filename.

Referenced by SYMBOL_EDITOR_SETTINGS::SYMBOL_EDITOR_SETTINGS().

◆ SetManager()

void JSON_SETTINGS::SetManager ( SETTINGS_MANAGER aManager)
inlineinherited

Definition at line 188 of file json_settings.h.

189  {
190  m_manager = aManager;
191  }
SETTINGS_MANAGER * m_manager
A pointer to the settings manager managing this file (may be null)

References JSON_SETTINGS::m_manager.

◆ SetMinHoleSeparation()

void BOARD_DESIGN_SETTINGS::SetMinHoleSeparation ( int  aDistance)
Parameters
aValueThe minimum distance between the edges of two holes or 0 to disable hole-to-hole separation checking.

Definition at line 957 of file board_design_settings.cpp.

958 {
959  m_HoleToHoleMin = aDistance;
960 }

References m_HoleToHoleMin.

Referenced by PANEL_SETUP_FEATURE_CONSTRAINTS::TransferDataFromWindow().

◆ SetNetClasses()

void BOARD_DESIGN_SETTINGS::SetNetClasses ( NETCLASSES aNetClasses)
inline

Definition at line 246 of file board_design_settings.h.

247  {
248  if( aNetClasses )
249  m_netClasses = aNetClasses;
250  else
252  }
NETCLASSES m_internalNetClasses
Net classes that are loaded from the board file before these were stored in the project.
NETCLASSES * m_netClasses
This will point to m_internalNetClasses until it is repointed to the project after load.

References m_internalNetClasses.

Referenced by BOARD::SetProject().

◆ SetParent()

void NESTED_SETTINGS::SetParent ( JSON_SETTINGS aParent)
inherited

Definition at line 155 of file nested_settings.cpp.

156 {
157  m_parent = aParent;
158 
159  if( m_parent )
160  {
161  m_parent->AddNestedSettings( this );
162 
163  // In case we were created after the parent's ctor
164  LoadFromFile();
165  }
166 }
bool LoadFromFile(const wxString &aDirectory="") override
Loads the JSON document from the parent and then calls Load()
void AddNestedSettings(NESTED_SETTINGS *aSettings)
Transfers ownership of a given NESTED_SETTINGS to this object.
JSON_SETTINGS * m_parent
A pointer to the parent object to load and store from.

References JSON_SETTINGS::AddNestedSettings(), NESTED_SETTINGS::LoadFromFile(), and NESTED_SETTINGS::m_parent.

Referenced by BOARD::ClearProject(), NESTED_SETTINGS::NESTED_SETTINGS(), JSON_SETTINGS::ReleaseNestedSettings(), and BOARD::SetProject().

◆ SetReadOnly()

void JSON_SETTINGS::SetReadOnly ( bool  aReadOnly)
inlineinherited

Definition at line 75 of file json_settings.h.

75 { m_writeFile = !aReadOnly; }
bool m_writeFile
Whether or not the backing store file should be written.

References JSON_SETTINGS::m_writeFile.

Referenced by PANEL_COLOR_SETTINGS::OnThemeChanged().

◆ SetSilkClearance()

void BOARD_DESIGN_SETTINGS::SetSilkClearance ( int  aDistance)

Set the minimum distance between silk items to aValue.

Note
Compound graphics within a single footprint or on the board are not checked, but distances between text and between graphics from different footprints are.
Parameters
aValueThe minimum distance between silk items.

Definition at line 969 of file board_design_settings.cpp.

970 {
971  m_SilkClearance = aDistance;
972 }

References m_SilkClearance.

◆ SetTrackWidthIndex()

void BOARD_DESIGN_SETTINGS::SetTrackWidthIndex ( unsigned  aIndex)

◆ SetViaSizeIndex()

void BOARD_DESIGN_SETTINGS::SetViaSizeIndex ( unsigned  aIndex)

◆ Store()

bool JSON_SETTINGS::Store ( )
virtualinherited

Stores the current parameters into the JSON document represented by this object Note: this doesn't do any writing to disk; that's handled by SETTINGS_MANAGER.

Returns
true if any part of the JSON document was updated

Definition at line 299 of file json_settings.cpp.

300 {
301  bool modified = false;
302 
303  for( auto param : m_params )
304  {
305  modified |= !param->MatchesFile( this );
306  param->Store( this );
307  }
308 
309  return modified;
310 }
std::vector< PARAM_BASE * > m_params
The list of parameters (owned by this object)

References JSON_SETTINGS::m_params.

Referenced by PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS(), SETTINGS_MANAGER::SaveColorSettings(), NESTED_SETTINGS::SaveToFile(), and JSON_SETTINGS::SaveToFile().

◆ UseCustomDiffPairDimensions() [1/2]

void BOARD_DESIGN_SETTINGS::UseCustomDiffPairDimensions ( bool  aEnabled)
inline

Enables/disables custom differential pair dimensions.

Parameters
aEnableddecides if custom settings should be used for new differential pairs.

Definition at line 528 of file board_design_settings.h.

529  {
530  m_useCustomDiffPair = aEnabled;
531  }

Referenced by DIFF_PAIR_MENU::eventHandler(), PNS_KICAD_IFACE_BASE::ImportSizes(), BOARD_EDITOR_CONTROL::TrackWidthDec(), BOARD_EDITOR_CONTROL::TrackWidthInc(), and DIFF_PAIR_MENU::update().

◆ UseCustomDiffPairDimensions() [2/2]

bool BOARD_DESIGN_SETTINGS::UseCustomDiffPairDimensions ( ) const
inline
Returns
True if custom sizes of diff pairs are enabled, false otherwise.

Definition at line 536 of file board_design_settings.h.

537  {
538  return m_useCustomDiffPair;
539  }

References m_useCustomDiffPair.

◆ UseCustomTrackViaSize() [1/2]

void BOARD_DESIGN_SETTINGS::UseCustomTrackViaSize ( bool  aEnabled)
inline

◆ UseCustomTrackViaSize() [2/2]

bool BOARD_DESIGN_SETTINGS::UseCustomTrackViaSize ( ) const
inline
Returns
True if custom sizes of tracks & vias are enabled, false otherwise.

Definition at line 451 of file board_design_settings.h.

452  {
453  return m_useCustomTrackVia;
454  }

References m_useCustomTrackVia.

◆ UseNetClassDiffPair()

bool BOARD_DESIGN_SETTINGS::UseNetClassDiffPair ( ) const
inline

Return true if netclass values should be used to obtain appropriate diff pair dimensions.

Definition at line 299 of file board_design_settings.h.

300  {
301  return ( m_diffPairIndex == 0 && !m_useCustomDiffPair );
302  }

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ UseNetClassTrack()

bool BOARD_DESIGN_SETTINGS::UseNetClassTrack ( ) const
inline

Return true if netclass values should be used to obtain appropriate track width.

Definition at line 283 of file board_design_settings.h.

284  {
285  return ( m_trackWidthIndex == 0 && !m_useCustomTrackVia );
286  }

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ UseNetClassVia()

bool BOARD_DESIGN_SETTINGS::UseNetClassVia ( ) const
inline

Return true if netclass values should be used to obtain appropriate via size.

Definition at line 291 of file board_design_settings.h.

292  {
293  return ( m_viaSizeIndex == 0 && !m_useCustomTrackVia );
294  }

Referenced by ROUTER_TOOL::handleLayerSwitch(), and PNS_KICAD_IFACE_BASE::ImportSizes().

Member Data Documentation

◆ m_AuxOrigin

◆ m_BlindBuriedViaAllowed

◆ m_boardThickness

int BOARD_DESIGN_SETTINGS::m_boardThickness
private

Board thickness for 3D viewer.

Definition at line 801 of file board_design_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), GetBoardThickness(), and initFromOther().

◆ m_CopperEdgeClearance

◆ m_copperLayerCount

int BOARD_DESIGN_SETTINGS::m_copperLayerCount
private

Number of copper layers for this design.

Definition at line 797 of file board_design_settings.h.

Referenced by GetCopperLayerCount(), initFromOther(), SetCopperLayerCount(), and SetEnabledLayers().

◆ m_createIfDefault

bool JSON_SETTINGS::m_createIfDefault
protectedinherited

Whether or not the backing store file should be created if all parameters are still at their default values.

Ignored if m_createIfMissing is false or m_writeFile is false.

Definition at line 306 of file json_settings.h.

Referenced by JSON_SETTINGS::SaveToFile().

◆ m_createIfMissing

bool JSON_SETTINGS::m_createIfMissing
protectedinherited

Whether or not the backing store file should be created it if doesn't exist.

Definition at line 300 of file json_settings.h.

Referenced by JSON_SETTINGS::SaveToFile().

◆ m_currentNetClassName

wxString BOARD_DESIGN_SETTINGS::m_currentNetClassName
private

Current net class name used to display netclass info.

This is also the last used netclass after starting a track.

Definition at line 805 of file board_design_settings.h.

Referenced by GetCurrentMicroViaDrill(), GetCurrentMicroViaSize(), GetCurrentNetClassName(), and initFromOther().

◆ m_CurrentViaType

VIATYPE BOARD_DESIGN_SETTINGS::m_CurrentViaType

(VIA_BLIND_BURIED, VIA_THROUGH, VIA_MICROVIA)

Definition at line 698 of file board_design_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), and initFromOther().

◆ m_customDiffPair

DIFF_PAIR_DIMENSION BOARD_DESIGN_SETTINGS::m_customDiffPair
private

Definition at line 795 of file board_design_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), and initFromOther().

◆ m_customTrackWidth

int BOARD_DESIGN_SETTINGS::m_customTrackWidth
private

◆ m_customViaSize

VIA_DIMENSION BOARD_DESIGN_SETTINGS::m_customViaSize
private

◆ m_DefaultFPTextItems

◆ m_defaultZoneSettings

ZONE_SETTINGS BOARD_DESIGN_SETTINGS::m_defaultZoneSettings
private

The default settings that will be used for new zones.

Definition at line 820 of file board_design_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), GetDefaultZoneSettings(), and initFromOther().

◆ m_deleteLegacyAfterMigration

bool JSON_SETTINGS::m_deleteLegacyAfterMigration
protectedinherited

Whether or not to delete legacy file after migration.

Definition at line 312 of file json_settings.h.

Referenced by JSON_SETTINGS::LoadFromFile(), and PROJECT_FILE::PROJECT_FILE().

◆ m_DiffPairDimensionsList

◆ m_diffPairIndex

unsigned BOARD_DESIGN_SETTINGS::m_diffPairIndex
private

◆ m_DimensionArrowLength

◆ m_DimensionExtensionOffset

◆ m_DimensionKeepTextAligned

◆ m_DimensionPrecision

int BOARD_DESIGN_SETTINGS::m_DimensionPrecision

◆ m_DimensionSuppressZeroes

◆ m_DimensionTextPosition

◆ m_DimensionUnitsFormat

◆ m_DimensionUnitsMode

◆ m_DRCEngine

◆ m_DrcExclusions

std::set<wxString> BOARD_DESIGN_SETTINGS::m_DrcExclusions

◆ m_DRCSeverities

◆ m_enabledLayers

LSET BOARD_DESIGN_SETTINGS::m_enabledLayers
private

Bit-mask for layer enabling.

Definition at line 799 of file board_design_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), GetEnabledLayers(), initFromOther(), SetCopperLayerCount(), and SetEnabledLayers().

◆ m_filename

◆ m_GridOrigin

◆ m_HasStackup

◆ m_HoleClearance

◆ m_HoleToHoleMin

◆ m_internalNetClasses

NETCLASSES BOARD_DESIGN_SETTINGS::m_internalNetClasses
private

Net classes that are loaded from the board file before these were stored in the project.

Definition at line 814 of file board_design_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), initFromOther(), and SetNetClasses().

◆ m_legacy_filename

wxString JSON_SETTINGS::m_legacy_filename
protectedinherited

The filename of the wxConfig legacy file (if different from m_filename)

Definition at line 288 of file json_settings.h.

Referenced by JSON_SETTINGS::LoadFromFile(), and JSON_SETTINGS::SetLegacyFilename().

◆ m_LineThickness

◆ m_location

SETTINGS_LOC JSON_SETTINGS::m_location
protectedinherited

The location of this settings file (.

See also
SETTINGS_LOC)

Definition at line 291 of file json_settings.h.

Referenced by JSON_SETTINGS::GetLocation().

◆ m_manager

SETTINGS_MANAGER* JSON_SETTINGS::m_manager
protectedinherited

A pointer to the settings manager managing this file (may be null)

Definition at line 321 of file json_settings.h.

Referenced by FOOTPRINT_EDITOR_SETTINGS::migrateSchema0to1(), COLOR_SETTINGS::migrateSchema0to1(), and JSON_SETTINGS::SetManager().

◆ m_MaxError

◆ m_MicroViasAllowed

◆ m_MicroViasMinDrill

◆ m_MicroViasMinSize

◆ m_migrators

std::map<int, std::pair<int, std::function<bool()> > > JSON_SETTINGS::m_migrators
protectedinherited

A map of starting schema version to a pair of <ending version, migrator function>

Definition at line 327 of file json_settings.h.

Referenced by JSON_SETTINGS::Migrate(), and JSON_SETTINGS::registerMigration().

◆ m_MinClearance

◆ m_MinThroughDrill

◆ m_nested_settings

std::vector<NESTED_SETTINGS*> JSON_SETTINGS::m_nested_settings
protectedinherited

Nested settings files that live inside this one, if any.

Definition at line 297 of file json_settings.h.

Referenced by JSON_SETTINGS::AddNestedSettings(), JSON_SETTINGS::LoadFromFile(), JSON_SETTINGS::ReleaseNestedSettings(), and JSON_SETTINGS::SaveToFile().

◆ m_netClasses

NETCLASSES* BOARD_DESIGN_SETTINGS::m_netClasses
private

This will point to m_internalNetClasses until it is repointed to the project after load.

Definition at line 817 of file board_design_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), GetNetClasses(), and initFromOther().

◆ m_Pad_Master

◆ m_params

◆ m_parent

◆ m_path

std::string NESTED_SETTINGS::m_path
protectedinherited

The path (in pointer format) of where to store this document in the parent.

Definition at line 65 of file nested_settings.h.

Referenced by NESTED_SETTINGS::LoadFromFile(), and NESTED_SETTINGS::SaveToFile().

◆ m_preserved_paths

std::vector<nlohmann::json::json_pointer> JSON_SETTINGS::m_preserved_paths
protectedinherited

A list of JSON pointers that are preserved during a read-update-write to disk.

Definition at line 324 of file json_settings.h.

◆ m_resetParamsIfMissing

bool JSON_SETTINGS::m_resetParamsIfMissing
protectedinherited

Whether or not to set parameters to their default value if missing from JSON on Load()

Definition at line 315 of file json_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), and JSON_SETTINGS::Load().

◆ m_schemaVersion

int JSON_SETTINGS::m_schemaVersion
protectedinherited

◆ m_SilkClearance

◆ m_SolderMaskMargin

◆ m_SolderMaskMinWidth

◆ m_SolderPasteMargin

◆ m_SolderPasteMarginRatio

◆ m_stackup

BOARD_STACKUP BOARD_DESIGN_SETTINGS::m_stackup
private

the description of layers stackup, for board fabrication only physical layers are in layers stackup.

It includes not only layers enabled for the board edition, but also dielectric layers

Definition at line 811 of file board_design_settings.h.

Referenced by GetStackupDescriptor(), and initFromOther().

◆ m_TextItalic

◆ m_TextSize

◆ m_TextThickness

◆ m_TextUpright

◆ m_TrackMinWidth

◆ m_trackWidthIndex

unsigned BOARD_DESIGN_SETTINGS::m_trackWidthIndex
private

◆ m_TrackWidthList

◆ m_UseConnectedTrackWidth

◆ m_useCustomDiffPair

bool BOARD_DESIGN_SETTINGS::m_useCustomDiffPair
private

◆ m_useCustomTrackVia

◆ m_ViasDimensionsList

◆ m_viaSizeIndex

unsigned BOARD_DESIGN_SETTINGS::m_viaSizeIndex
private

◆ m_ViasMinAnnulus

◆ m_ViasMinSize

◆ m_writeFile

bool JSON_SETTINGS::m_writeFile
protectedinherited

◆ m_ZoneFillVersion

int BOARD_DESIGN_SETTINGS::m_ZoneFillVersion

Option to select different fill algorithms.

There are currently two supported values: 5:

  • Use thick outlines around filled polygons (gives smoothest shape but at the expense of processing time and slight infidelity when exporting)
  • Use zone outline when knocking out higher-priority zones (just wrong, but mimics legacy behavior. 6:
  • No thick outline.
  • Use filled areas when knocking out higher-priority zones.

Definition at line 731 of file board_design_settings.h.

Referenced by BOARD_DESIGN_SETTINGS(), ZONE_FILLER::buildCopperItemClearances(), ZONE_FILLER::Fill(), initFromOther(), PCB_PARSER::parseSetup(), PANEL_SETUP_FEATURE_CONSTRAINTS::TransferDataFromWindow(), and PANEL_SETUP_FEATURE_CONSTRAINTS::TransferDataToWindow().

◆ m_ZoneKeepExternalFillets


The documentation for this class was generated from the following files: