KiCad PCB EDA Suite
BOARD_DESIGN_SETTINGS Class Reference

BOARD_DESIGN_SETTINGS contains 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 ()
 
int GetSeverity (int aDRCErrorCode)
 
bool Ignore (int aDRCErrorCode)
 returns 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
 Function GetDefault. More...
 
const wxString & GetCurrentNetClassName () const
 Function GetCurrentNetClassName. More...
 
bool UseNetClassTrack () const
 Function UseNetClassTrack returns true if netclass values should be used to obtain appropriate track width. More...
 
bool UseNetClassVia () const
 Function UseNetClassVia returns true if netclass values should be used to obtain appropriate via size. More...
 
bool UseNetClassDiffPair () const
 Function UseNetClassDiffPair returns true if netclass values should be used to obtain appropriate diff pair dimensions. More...
 
int GetBiggestClearanceValue ()
 Function GetBiggestClearanceValue. More...
 
int GetSmallestClearanceValue ()
 Function GetSmallestClearanceValue. More...
 
int GetCurrentMicroViaSize ()
 Function GetCurrentMicroViaSize. More...
 
int GetCurrentMicroViaDrill ()
 Function GetCurrentMicroViaDrill. More...
 
unsigned GetTrackWidthIndex () const
 Function GetTrackWidthIndex. More...
 
void SetTrackWidthIndex (unsigned aIndex)
 Function SetTrackWidthIndex sets the current track width list index to aIndex. More...
 
int GetCurrentTrackWidth () const
 Function GetCurrentTrackWidth. More...
 
void SetCustomTrackWidth (int aWidth)
 Function SetCustomTrackWidth Sets custom width for track (i.e. More...
 
int GetCustomTrackWidth () const
 Function GetCustomTrackWidth. More...
 
unsigned GetViaSizeIndex () const
 Function GetViaSizeIndex. More...
 
void SetViaSizeIndex (unsigned aIndex)
 Function SetViaSizeIndex sets the current via size list index to aIndex. More...
 
int GetCurrentViaSize () const
 Function GetCurrentViaSize. More...
 
void SetCustomViaSize (int aSize)
 Function SetCustomViaSize Sets custom size for via diameter (i.e. More...
 
int GetCustomViaSize () const
 Function GetCustomViaSize. More...
 
int GetCurrentViaDrill () const
 Function GetCurrentViaDrill. More...
 
void SetCustomViaDrill (int aDrill)
 Function SetCustomViaDrill Sets custom size for via drill (i.e. More...
 
int GetCustomViaDrill () const
 Function GetCustomViaDrill. More...
 
void UseCustomTrackViaSize (bool aEnabled)
 Function UseCustomTrackViaSize Enables/disables custom track/via size settings. More...
 
bool UseCustomTrackViaSize () const
 Function UseCustomTrackViaSize. More...
 
unsigned GetDiffPairIndex () const
 Function GetDiffPairIndex. More...
 
void SetDiffPairIndex (unsigned aIndex)
 Function SetDiffPairIndex. More...
 
void SetCustomDiffPairWidth (int aWidth)
 Function SetCustomDiffPairWidth Sets custom track width for differential pairs (i.e. More...
 
int GetCustomDiffPairWidth ()
 Function GetCustomDiffPairWidth. More...
 
void SetCustomDiffPairGap (int aGap)
 Function SetCustomDiffPairGap Sets custom gap for differential pairs (i.e. More...
 
int GetCustomDiffPairGap ()
 Function GetCustomDiffPairGap. More...
 
void SetCustomDiffPairViaGap (int aGap)
 Function SetCustomDiffPairViaGap Sets custom via gap for differential pairs (i.e. More...
 
int GetCustomDiffPairViaGap ()
 Function GetCustomDiffPairViaGap. More...
 
void UseCustomDiffPairDimensions (bool aEnabled)
 Function UseCustomDiffPairDimensions Enables/disables custom differential pair dimensions. More...
 
bool UseCustomDiffPairDimensions () const
 Function UseCustomDiffPairDimensions. More...
 
int GetCurrentDiffPairWidth () const
 Function GetCurrentDiffPairWidth. More...
 
int GetCurrentDiffPairGap () const
 Function GetCurrentDiffPairGap. More...
 
int GetCurrentDiffPairViaGap () const
 Function GetCurrentDiffPairViaGap. More...
 
void SetMinHoleSeparation (int aDistance)
 Function SetMinHoleSeparation. More...
 
void SetCopperEdgeClearance (int aDistance)
 Function SetCopperEdgeClearance. More...
 
void SetSilkClearance (int aDistance)
 Function SetSilkEdgeClearance. More...
 
LSET GetEnabledLayers () const
 Function GetEnabledLayers returns a bit-mask of all the layers that are enabled. More...
 
void SetEnabledLayers (LSET aMask)
 Function SetEnabledLayers changes the bit-mask of enabled layers. More...
 
bool IsLayerEnabled (PCB_LAYER_ID aLayerId) const
 Function IsLayerEnabled tests whether a given layer is enabled. More...
 
int GetCopperLayerCount () const
 Function GetCopperLayerCount. More...
 
void SetCopperLayerCount (int aNewLayerCount)
 Function SetCopperLayerCount do what its name says... 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
 Function GetLineThickness Returns the default graphic segment thickness from the layer class for the given layer. More...
 
wxSize GetTextSize (PCB_LAYER_ID aLayer) const
 Function GetTextSize Returns the default text size from the layer class for the given layer. More...
 
int GetTextThickness (PCB_LAYER_ID aLayer) const
 Function GetTextThickness Returns 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_HoleToHoleMin
 
int m_SilkClearance
 
std::shared_ptr< DRC_ENGINEm_DRCEngine
 
std::map< int, int > m_DRCSeverities
 
std::set< wxString > m_DrcExclusions
 
int m_ZoneFillVersion
 
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 defualt settings that will be used for new zones. More...
 

Detailed Description

BOARD_DESIGN_SETTINGS contains design settings for a BOARD object.

Definition at line 220 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 
147 
148  for( int errorCode = DRCE_FIRST; errorCode <= DRCE_LAST; ++errorCode )
149  m_DRCSeverities[ errorCode ] = RPT_SEVERITY_ERROR;
150 
154 
157 
162 
163  m_MaxError = ARC_HIGH_DEF;
164  m_ZoneFillVersion = 6; // Use new algo by default to fill zones
165  m_ZoneKeepExternalFillets = false; // Use new algo by default. Legacy boards might
166  // want to set it to true for old algo....
167 
168  // Global mask margins:
171  m_SolderPasteMargin = 0; // Solder paste margin absolute value
172  m_SolderPasteMarginRatio = 0.0; // Solder paste margin as a ratio of pad size
173  // The final margin is the sum of these 2 values
174  // Usually < 0 because the mask is smaller than pad
175  // Layer thickness for 3D viewer
177 
178  m_viaSizeIndex = 0;
179  m_trackWidthIndex = 0;
180  m_diffPairIndex = 0;
181 
182  // Parameters stored in JSON in the project file
183 
184  // NOTE: Previously, BOARD_DESIGN_SETTINGS stored the basic board layer information (layer
185  // names and enable/disable state) in the project file even though this information is also
186  // stored in the board file. This was implemented for importing these settings from another
187  // project. Going forward, the import feature will just import from other board files (since
188  // we could have multi-board projects in the future anyway) so this functionality is dropped.
189 
190  m_params.emplace_back( new PARAM<bool>( "rules.allow_microvias", &m_MicroViasAllowed, false ) );
191 
192  m_params.emplace_back( new PARAM<bool>( "rules.allow_blind_buried_vias",
193  &m_BlindBuriedViaAllowed, false ) );
194 
195  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_clearance", &m_MinClearance,
197  MM_PER_IU ) );
198 
199  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_track_width", &m_TrackMinWidth,
201  MM_PER_IU ) );
202 
203  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_via_annular_width", &m_ViasMinAnnulus,
205  MM_PER_IU ) );
206 
207  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_via_diameter", &m_ViasMinSize,
209  MM_PER_IU ) );
210 
211  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_through_hole_diameter",
213  Millimeter2iu( 25.0 ), MM_PER_IU ) );
214 
215  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_microvia_diameter",
217  Millimeter2iu( 10.0 ), MM_PER_IU ) );
218 
219  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_microvia_drill", &m_MicroViasMinDrill,
221  Millimeter2iu( 10.0 ), MM_PER_IU ) );
222 
223  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_hole_to_hole", &m_HoleToHoleMin,
225  MM_PER_IU ) );
226 
227  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_silk_clearance", &m_SilkClearance,
229  MM_PER_IU ) );
230 
231  // Note: a clearance of -0.01 is a flag indicating we should use the legacy (pre-6.0) method
232  // based on the edge cut thicknesses.
233  m_params.emplace_back( new PARAM_SCALED<int>( "rules.min_copper_edge_clearance",
235  Millimeter2iu( -0.01 ), Millimeter2iu( 25.0 ), MM_PER_IU ) );
236 
237  m_params.emplace_back( new PARAM_SCALED<int>( "rules.solder_mask_clearance",
239  Millimeter2iu( -1.0 ), Millimeter2iu( 1.0 ), MM_PER_IU ) );
240 
241  m_params.emplace_back( new PARAM_SCALED<int>( "rules.solder_mask_min_width",
243  Millimeter2iu( 1.0 ), MM_PER_IU ) );
244 
245  m_params.emplace_back( new PARAM_SCALED<int>( "rules.solder_paste_clearance",
247  Millimeter2iu( -1.0 ), Millimeter2iu( 1.0 ), MM_PER_IU ) );
248 
249  m_params.emplace_back( new PARAM<double>( "rules.solder_paste_margin_ratio",
251 
252  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "rule_severities",
253  [&]() -> nlohmann::json
254  {
255  nlohmann::json ret = {};
256 
257  for( const RC_ITEM& item : DRC_ITEM::GetItemsWithSeverities() )
258  {
259  int code = item.GetErrorCode();
260 
261  if( !m_DRCSeverities.count( code ) )
262  continue;
263 
264  wxString name = item.GetSettingsKey();
265 
266  ret[std::string( name.ToUTF8() )] =
267  SeverityToString( static_cast<SEVERITY>( m_DRCSeverities[code] ) );
268  }
269 
270  return ret;
271  },
272  [&]( const nlohmann::json& aJson )
273  {
274  if( !aJson.is_object() )
275  return;
276 
277  for( const RC_ITEM& item : DRC_ITEM::GetItemsWithSeverities() )
278  {
279  wxString name = item.GetSettingsKey();
280  std::string key( name.ToUTF8() );
281 
282  if( aJson.contains( key ) )
283  m_DRCSeverities[item.GetErrorCode()] = SeverityFromString( aJson[key] );
284  }
285  }, {} ) );
286 
287  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "drc_exclusions",
288  [&]() -> nlohmann::json
289  {
290  nlohmann::json js = nlohmann::json::array();
291 
292  for( const auto& entry : m_DrcExclusions )
293  js.push_back( entry );
294 
295  return js;
296  },
297  [&]( const nlohmann::json& aObj )
298  {
299  m_DrcExclusions.clear();
300 
301  if( !aObj.is_array() )
302  return;
303 
304  for( const nlohmann::json& entry : aObj )
305  {
306  if( entry.empty() )
307  continue;
308 
309  m_DrcExclusions.insert( entry.get<wxString>() );
310  }
311  },
312  {} ) );
313 
314  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "track_widths",
315  [&]() -> nlohmann::json
316  {
317  nlohmann::json js = nlohmann::json::array();
318 
319  for( const int& width : m_TrackWidthList )
320  js.push_back( Iu2Millimeter( width ) );
321 
322  return js;
323  },
324  [&]( const nlohmann::json& aJson )
325  {
326  if( !aJson.is_array() )
327  return;
328 
329  m_TrackWidthList.clear();
330 
331  for( const nlohmann::json& entry : aJson )
332  {
333  if( entry.empty() )
334  continue;
335 
336  m_TrackWidthList.emplace_back( Millimeter2iu( entry.get<double>() ) );
337  }
338  },
339  {} ) );
340 
341  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "via_dimensions",
342  [&]() -> nlohmann::json
343  {
344  nlohmann::json js = nlohmann::json::array();
345 
346  for( const auto& via : m_ViasDimensionsList )
347  {
348  nlohmann::json entry = {};
349 
350  entry["diameter"] = Iu2Millimeter( via.m_Diameter );
351  entry["drill"] = Iu2Millimeter( via.m_Drill );
352 
353  js.push_back( entry );
354  }
355 
356  return js;
357  },
358  [&]( const nlohmann::json& aObj )
359  {
360  if( !aObj.is_array() )
361  return;
362 
363  m_ViasDimensionsList.clear();
364 
365  for( const nlohmann::json& entry : aObj )
366  {
367  if( entry.empty() || !entry.is_object() )
368  continue;
369 
370  if( !entry.contains( "diameter" ) || !entry.contains( "drill" ) )
371  continue;
372 
373  int diameter = Millimeter2iu( entry["diameter"].get<double>() );
374  int drill = Millimeter2iu( entry["drill"].get<double>() );
375 
376  m_ViasDimensionsList.emplace_back( VIA_DIMENSION( diameter, drill ) );
377  }
378  },
379  {} ) );
380 
381  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "diff_pair_dimensions",
382  [&]() -> nlohmann::json
383  {
384  nlohmann::json js = nlohmann::json::array();
385 
386  for( const auto& pair : m_DiffPairDimensionsList )
387  {
388  nlohmann::json entry = {};
389 
390  entry["width"] = Iu2Millimeter( pair.m_Width );
391  entry["gap"] = Iu2Millimeter( pair.m_Gap );
392  entry["via_gap"] = Iu2Millimeter( pair.m_ViaGap );
393 
394  js.push_back( entry );
395  }
396 
397  return js;
398  },
399  [&]( const nlohmann::json& aObj )
400  {
401  if( !aObj.is_array() )
402  return;
403 
404  m_DiffPairDimensionsList.clear();
405 
406  for( const nlohmann::json& entry : aObj )
407  {
408  if( entry.empty() || !entry.is_object() )
409  continue;
410 
411  if( !entry.contains( "width" ) || !entry.contains( "gap" )
412  || !entry.contains( "via_gap" ) )
413  continue;
414 
415  int width = Millimeter2iu( entry["width"].get<double>() );
416  int gap = Millimeter2iu( entry["gap"].get<double>() );
417  int via_gap = Millimeter2iu( entry["via_gap"].get<double>() );
418 
419  m_DiffPairDimensionsList.emplace_back(
420  DIFF_PAIR_DIMENSION( width, gap, via_gap ) );
421  }
422  },
423  {} ) );
424 
425  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.silk_line_width",
427  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
428 
429  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.silk_text_size_v",
431  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
432 
433  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.silk_text_size_h",
435  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
436 
437  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.silk_text_thickness",
439  TEXTS_MAX_WIDTH, MM_PER_IU ) );
440 
441  m_params.emplace_back( new PARAM<bool>( "defaults.silk_text_italic",
442  &m_TextItalic[LAYER_CLASS_SILK], false ) );
443 
444  m_params.emplace_back( new PARAM<bool>( "defaults.silk_text_upright",
445  &m_TextUpright[ LAYER_CLASS_SILK ], true ) );
446 
447  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.copper_line_width",
449  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
450 
451  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.copper_text_size_v",
453  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
454 
455  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.copper_text_size_h",
457  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
458 
459  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.copper_text_thickness",
461  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
462 
463  m_params.emplace_back( new PARAM<bool>( "defaults.copper_text_italic",
464  &m_TextItalic[LAYER_CLASS_COPPER], false ) );
465 
466  m_params.emplace_back( new PARAM<bool>( "defaults.copper_text_upright",
467  &m_TextUpright[LAYER_CLASS_COPPER], true ) );
468 
469  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.board_outline_line_width",
471  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
472 
473  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.courtyard_line_width",
475  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
476 
477  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.fab_line_width",
479  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
480 
481  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.fab_text_size_v",
483  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
484 
485  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.fab_text_size_h",
487  TEXTS_MIN_SIZE, TEXTS_MAX_SIZE, MM_PER_IU ) );
488 
489  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.fab_text_thickness",
491  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
492 
493  m_params.emplace_back( new PARAM<bool>( "defaults.fab_text_italic",
494  &m_TextItalic[LAYER_CLASS_FAB], false ) );
495 
496  m_params.emplace_back( new PARAM<bool>( "defaults.fab_text_upright",
497  &m_TextUpright[LAYER_CLASS_FAB], true ) );
498 
499  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.other_line_width",
501  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
502 
503  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.other_text_size_v",
505  TEXTS_MAX_SIZE, MM_PER_IU ) );
506 
507  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.other_text_size_h",
509  TEXTS_MAX_SIZE, MM_PER_IU ) );
510 
511  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.other_text_thickness",
513  Millimeter2iu( 0.01 ), Millimeter2iu( 5.0 ), MM_PER_IU ) );
514 
515  m_params.emplace_back( new PARAM<bool>( "defaults.other_text_italic",
516  &m_TextItalic[LAYER_CLASS_OTHERS], false ) );
517 
518  m_params.emplace_back( new PARAM<bool>( "defaults.other_text_upright",
519  &m_TextUpright[LAYER_CLASS_OTHERS], true ) );
520 
521  m_params.emplace_back( new PARAM_ENUM<DIM_UNITS_MODE>( "defaults.dimension_units",
524 
525  m_params.emplace_back( new PARAM<int>( "defaults.dimension_precision",
526  &m_DimensionPrecision, 4, 0, 5 ) );
527 
528  m_params.emplace_back( new PARAM_ENUM<DIM_UNITS_FORMAT>( "defaults.dimensions.units_format",
531 
532  m_params.emplace_back( new PARAM<bool>( "defaults.dimensions.suppress_zeroes",
533  &m_DimensionSuppressZeroes, false ) );
534 
535  // NOTE: excluding DIM_TEXT_POSITION::MANUAL from the valid range here
536  m_params.emplace_back( new PARAM_ENUM<DIM_TEXT_POSITION>( "defaults.dimensions.text_position",
539 
540  m_params.emplace_back( new PARAM<bool>( "defaults.dimensions.keep_text_aligned",
541  &m_DimensionKeepTextAligned, true ) );
542 
543  m_params.emplace_back( new PARAM<int>( "defaults.dimensions.arrow_length",
545  Mils2iu( DEFAULT_DIMENSION_ARROW_LENGTH ) ) );
546 
547  m_params.emplace_back( new PARAM<int>( "defaults.dimensions.extension_offset",
550 
551  m_params.emplace_back( new PARAM<bool>( "defaults.zones.45_degree_only",
553 
554  m_params.emplace_back( new PARAM_SCALED<int>( "defaults.zones.min_clearance",
556  Millimeter2iu( 0.0 ), Millimeter2iu( 25.0 ), MM_PER_IU ) );
557 
558  m_params.emplace_back( new PARAM_LAMBDA<nlohmann::json>( "defaults.pads",
559  [&]() -> nlohmann::json
560  {
561  nlohmann::json ret =
562  {
563  { "width", Iu2Millimeter( m_Pad_Master.GetSize().x ) },
564  { "height", Iu2Millimeter( m_Pad_Master.GetSize().y ) },
565  { "drill", Iu2Millimeter( m_Pad_Master.GetDrillSize().x ) }
566  };
567 
568  return ret;
569  },
570  [&]( const nlohmann::json& aJson )
571  {
572  if( aJson.contains( "width" ) && aJson.contains( "height" )
573  && aJson.contains( "drill" ) )
574  {
575  wxSize sz;
576  sz.SetWidth( Millimeter2iu( aJson["width"].get<double>() ) );
577  sz.SetHeight( Millimeter2iu( aJson["height"].get<double>() ) );
578 
579  m_Pad_Master.SetSize( sz );
580 
581  int drill = Millimeter2iu( aJson["drill"].get<double>() );
582 
583  m_Pad_Master.SetDrillSize( wxSize( drill, drill ) );
584  }
585  }, {} ) );
586 
587  m_params.emplace_back( new PARAM_SCALED<int>( "rules.max_error", &m_MaxError, ARC_HIGH_DEF,
588  Millimeter2iu( 0.0001 ), Millimeter2iu( 1.0 ), MM_PER_IU ) );
589 
590  // TODO: replace with zones_fill_version parameter and migrate zones_use_no_outline?
591  m_params.emplace_back( new PARAM_LAMBDA<bool>( "zones_use_no_outline",
592  [this]() -> bool
593  {
594  return m_ZoneFillVersion >= 6;
595  },
596  [this]( bool aVal )
597  {
598  m_ZoneFillVersion = aVal ? 6 : 5;
599  },
600  6 ) );
601 
602  m_params.emplace_back( new PARAM<bool>( "zones_allow_external_fillets",
603  &m_ZoneKeepExternalFillets, false ) );
604 
605  registerMigration( 0, 1, std::bind( &BOARD_DESIGN_SETTINGS::migrateSchema0to1, this ) );
606 }
#define DEFAULT_EDGE_WIDTH
#define DEFAULT_SILK_TEXT_WIDTH
void SetCopperLayerCount(int aNewLayerCount)
Function SetCopperLayerCount do what its name says...
#define DEFAULT_TRACKMINWIDTH
Struct VIA_DIMENSION is a small helper container to handle a stock of specific vias each with unique ...
#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 defualt 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:225
DIFF_PAIR_DIMENSION m_customDiffPair
#define DEFAULT_CUSTOMDPAIRGAP
VIATYPE m_CurrentViaType
(VIA_BLIND_BURIED, VIA_THROUGH, VIA_MICROVIA)
nlohmann::json json
Definition: gerbview.cpp:39
Struct DIFF_PAIR_DIMENSION is a small helper container to handle a stock of specific differential pai...
#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:236
#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:235
const wxSize & GetSize() const
Definition: pad.h:226
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]
std::map< int, int > m_DRCSeverities
Text appears in line with the dimension line.
#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:46
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
SEVERITY SeverityFromString(const wxString &aSeverity)
Definition: ui_common.cpp:35
static std::vector< std::reference_wrapper< RC_ITEM > > GetItemsWithSeverities()
Definition: drc_item.h:102
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_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_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 609 of file board_design_settings.cpp.

610 {
611  if( m_parent )
612  {
614  m_parent = nullptr;
615  }
616 }
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 619 of file board_design_settings.cpp.

619  :
620  NESTED_SETTINGS( "board_design_settings", bdsSchemaVersion, aOther.m_parent,
621  aOther.m_path ),
622  m_Pad_Master( nullptr )
623 {
624  initFromOther( aOther );
625 }
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 656 of file json_settings.cpp.

657 {
658  wxLogTrace( traceSettings, "AddNestedSettings %s", aSettings->GetFilename() );
659  m_nested_settings.push_back( aSettings );
660 }
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 568 of file json_settings.cpp.

570 {
571  ValueType val;
572 
573  if( aConfig->Read( aKey, &val ) )
574  {
575  try
576  {
577  ( *this )[PointerFromString( aDest )] = val;
578  }
579  catch( ... )
580  {
581  wxASSERT_MSG( false, wxT( "Could not write value in fromLegacy!" ) );
582  return false;
583  }
584 
585  return true;
586  }
587 
588  return false;
589 }
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 628 of file json_settings.cpp.

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

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 604 of file json_settings.cpp.

606 {
607  wxString str;
608 
609  if( aConfig->Read( aKey, &str ) )
610  {
611  try
612  {
613  ( *this )[PointerFromString( aDest )] = str.ToUTF8();
614  }
615  catch( ... )
616  {
617  wxASSERT_MSG( false, wxT( "Could not write value in fromLegacyString!" ) );
618  return false;
619  }
620 
621  return true;
622  }
623 
624  return false;
625 }
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 686 of file json_settings.cpp.

687 {
688  if( OPT<nlohmann::json> opt_json = GetJson( aPath ) )
689  return wxString( opt_json->get<std::string>().c_str(), wxConvUTF8 );
690 
691  return NULLOPT;
692 }
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 ( )

Function GetBiggestClearanceValue.

Returns
the biggest clearance value found in NetClasses list

Definition at line 847 of file board_design_settings.cpp.

848 {
849  DRC_CONSTRAINT constraint;
850 
851  if( m_DRCEngine )
852  m_DRCEngine->QueryWorstConstraint( CLEARANCE_CONSTRAINT, constraint );
853 
854  return constraint.Value().HasMin() ? constraint.Value().Min() : 0;
855 }
bool HasMin() const
Definition: minoptmax.h:35
MINOPTMAX< int > & Value()
Definition: drc_rule.h:121
T Min() const
Definition: minoptmax.h:31
std::shared_ptr< DRC_ENGINE > m_DRCEngine

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

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

◆ GetBoardThickness()

◆ GetCopperLayerCount()

int BOARD_DESIGN_SETTINGS::GetCopperLayerCount ( ) const
inline

Function GetCopperLayerCount.

Returns
int - the number of neabled copper layers

Definition at line 798 of file board_design_settings.h.

799  {
800  return m_copperLayerCount;
801  }
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::onViaCommand().

◆ GetCurrentDiffPairGap()

int BOARD_DESIGN_SETTINGS::GetCurrentDiffPairGap ( ) const
inline

Function GetCurrentDiffPairGap.

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 720 of file board_design_settings.h.

721  {
722  if( m_useCustomDiffPair )
723  return m_customDiffPair.m_Gap;
724  else
726  }
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
DIFF_PAIR_DIMENSION m_customDiffPair

References m_diffPairIndex, and DIFF_PAIR_DIMENSION::m_Gap.

◆ GetCurrentDiffPairViaGap()

int BOARD_DESIGN_SETTINGS::GetCurrentDiffPairViaGap ( ) const
inline

Function GetCurrentDiffPairViaGap.

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 734 of file board_design_settings.h.

735  {
736  if( m_useCustomDiffPair )
737  return m_customDiffPair.m_ViaGap;
738  else
739  return m_DiffPairDimensionsList[m_diffPairIndex].m_ViaGap;
740  }
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
DIFF_PAIR_DIMENSION m_customDiffPair

References m_diffPairIndex, and DIFF_PAIR_DIMENSION::m_ViaGap.

◆ GetCurrentDiffPairWidth()

int BOARD_DESIGN_SETTINGS::GetCurrentDiffPairWidth ( ) const
inline

Function GetCurrentDiffPairWidth.

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 706 of file board_design_settings.h.

707  {
708  if( m_useCustomDiffPair )
709  return m_customDiffPair.m_Width;
710  else
712  }
std::vector< DIFF_PAIR_DIMENSION > m_DiffPairDimensionsList
DIFF_PAIR_DIMENSION m_customDiffPair

References m_diffPairIndex, and DIFF_PAIR_DIMENSION::m_Width.

◆ GetCurrentMicroViaDrill()

int BOARD_DESIGN_SETTINGS::GetCurrentMicroViaDrill ( )

Function GetCurrentMicroViaDrill.

Returns
the current micro via drill, that is the current netclass value

Definition at line 877 of file board_design_settings.cpp.

878 {
879  NETCLASSPTR netclass = GetNetClasses().Find( m_currentNetClassName );
880 
881  return netclass->GetuViaDrill();
882 }
wxString m_currentNetClassName
Current net class name used to display netclass info.
NETCLASSPTR Find(const wxString &aName) const
Function Find searches 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 ( )

Function GetCurrentMicroViaSize.

Returns
the current micro via size, that is the current netclass value

Definition at line 869 of file board_design_settings.cpp.

870 {
871  NETCLASSPTR netclass = GetNetClasses().Find( m_currentNetClassName );
872 
873  return netclass->GetuViaDiameter();
874 }
wxString m_currentNetClassName
Current net class name used to display netclass info.
NETCLASSPTR Find(const wxString &aName) const
Function Find searches 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

Function GetCurrentNetClassName.

Returns
the current net class name.

Definition at line 412 of file board_design_settings.h.

413  {
414  return m_currentNetClassName;
415  }
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

Function GetCurrentTrackWidth.

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 925 of file board_design_settings.cpp.

926 {
927  if( m_useCustomTrackVia )
928  return m_customTrackWidth;
929  else if( m_trackWidthIndex == 0 )
931  else
933 }
std::vector< int > m_TrackWidthList
int GetTrackWidth() const
Definition: netclass.h:163
NETCLASSES & GetNetClasses() const
NETCLASS * GetDefaultPtr() const
Definition: netclass.h:271

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

Function GetCurrentViaDrill.

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 903 of file board_design_settings.cpp.

904 {
905  int drill;
906 
907  if( m_useCustomTrackVia )
908  drill = m_customViaSize.m_Drill;
909  else if( m_viaSizeIndex == 0 )
910  drill = GetNetClasses().GetDefaultPtr()->GetViaDrill();
911  else
912  drill = m_ViasDimensionsList[ m_viaSizeIndex ].m_Drill;
913 
914  return drill > 0 ? drill : -1;
915 }
int GetViaDrill() const
Definition: netclass.h:171
NETCLASSES & GetNetClasses() const
NETCLASS * GetDefaultPtr() const
Definition: netclass.h:271
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(), PNS_KICAD_IFACE_BASE::ImportSizes(), ROUTER_TOOL::onViaCommand(), and PCB_EDIT_FRAME::SetTrackSegmentWidth().

◆ GetCurrentViaSize()

int BOARD_DESIGN_SETTINGS::GetCurrentViaSize ( ) const

Function GetCurrentViaSize.

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 892 of file board_design_settings.cpp.

893 {
894  if( m_useCustomTrackVia )
896  else if( m_viaSizeIndex == 0 )
898  else
899  return m_ViasDimensionsList[ m_viaSizeIndex ].m_Diameter;
900 }
NETCLASSES & GetNetClasses() const
NETCLASS * GetDefaultPtr() const
Definition: netclass.h:271
int GetViaDiameter() const
Definition: netclass.h:167
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(), PNS_KICAD_IFACE_BASE::ImportSizes(), ROUTER_TOOL::onViaCommand(), 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 656 of file board_design_settings.h.

657  {
658  return m_customDiffPair.m_Gap;
659  }
DIFF_PAIR_DIMENSION m_customDiffPair

References DIFF_PAIR_DIMENSION::m_Gap.

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ GetCustomDiffPairViaGap()

int BOARD_DESIGN_SETTINGS::GetCustomDiffPairViaGap ( )
inline

Function GetCustomDiffPairViaGap.

Returns
Current custom via gap width for differential pairs.

Definition at line 676 of file board_design_settings.h.

References DIFF_PAIR_DIMENSION::m_Gap, and DIFF_PAIR_DIMENSION::m_ViaGap.

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ GetCustomDiffPairWidth()

int BOARD_DESIGN_SETTINGS::GetCustomDiffPairWidth ( )
inline

Function GetCustomDiffPairWidth.

Returns
Current custom track width for differential pairs.

Definition at line 636 of file board_design_settings.h.

637  {
638  return m_customDiffPair.m_Width;
639  }
DIFF_PAIR_DIMENSION m_customDiffPair

References DIFF_PAIR_DIMENSION::m_Width.

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ GetCustomTrackWidth()

int BOARD_DESIGN_SETTINGS::GetCustomTrackWidth ( ) const
inline

Function GetCustomTrackWidth.

Returns
Current custom width for a track.

Definition at line 508 of file board_design_settings.h.

509  {
510  return m_customTrackWidth;
511  }

References m_customTrackWidth.

Referenced by DIALOG_TRACK_VIA_SIZE::TransferDataToWindow().

◆ GetCustomViaDrill()

int BOARD_DESIGN_SETTINGS::GetCustomViaDrill ( ) const
inline

Function GetCustomViaDrill.

Returns
Current custom size for the via drill.

Definition at line 583 of file board_design_settings.h.

584  {
585  return m_customViaSize.m_Drill;
586  }

References VIA_DIMENSION::m_Drill.

Referenced by DIALOG_TRACK_VIA_SIZE::TransferDataToWindow().

◆ GetCustomViaSize()

int BOARD_DESIGN_SETTINGS::GetCustomViaSize ( ) const
inline

Function GetCustomViaSize.

Returns
Current custom size for the via diameter.

Definition at line 554 of file board_design_settings.h.

555  {
557  }

References VIA_DIMENSION::m_Diameter.

Referenced by DIALOG_TRACK_VIA_SIZE::TransferDataToWindow().

◆ GetDefault()

◆ GetDefaultZoneSettings()

ZONE_SETTINGS& BOARD_DESIGN_SETTINGS::GetDefaultZoneSettings ( )
inline

Definition at line 389 of file board_design_settings.h.

390  {
391  return m_defaultZoneSettings;
392  }
ZONE_SETTINGS m_defaultZoneSettings
The defualt 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

Function GetDiffPairIndex.

Returns
the current diff pair dimension list index.

Definition at line 613 of file board_design_settings.h.

613 { return m_diffPairIndex; }

References m_diffPairIndex.

Referenced by DIFF_PAIR_MENU::update().

◆ GetDRCEpsilon()

int BOARD_DESIGN_SETTINGS::GetDRCEpsilon ( ) const

Definition at line 1004 of file board_design_settings.cpp.

1005 {
1006  return Millimeter2iu( ADVANCED_CFG::GetCfg().m_DRCEpsilon );
1007 }
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

Function GetEnabledLayers returns a bit-mask of all the layers that are enabled.

Returns
int - the enabled layers in bit-mapped form.

Definition at line 768 of file board_design_settings.h.

769  {
770  return m_enabledLayers;
771  }
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 79 of file json_settings.cpp.

80 {
81  return wxString( m_filename + "." + getFileExt() );
82 }
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 acutal hole size.

Definition at line 1010 of file board_design_settings.cpp.

1011 {
1012  return Millimeter2iu( ADVANCED_CFG::GetCfg().m_HoleWallThickness );
1013 }
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::GetHolePlatingThicknessBIU(), getShape(), PNS_KICAD_IFACE_BASE::syncPad(), 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 417 of file json_settings.cpp.

418 {
419  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
420 
421  if( this->contains( ptr ) )
422  {
423  try
424  {
425  return OPT<nlohmann::json>{ this->at( ptr ) };
426  }
427  catch( ... )
428  {
429  }
430  }
431 
432  return OPT<nlohmann::json>{};
433 }
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 987 of file board_design_settings.cpp.

988 {
989  if( aLayer == F_SilkS || aLayer == B_SilkS )
990  return LAYER_CLASS_SILK;
991  else if( IsCopperLayer( aLayer ) )
992  return LAYER_CLASS_COPPER;
993  else if( aLayer == Edge_Cuts )
994  return LAYER_CLASS_EDGES;
995  else if( aLayer == F_CrtYd || aLayer == B_CrtYd )
996  return LAYER_CLASS_COURTYARD;
997  else if( aLayer == F_Fab || aLayer == B_Fab )
998  return LAYER_CLASS_FAB;
999  else
1000  return LAYER_CLASS_OTHERS;
1001 }
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

Function GetLineThickness Returns the default graphic segment thickness from the layer class for the given layer.

Definition at line 1016 of file board_design_settings.cpp.

1017 {
1018  return m_LineThickness[ GetLayerClass( aLayer ) ];
1019 }
int GetLayerClass(PCB_LAYER_ID aLayer) const
int m_LineThickness[LAYER_CLASS_COUNT]

References GetLayerClass(), and m_LineThickness.

Referenced by DRAWING_TOOL::getSegmentWidth(), ALTIUM_PCB::HelperCreateBoardOutline(), EAGLE_PLUGIN::loadPlain(), CADSTAR_PCB_ARCHIVE_LOADER::loadTemplates(), DIALOG_PAD_PROPERTIES::onAddPrimitive(), EAGLE_PLUGIN::packageWire(), PCB_EDITOR_CONTROL::PlaceTarget(), DIALOG_PLOT::Plot(), and DIALOG_GLOBAL_EDIT_TEXT_AND_GRAPHICS::processItem().

◆ 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 ( )

Function GetSmallestClearanceValue.

Returns
the smallest clearance value found in NetClasses list

Definition at line 858 of file board_design_settings.cpp.

859 {
860  int clearance = GetDefault()->GetClearance();
861 
862  for( const std::pair<const wxString, NETCLASSPTR>& netclass : GetNetClasses().NetClasses() )
863  clearance = std::min( clearance, netclass.second->GetClearance() );
864 
865  return clearance;
866 }
NETCLASSES & GetNetClasses() const
int GetClearance() const
Definition: netclass.h:159
NETCLASS * GetDefault() const
Function GetDefault.

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

Referenced by DIALOG_PLOT::init_Dialog().

◆ GetStackupDescriptor()

◆ GetTextItalic()

bool BOARD_DESIGN_SETTINGS::GetTextItalic ( PCB_LAYER_ID  aLayer) const

◆ GetTextSize()

wxSize BOARD_DESIGN_SETTINGS::GetTextSize ( PCB_LAYER_ID  aLayer) const

Function GetTextSize Returns the default text size from the layer class for the given layer.

Definition at line 1022 of file board_design_settings.cpp.

1023 {
1024  return m_TextSize[ GetLayerClass( aLayer ) ];
1025 }
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

Function GetTextThickness Returns the default text thickness from the layer class for the given layer.

Definition at line 1028 of file board_design_settings.cpp.

1029 {
1030  return m_TextThickness[ GetLayerClass( aLayer ) ];
1031 }
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)

returns true if the DRC error code's severity is SEVERITY_IGNORE

Definition at line 841 of file board_design_settings.cpp.

842 {
843  return m_DRCSeverities[ aDRCErrorCode ] == RPT_SEVERITY_IGNORE;
844 }
std::map< int, int > 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 635 of file board_design_settings.cpp.

636 {
637  // Copy of NESTED_SETTINGS around is not allowed, so let's just update the params.
648  m_ViasMinSize = aOther.m_ViasMinSize;
659  m_MaxError = aOther.m_MaxError;
665 
666  std::copy( std::begin( aOther.m_LineThickness ), std::end( aOther.m_LineThickness ),
667  std::begin( m_LineThickness ) );
668 
669  std::copy( std::begin( aOther.m_TextSize ), std::end( aOther.m_TextSize ),
670  std::begin( m_TextSize ) );
671 
672  std::copy( std::begin( aOther.m_TextThickness ), std::end( aOther.m_TextThickness ),
673  std::begin( m_TextThickness ) );
674 
675  std::copy( std::begin( aOther.m_TextItalic ), std::end( aOther.m_TextItalic ),
676  std::begin( m_TextItalic ) );
677 
678  std::copy( std::begin( aOther.m_TextUpright ), std::end( aOther.m_TextUpright ),
679  std::begin( m_TextUpright ) );
680 
689 
690  m_AuxOrigin = aOther.m_AuxOrigin;
691  m_GridOrigin = aOther.m_GridOrigin;
692  m_HasStackup = aOther.m_HasStackup;
693 
706  m_stackup = aOther.m_stackup;
707 
708  // Only take the pointer from the other if it isn't the default
709  if( aOther.m_netClasses == &aOther.m_internalNetClasses )
711  else
712  m_netClasses = aOther.m_netClasses;
713 
715 }
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 defualt 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, int > 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_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

Function IsLayerEnabled tests whether a given layer is enabled.

Parameters
aLayerId= The layer to be tested
Returns
bool - true if the layer is enabled

Definition at line 786 of file board_design_settings.h.

787  {
788  if( aLayerId >= 0 && aLayerId < PCB_LAYER_ID_COUNT )
789  return m_enabledLayers[aLayerId];
790 
791  return false;
792  }
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 85 of file json_settings.cpp.

86 {
87  for( auto param : m_params )
88  {
89  try
90  {
91  param->Load( this, m_resetParamsIfMissing );
92  }
93  catch( ... )
94  {
95  // Skip unreadable parameters in file
96  wxLogTrace( traceSettings, "param '%s' load err", param->GetJsonPath().c_str() );
97  }
98  }
99 }
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 769 of file board_design_settings.cpp.

770 {
771  bool ret = NESTED_SETTINGS::LoadFromFile( aDirectory );
772 
773  // A number of things won't have been translated by the PROJECT_FILE migration because of
774  // descoped objects required to decode this data. So, it will be in the legacy.pcbnew
775  // section and needs to be pulled out here
776 
777  PROJECT_FILE* project = dynamic_cast<PROJECT_FILE*>( GetParent() );
778 
779  if( !project )
780  return ret;
781 
782  bool migrated = false;
783 
784  auto drcName =
785  []( int aCode ) -> std::string
786  {
787  std::shared_ptr<DRC_ITEM> item = DRC_ITEM::Create( aCode );
788  wxString name = item->GetSettingsKey();
789  return std::string( name.ToUTF8() );
790  };
791 
792  std::string bp = "board.design_settings.rule_severities.";
793  std::string rs = "rule_severities.";
794 
795  if( OPT<bool> v =
796  project->Get<bool>( PointerFromString( bp + "legacy_no_courtyard_defined" ) ) )
797  {
798  if( *v )
799  ( *this )[PointerFromString( rs + drcName( DRCE_MISSING_COURTYARD ) )] = "error";
800  else
801  ( *this )[PointerFromString( rs + drcName( DRCE_MISSING_COURTYARD ) )] = "ignore";
802 
803  project->erase( PointerFromString( bp + "legacy_no_courtyard_defined" ) );
804  migrated = true;
805  }
806 
807  if( OPT<bool> v = project->Get<bool>( PointerFromString( bp + "legacy_courtyards_overlap" ) ) )
808  {
809  if( *v )
810  ( *this )[PointerFromString( rs + drcName( DRCE_OVERLAPPING_FOOTPRINTS ) )] = "error";
811  else
812  ( *this )[PointerFromString( rs + drcName( DRCE_OVERLAPPING_FOOTPRINTS ) )] = "ignore";
813 
814  project->erase( PointerFromString( bp + "legacy_courtyards_overlap" ) );
815  migrated = true;
816  }
817 
818  if( project->contains( "legacy" ) )
819  {
820  // This defaults to false for new boards, but version 5.1.x and prior kept the fillets
821  // so we do the same for legacy boards.
823 
824  project->at( "legacy" ).erase( "pcbnew" );
825  }
826 
827  // Now that we have everything, we need to load again
828  if( migrated )
829  Load();
830 
831  return ret;
832 }
static std::shared_ptr< DRC_ITEM > Create(int aErrorCode)
Constructs a DRC_ITEM for the given error code.
Definition: drc_item.cpp:239
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 445 of file json_settings.cpp.

446 {
447  int filever = at( PointerFromString( "meta.version" ) ).get<int>();
448 
449  while( filever < m_schemaVersion )
450  {
451  if( !m_migrators.count( filever ) )
452  {
453  wxLogTrace( traceSettings, "Migrator missing for %s version %d!",
454  typeid( *this ).name(), filever );
455  return false;
456  }
457 
458  std::pair<int, std::function<bool()>> pair = m_migrators.at( filever );
459 
460  if( pair.second() )
461  {
462  wxLogTrace( traceSettings, "Migrated %s from %d to %d", typeid( *this ).name(),
463  filever, pair.first );
464  filever = pair.first;
465  ( *this )[PointerFromString( "meta.version" )] = filever;
466  }
467  else
468  {
469  wxLogTrace( traceSettings, "Migration failed for %s from %d to %d",
470  typeid( *this ).name(), filever, pair.first );
471  return false;
472  }
473  }
474 
475  return true;
476 }
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 479 of file json_settings.cpp.

480 {
481  wxLogTrace( traceSettings,
482  "MigrateFromLegacy() not implemented for %s", typeid( *this ).name() );
483  return false;
484 }
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 718 of file board_design_settings.cpp.

719 {
737  nlohmann::json::json_pointer units_ptr( "/defaults/dimension_units" );
738  nlohmann::json::json_pointer precision_ptr( "/defaults/dimension_precision" );
739 
740  if( !( contains( units_ptr ) && contains( precision_ptr ) &&
741  at( units_ptr ).is_number_integer() &&
742  at( precision_ptr ).is_number_integer() ) )
743  {
744  // if either is missing or invalid, migration doesn't make sense
745  return true;
746  }
747 
748  int units = at( units_ptr ).get<int>();
749  int precision = at( precision_ptr ).get<int>();
750 
751  // The enum maps directly to precision if the units is mils
752  int extraDigits = 0;
753 
754  switch( units )
755  {
756  case 0: extraDigits = 3; break;
757  case 2: extraDigits = 2; break;
758  default: break;
759  }
760 
761  precision += extraDigits;
762 
763  ( *this )[precision_ptr] = precision;
764 
765  return true;
766 }
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 628 of file board_design_settings.cpp.

629 {
630  initFromOther( aOther );
631  return *this;
632 }
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 487 of file json_settings.cpp.

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

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(), 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 436 of file json_settings.cpp.

438 {
439  wxASSERT( aNewSchemaVersion > aOldSchemaVersion );
440  wxASSERT( aNewSchemaVersion <= m_schemaVersion );
441  m_migrators[aOldSchemaVersion] = std::make_pair( aNewSchemaVersion, aMigrator );
442 }
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 663 of file json_settings.cpp.

664 {
665  if( !aSettings )
666  return;
667 
668  auto it = std::find_if( m_nested_settings.begin(), m_nested_settings.end(),
669  [&aSettings]( const JSON_SETTINGS* aPtr ) {
670  return aPtr == aSettings;
671  } );
672 
673  if( it != m_nested_settings.end() )
674  {
675  wxLogTrace( traceSettings, "Flush and release %s", ( *it )->GetFilename() );
676  ( *it )->SaveToFile();
677  m_nested_settings.erase( it );
678  }
679 
680  aSettings->SetParent( nullptr );
681 }
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 311 of file json_settings.cpp.

312 {
313  for( auto param : m_params )
314  param->SetDefault();
315 }
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:39
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 695 of file json_settings.cpp.

696 {
697  ( *this )[PointerFromString( std::move( aPath ) ) ] = aVal.ToUTF8();
698 }
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 811 of file board_design_settings.h.

811 { 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)

Function SetCopperEdgeClearance.

Parameters
aValueThe minimum distance between copper items and board edges.

Definition at line 949 of file board_design_settings.cpp.

950 {
951  m_CopperEdgeClearance = aDistance;
952 }

References m_CopperEdgeClearance.

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

◆ SetCopperLayerCount()

void BOARD_DESIGN_SETTINGS::SetCopperLayerCount ( int  aNewLayerCount)

Function SetCopperLayerCount do what its name says...

Parameters
aNewLayerCount= The new number of enabled copper layers

Definition at line 961 of file board_design_settings.cpp.

962 {
963  m_copperLayerCount = aNewLayerCount;
964 
965  // Update only enabled copper layers mask
966  m_enabledLayers &= ~LSET::AllCuMask();
967 
968  if( aNewLayerCount > 0 )
969  m_enabledLayers |= LSET::AllCuMask( aNewLayerCount );
970 }
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

Function SetCustomDiffPairGap Sets custom gap for differential pairs (i.e.

not available in netclasses or preset list).

Parameters
aGapis the new gap.

Definition at line 647 of file board_design_settings.h.

648  {
649  m_customDiffPair.m_Gap = aGap;
650  }
DIFF_PAIR_DIMENSION m_customDiffPair

References DIFF_PAIR_DIMENSION::m_Gap.

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

◆ SetCustomDiffPairViaGap()

void BOARD_DESIGN_SETTINGS::SetCustomDiffPairViaGap ( int  aGap)
inline

Function SetCustomDiffPairViaGap 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 667 of file board_design_settings.h.

668  {
669  m_customDiffPair.m_ViaGap = aGap;
670  }
DIFF_PAIR_DIMENSION m_customDiffPair

References DIFF_PAIR_DIMENSION::m_ViaGap.

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

◆ SetCustomDiffPairWidth()

void BOARD_DESIGN_SETTINGS::SetCustomDiffPairWidth ( int  aWidth)
inline

Function SetCustomDiffPairWidth 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 627 of file board_design_settings.h.

628  {
629  m_customDiffPair.m_Width = aWidth;
630  }
DIFF_PAIR_DIMENSION m_customDiffPair

References DIFF_PAIR_DIMENSION::m_Width.

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

◆ SetCustomTrackWidth()

void BOARD_DESIGN_SETTINGS::SetCustomTrackWidth ( int  aWidth)
inline

Function SetCustomTrackWidth 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 (UseCustomTrackViaSize()).

Parameters
aWidthis the new track width.

Definition at line 499 of file board_design_settings.h.

500  {
501  m_customTrackWidth = aWidth;
502  }

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

◆ SetCustomViaDrill()

void BOARD_DESIGN_SETTINGS::SetCustomViaDrill ( int  aDrill)
inline

Function SetCustomViaDrill 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 (UseCustomTrackViaSize()).

Parameters
aDrillis the new drill size.

Definition at line 574 of file board_design_settings.h.

575  {
576  m_customViaSize.m_Drill = aDrill;
577  }

References VIA_DIMENSION::m_Drill.

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

◆ SetCustomViaSize()

void BOARD_DESIGN_SETTINGS::SetCustomViaSize ( int  aSize)
inline

Function SetCustomViaSize Sets 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 (UseCustomTrackViaSize()).

Parameters
aSizeis the new drill diameter.

Definition at line 545 of file board_design_settings.h.

546  {
547  m_customViaSize.m_Diameter = aSize;
548  }

References VIA_DIMENSION::m_Diameter.

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

◆ SetDefaultZoneSettings()

void BOARD_DESIGN_SETTINGS::SetDefaultZoneSettings ( const ZONE_SETTINGS aSettings)
inline

Definition at line 394 of file board_design_settings.h.

395  {
396  m_defaultZoneSettings = aSettings;
397  }
ZONE_SETTINGS m_defaultZoneSettings
The defualt 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)

Function SetDiffPairIndex.

Parameters
aIndexis the diff pair dimensions list index to set.

Definition at line 936 of file board_design_settings.cpp.

937 {
938  m_diffPairIndex = std::min( aIndex, (unsigned) 8 );
939  m_useCustomDiffPair = false;
940 }

References m_diffPairIndex, and m_useCustomDiffPair.

Referenced by DIFF_PAIR_MENU::eventHandler().

◆ SetEnabledLayers()

void BOARD_DESIGN_SETTINGS::SetEnabledLayers ( LSET  aMask)

Function SetEnabledLayers changes the bit-mask of enabled layers.

Parameters
aMask= The new bit-mask of enabled layers

Definition at line 973 of file board_design_settings.cpp.

974 {
975  // Back and front layers are always enabled.
976  aMask.set( B_Cu ).set( F_Cu );
977 
978  m_enabledLayers = aMask;
979 
980  // update m_CopperLayerCount to ensure its consistency with m_EnabledLayers
981  m_copperLayerCount = ( aMask & LSET::AllCuMask() ).count();
982 }
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 CADSTAR_PCB_ARCHIVE_LOADER::loadBoardStackup(), and 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 507 of file json_settings.cpp.

509 {
510  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
511 
512  if( aObj.contains( ptr ) && aObj.at( ptr ).is_string() )
513  {
514  aTarget = aObj.at( ptr ).get<wxString>();
515  return true;
516  }
517 
518  return false;
519 }
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 522 of file json_settings.cpp.

524 {
525  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
526 
527  if( aObj.contains( ptr ) && aObj.at( ptr ).is_boolean() )
528  {
529  aTarget = aObj.at( ptr ).get<bool>();
530  return true;
531  }
532 
533  return false;
534 }
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 537 of file json_settings.cpp.

539 {
540  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
541 
542  if( aObj.contains( ptr ) && aObj.at( ptr ).is_number_integer() )
543  {
544  aTarget = aObj.at( ptr ).get<int>();
545  return true;
546  }
547 
548  return false;
549 }
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 552 of file json_settings.cpp.

554 {
555  nlohmann::json::json_pointer ptr = PointerFromString( aPath );
556 
557  if( aObj.contains( ptr ) && aObj.at( ptr ).is_number_unsigned() )
558  {
559  aTarget = aObj.at( ptr ).get<unsigned int>();
560  return true;
561  }
562 
563  return false;
564 }
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)

Function SetMinHoleSeparation.

Parameters
aValueThe minimum distance between the edges of two holes or 0 to disable hole-to-hole separation checking.

Definition at line 943 of file board_design_settings.cpp.

944 {
945  m_HoleToHoleMin = aDistance;
946 }

References m_HoleToHoleMin.

Referenced by PANEL_SETUP_FEATURE_CONSTRAINTS::TransferDataFromWindow().

◆ SetNetClasses()

void BOARD_DESIGN_SETTINGS::SetNetClasses ( NETCLASSES aNetClasses)
inline

Definition at line 381 of file board_design_settings.h.

382  {
383  if( aNetClasses )
384  m_netClasses = aNetClasses;
385  else
387  }
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)

Function SetSilkEdgeClearance.

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

Definition at line 955 of file board_design_settings.cpp.

956 {
957  m_SilkClearance = aDistance;
958 }

References m_SilkClearance.

◆ SetTrackWidthIndex()

void BOARD_DESIGN_SETTINGS::SetTrackWidthIndex ( unsigned  aIndex)

Function SetTrackWidthIndex sets the current track width list index to aIndex.

Parameters
aIndexis the track width list index.

Definition at line 918 of file board_design_settings.cpp.

919 {
920  m_trackWidthIndex = std::min( aIndex, (unsigned) m_TrackWidthList.size() );
921  m_useCustomTrackVia = false;
922 }
std::vector< int > m_TrackWidthList

References m_trackWidthIndex, m_TrackWidthList, and m_useCustomTrackVia.

Referenced by TRACK_WIDTH_MENU::eventHandler(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), PCB_EDIT_FRAME::Tracks_and_Vias_Size_Event(), PCB_EDITOR_CONTROL::TrackWidthDec(), PCB_EDITOR_CONTROL::TrackWidthInc(), and PCB_EDIT_FRAME::UpdateTrackWidthSelectBox().

◆ SetViaSizeIndex()

void BOARD_DESIGN_SETTINGS::SetViaSizeIndex ( unsigned  aIndex)

Function SetViaSizeIndex sets the current via size list index to aIndex.

Parameters
aIndexis the via size list index.

Definition at line 885 of file board_design_settings.cpp.

886 {
887  m_viaSizeIndex = std::min( aIndex, (unsigned) m_ViasDimensionsList.size() );
888  m_useCustomTrackVia = false;
889 }
std::vector< VIA_DIMENSION > m_ViasDimensionsList

References m_useCustomTrackVia, m_ViasDimensionsList, and m_viaSizeIndex.

Referenced by VIA_SIZE_MENU::eventHandler(), TRACK_WIDTH_MENU::eventHandler(), DIALOG_GLOBAL_EDIT_TRACKS_AND_VIAS::processItem(), PCB_EDIT_FRAME::Tracks_and_Vias_Size_Event(), PCB_EDIT_FRAME::UpdateViaSizeSelectBox(), PCB_EDITOR_CONTROL::ViaSizeDec(), and PCB_EDITOR_CONTROL::ViaSizeInc().

◆ 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 297 of file json_settings.cpp.

298 {
299  bool modified = false;
300 
301  for( auto param : m_params )
302  {
303  modified |= !param->MatchesFile( this );
304  param->Store( this );
305  }
306 
307  return modified;
308 }
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

Function UseCustomDiffPairDimensions Enables/disables custom differential pair dimensions.

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

Definition at line 686 of file board_design_settings.h.

687  {
688  m_useCustomDiffPair = aEnabled;
689  }

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

◆ UseCustomDiffPairDimensions() [2/2]

bool BOARD_DESIGN_SETTINGS::UseCustomDiffPairDimensions ( ) const
inline

Function UseCustomDiffPairDimensions.

Returns
True if custom sizes of diff pairs are enabled, false otherwise.

Definition at line 695 of file board_design_settings.h.

696  {
697  return m_useCustomDiffPair;
698  }

References m_useCustomDiffPair.

◆ UseCustomTrackViaSize() [1/2]

void BOARD_DESIGN_SETTINGS::UseCustomTrackViaSize ( bool  aEnabled)
inline

Function UseCustomTrackViaSize Enables/disables custom track/via size settings.

If enabled, values set with SetCustomTrackWidth()/SetCustomViaSize()/SetCustomViaDrill() are used for newly created tracks and vias.

Parameters
aEnableddecides if custom settings should be used for new tracks/vias.

Definition at line 595 of file board_design_settings.h.

596  {
597  m_useCustomTrackVia = aEnabled;
598  }

Referenced by BOARD::BOARD(), ROUTER_TOOL::CustomTrackWidthDialog(), VIA_SIZE_MENU::eventHandler(), TRACK_WIDTH_MENU::eventHandler(), PCB_EDIT_FRAME::OnUpdateSelectAutoWidth(), PCB_EDIT_FRAME::OnUpdateSelectTrackWidth(), PCB_EDIT_FRAME::OnUpdateSelectViaSize(), BOARD::SynchronizeNetsAndNetClasses(), PCB_EDITOR_CONTROL::TrackWidthDec(), PCB_EDITOR_CONTROL::TrackWidthInc(), VIA_SIZE_MENU::update(), TRACK_WIDTH_MENU::update(), PCB_EDITOR_CONTROL::ViaSizeDec(), and PCB_EDITOR_CONTROL::ViaSizeInc().

◆ UseCustomTrackViaSize() [2/2]

bool BOARD_DESIGN_SETTINGS::UseCustomTrackViaSize ( ) const
inline

Function UseCustomTrackViaSize.

Returns
True if custom sizes of tracks & vias are enabled, false otherwise.

Definition at line 604 of file board_design_settings.h.

605  {
606  return m_useCustomTrackVia;
607  }

References m_useCustomTrackVia.

◆ UseNetClassDiffPair()

bool BOARD_DESIGN_SETTINGS::UseNetClassDiffPair ( ) const
inline

Function UseNetClassDiffPair returns true if netclass values should be used to obtain appropriate diff pair dimensions.

Definition at line 439 of file board_design_settings.h.

440  {
441  return ( m_diffPairIndex == 0 && !m_useCustomDiffPair );
442  }

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ UseNetClassTrack()

bool BOARD_DESIGN_SETTINGS::UseNetClassTrack ( ) const
inline

Function UseNetClassTrack returns true if netclass values should be used to obtain appropriate track width.

Definition at line 421 of file board_design_settings.h.

422  {
423  return ( m_trackWidthIndex == 0 && !m_useCustomTrackVia );
424  }

Referenced by PNS_KICAD_IFACE_BASE::ImportSizes().

◆ UseNetClassVia()

bool BOARD_DESIGN_SETTINGS::UseNetClassVia ( ) const
inline

Function UseNetClassVia returns true if netclass values should be used to obtain appropriate via size.

Definition at line 430 of file board_design_settings.h.

431  {
432  return ( m_viaSizeIndex == 0 && !m_useCustomTrackVia );
433  }

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

Member Data Documentation

◆ m_AuxOrigin

◆ m_BlindBuriedViaAllowed

◆ m_boardThickness

int BOARD_DESIGN_SETTINGS::m_boardThickness
private

Board thickness for 3D viewer.

Definition at line 331 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 327 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 335 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 230 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 325 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 defualt settings that will be used for new zones.

Definition at line 350 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 329 of file board_design_settings.h.

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

◆ m_filename

◆ m_GridOrigin

◆ m_HasStackup

◆ 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 344 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 347 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 dielectic layers

Definition at line 341 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

◆ m_ZoneKeepExternalFillets


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