KiCad PCB EDA Suite
Loading...
Searching...
No Matches
advanced_config.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright The KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, you may find one here:
18 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
19 * or you may search the http://www.gnu.org website for the version 2 license,
20 * or you may write to the Free Software Foundation, Inc.,
21 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
22 */
23
24#include <advanced_config.h>
25#include <trace_helpers.h>
26#include <config_params.h>
27#include <paths.h>
28
29#include <wx/app.h>
30#include <wx/config.h>
31#include <wx/filename.h>
32#include <wx/log.h>
33#include <wx/tokenzr.h>
34
35/*
36 * Flag to enable advanced config debugging
37 *
38 * Use "KICAD_ADVANCED_CONFIG" to enable.
39 *
40 * @ingroup trace_env_vars
41 */
42static const wxChar AdvancedConfigMask[] = wxT( "KICAD_ADVANCED_CONFIG" );
43
49namespace AC_STACK
50{
51 static constexpr int min_stack = 32 * 4096;
52 static constexpr int default_stack = 256 * 4096;
53 static constexpr int max_stack = 4096 * 4096;
54}
55
61namespace AC_KEYS
62{
63
64static const wxChar IncrementalConnectivity[] = wxT( "IncrementalConnectivity" );
65static const wxChar Use3DConnexionDriver[] = wxT( "3DConnexionDriver" );
66static const wxChar ExtraFillMargin[] = wxT( "ExtraFillMargin" );
67static const wxChar EnableCreepageSlot[] = wxT( "EnableCreepageSlot" );
68static const wxChar DRCEpsilon[] = wxT( "DRCEpsilon" );
69static const wxChar DRCSliverWidthTolerance[] = wxT( "DRCSliverWidthTolerance" );
70static const wxChar DRCSliverMinimumLength[] = wxT( "DRCSliverMinimumLength" );
71static const wxChar DRCSliverAngleTolerance[] = wxT( "DRCSliverAngleTolerance" );
72static const wxChar HoleWallThickness[] = wxT( "HoleWallPlatingThickness" );
73static const wxChar CoroutineStackSize[] = wxT( "CoroutineStackSize" );
74static const wxChar ShowRouterDebugGraphics[] = wxT( "ShowRouterDebugGraphics" );
75static const wxChar EnableRouterDump[] = wxT( "EnableRouterDump" );
76static const wxChar HyperZoom[] = wxT( "HyperZoom" );
77static const wxChar CompactFileSave[] = wxT( "CompactSave" );
78static const wxChar DrawArcAccuracy[] = wxT( "DrawArcAccuracy" );
79static const wxChar DrawArcCenterStartEndMaxAngle[] = wxT( "DrawArcCenterStartEndMaxAngle" );
80static const wxChar MaxTangentTrackAngleDeviation[] = wxT( "MaxTangentTrackAngleDeviation" );
81static const wxChar MaxTrackLengthToKeep[] = wxT( "MaxTrackLengthToKeep" );
82static const wxChar StrokeTriangulation[] = wxT( "StrokeTriangulation" );
83static const wxChar ExtraZoneDisplayModes[] = wxT( "ExtraZoneDisplayModes" );
84static const wxChar MinPlotPenWidth[] = wxT( "MinPlotPenWidth" );
85static const wxChar DebugZoneFiller[] = wxT( "DebugZoneFiller" );
86static const wxChar DebugPDFWriter[] = wxT( "DebugPDFWriter" );
87static const wxChar SmallDrillMarkSize[] = wxT( "SmallDrillMarkSize" );
88static const wxChar HotkeysDumper[] = wxT( "HotkeysDumper" );
89static const wxChar DrawBoundingBoxes[] = wxT( "DrawBoundingBoxes" );
90static const wxChar ShowPcbnewExportNetlist[] = wxT( "ShowPcbnewExportNetlist" );
91static const wxChar Skip3DModelFileCache[] = wxT( "Skip3DModelFileCache" );
92static const wxChar Skip3DModelMemoryCache[] = wxT( "Skip3DModelMemoryCache" );
93static const wxChar HideVersionFromTitle[] = wxT( "HideVersionFromTitle" );
94static const wxChar TraceMasks[] = wxT( "TraceMasks" );
95static const wxChar ShowRepairSchematic[] = wxT( "ShowRepairSchematic" );
96static const wxChar ShowEventCounters[] = wxT( "ShowEventCounters" );
97static const wxChar AllowManualCanvasScale[] = wxT( "AllowManualCanvasScale" );
98static const wxChar UpdateUIEventInterval[] = wxT( "UpdateUIEventInterval" );
99static const wxChar V3DRT_BevelHeight_um[] = wxT( "V3DRT_BevelHeight_um" );
100static const wxChar V3DRT_BevelExtentFactor[] = wxT( "V3DRT_BevelExtentFactor" );
101static const wxChar EnablePcbDesignBlocks[] = wxT( "EnablePcbDesignBlocks" );
102static const wxChar EnableGenerators[] = wxT( "EnableGenerators" );
103static const wxChar EnableLibWithText[] = wxT( "EnableLibWithText" );
104static const wxChar EnableLibDir[] = wxT( "EnableLibDir" );
105static const wxChar DisambiguationTime[] = wxT( "DisambiguationTime" );
106static const wxChar PcbSelectionVisibilityRatio[] = wxT( "PcbSelectionVisibilityRatio" );
107static const wxChar FontErrorSize[] = wxT( "FontErrorSize" );
108static const wxChar OcePluginLinearDeflection[] = wxT( "OcePluginLinearDeflection" );
109static const wxChar OcePluginAngularDeflection[] = wxT( "OcePluginAngularDeflection" );
110static const wxChar TriangulateSimplificationLevel[] = wxT( "TriangulateSimplificationLevel" );
111static const wxChar TriangulateMinimumArea[] = wxT( "TriangulateMinimumArea" );
112static const wxChar EnableCacheFriendlyFracture[] = wxT( "EnableCacheFriendlyFracture" );
113static const wxChar EnableAPILogging[] = wxT( "EnableAPILogging" );
114static const wxChar MaxFileSystemWatchers[] = wxT( "MaxFileSystemWatchers" );
115static const wxChar MinorSchematicGraphSize[] = wxT( "MinorSchematicGraphSize" );
116static const wxChar ResolveTextRecursionDepth[] = wxT( "ResolveTextRecursionDepth" );
117static const wxChar EnableExtensionSnaps[] = wxT( "EnableExtensionSnaps" );
118static const wxChar ExtensionSnapTimeoutMs[] = wxT( "ExtensionSnapTimeoutMs" );
119static const wxChar ExtensionSnapActivateOnHover[] = wxT( "ExtensionSnapActivateOnHover" );
120static const wxChar EnableSnapAnchorsDebug[] = wxT( "EnableSnapAnchorsDebug" );
121static const wxChar MinParallelAngle[] = wxT( "MinParallelAngle" );
122static const wxChar HoleWallPaintingMultiplier[] = wxT( "HoleWallPaintingMultiplier" );
123static const wxChar MsgPanelShowUuids[] = wxT( "MsgPanelShowUuids" );
124static const wxChar MaximumThreads[] = wxT( "MaximumThreads" );
126 wxT( "NetInspectorBulkUpdateOptimisationThreshold" );
127static const wxChar ExcludeFromSimulationLineWidth[] = wxT( "ExcludeFromSimulationLineWidth" );
128static const wxChar GitIconRefreshInterval[] = wxT( "GitIconRefreshInterval" );
129static const wxChar ConfigurableToolbars[] = wxT( "ConfigurableToolbars" );
130static const wxChar MaxPastedTextLength[] = wxT( "MaxPastedTextLength" );
131static const wxChar PNSProcessClusterTimeout[] = wxT( "PNSProcessClusterTimeout" );
132
133} // namespace KEYS
134
135
140namespace AC_GROUPS
141{
142static const wxChar V3D_RayTracing[] = wxT( "G_3DV_RayTracing" );
143}
144
145/*
146 * Get a simple string for common parameters.
147 *
148 * This isn't exhaustive, but it covers most common types that might be
149 * used in the advance config
150 */
151wxString dumpParamCfg( const PARAM_CFG& aParam )
152{
153 wxString s = aParam.m_Ident + wxS( ": " );
154
155 /*
156 * This implementation is rather simplistic, but it is
157 * effective enough for simple uses. A better implementation would be
158 * some kind of visitor, but that's somewhat more work.
159 */
160 switch( aParam.m_Type )
161 {
164 s << *static_cast<const PARAM_CFG_INT&>( aParam ).m_Pt_param;
165 break;
167 s << *static_cast<const PARAM_CFG_DOUBLE&>( aParam ).m_Pt_param;
168 break;
170 s << *static_cast<const PARAM_CFG_WXSTRING&>( aParam ).m_Pt_param;
171 break;
173 s << *static_cast<const PARAM_CFG_FILENAME&>( aParam ).m_Pt_param;
174 break;
176 s << ( *static_cast<const PARAM_CFG_BOOL&>( aParam ).m_Pt_param ? wxS( "true" )
177 : wxS( "false" ) );
178 break;
179 default: s << wxS( "Unsupported PARAM_CFG variant: " ) << aParam.m_Type;
180 }
181
182 return s;
183}
184
185
189static void dumpCfg( const std::vector<PARAM_CFG*>& aArray )
190{
191 // only dump if we need to
192 if( !wxLog::IsAllowedTraceMask( AdvancedConfigMask ) )
193 return;
194
195 for( const PARAM_CFG* param : aArray )
196 {
197 wxLogTrace( AdvancedConfigMask, dumpParamCfg( *param ) );
198 }
199}
200
201
207static wxFileName getAdvancedCfgFilename()
208{
209 const static wxString cfg_filename{ wxS( "kicad_advanced" ) };
210 return wxFileName( PATHS::GetUserSettingsPath(), cfg_filename );
211}
212
213
215{
216 wxLogTrace( AdvancedConfigMask, wxS( "Init advanced config" ) );
217
218 // Init defaults - this is done in case the config doesn't exist,
219 // then the values will remain as set here.
222 m_EnableRouterDump = false;
223 m_HyperZoom = false;
224 m_DrawArcAccuracy = 10.0;
227 m_MaxTrackLengthToKeep = 0.0005;
230
231 m_ExtraClearance = 0.0005;
232 m_EnableCreepageSlot = false;
233 m_DRCEpsilon = 0.0005; // 0.5um is small enough not to materially violate
234 // any constraints.
236 m_SliverMinimumLength = 0.0008;
238
239 m_HoleWallThickness = 0.020; // IPC-6012 says 15-18um; Cadence says at least
240 // 0.020 for a Class 2 board and at least 0.025
241 // for Class 3.
242
243 m_MinPlotPenWidth = 0.0212; // 1 pixel at 1200dpi.
244
245 m_DebugZoneFiller = false;
246 m_DebugPDFWriter = false;
248 m_HotkeysDumper = false;
249 m_DrawBoundingBoxes = false;
255 m_ShowEventCounters = false;
257 m_CompactSave = false;
259 m_ShowRepairSchematic = false;
261 m_EnableGenerators = false;
262 m_EnableLibWithText = false;
263 m_EnableLibDir = false;
264
266 m_3DRT_BevelExtentFactor = 1.0 / 16.0;
267
268 m_EnableAPILogging = false;
269
271
273
275
277
278 m_FontErrorSize = 2;
279
282
285
287
289
291
293
298
299 m_MinParallelAngle = 0.001;
301
303
305
307
309
311
313
315
316 m_PNSProcessClusterTimeout = 100; // Default: 100 ms
317
319}
320
321
323{
324 static ADVANCED_CFG instance;
325 return instance;
326}
327
328
330{
331 const wxFileName k_advanced = getAdvancedCfgFilename();
332
333 // If we are running headless, use the class defaults because we cannot instantiate wxConfig
334 if( !wxTheApp )
335 return;
336
337 if( !k_advanced.FileExists() )
338 {
339 wxLogTrace( AdvancedConfigMask, wxS( "File does not exist %s" ), k_advanced.GetFullPath() );
340
341 // load the defaults
342 wxConfig emptyConfig;
343 loadSettings( emptyConfig );
344
345 return;
346 }
347
348 wxLogTrace( AdvancedConfigMask, wxS( "Loading advanced config from: %s" ),
349 k_advanced.GetFullPath() );
350
351 wxFileConfig file_cfg( wxS( "" ), wxS( "" ), k_advanced.GetFullPath() );
352 loadSettings( file_cfg );
353}
354
355
356void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
357{
358 std::vector<PARAM_CFG*> configParams;
359
360 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::ExtraFillMargin,
362 m_ExtraClearance, 0.0, 1.0 ) );
363
364 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableCreepageSlot,
366
367
368 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCEpsilon,
369 &m_DRCEpsilon, m_DRCEpsilon, 0.0, 1.0 ) );
370
371 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverWidthTolerance,
373 0.01, 0.25 ) );
374
375 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverMinimumLength,
377 1e-9, 10 ) );
378
379 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverAngleTolerance,
381 1.0, 90.0 ) );
382
383 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::HoleWallThickness,
385 0.0, 1.0 ) );
386
387 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::CoroutineStackSize,
390
391 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::UpdateUIEventInterval,
393 -1, 100000 ) );
394
395 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowRouterDebugGraphics,
398
399 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableRouterDump,
401
402 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::HyperZoom,
404
405 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::CompactFileSave,
407
408 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DrawArcAccuracy,
410 0.0, 100000.0 ) );
411
412 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DrawArcCenterStartEndMaxAngle,
414 m_DrawArcCenterMaxAngle, 0.0, 100000.0 ) );
415
416 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MaxTangentTrackAngleDeviation,
418 m_MaxTangentAngleDeviation, 0.0, 90.0 ) );
419
420 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MaxTrackLengthToKeep,
422 0.0, 1.0 ) );
423
424 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ExtraZoneDisplayModes,
427
428 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::StrokeTriangulation,
431
432 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MinPlotPenWidth,
434 0.0, 1.0 ) );
435
436 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::DebugZoneFiller,
438
439 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::DebugPDFWriter,
441
442 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::SmallDrillMarkSize,
444 0.0, 3.0 ) );
445
446 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::HotkeysDumper,
448
449 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::DrawBoundingBoxes,
451
452 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowPcbnewExportNetlist,
455
456 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::Skip3DModelFileCache,
458
459 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::Skip3DModelMemoryCache,
462
463 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::HideVersionFromTitle,
465
466 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowRepairSchematic,
468
469 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowEventCounters,
471
472 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::AllowManualCanvasScale,
475
476 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::V3DRT_BevelHeight_um,
478 0, std::numeric_limits<int>::max(),
480
481 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::V3DRT_BevelExtentFactor,
483 m_3DRT_BevelExtentFactor, 0.0, 100.0,
485
486 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::Use3DConnexionDriver,
488
489 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::IncrementalConnectivity,
492
493 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::DisambiguationTime,
496 50, 10000 ) );
497
498 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnablePcbDesignBlocks, &m_EnablePcbDesignBlocks,
500
501 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableGenerators,
503
504 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableAPILogging,
506
507 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableLibWithText,
509
510 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableLibDir,
512
513 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::PcbSelectionVisibilityRatio,
515 m_PcbSelectionVisibilityRatio, 0.0, 1.0 ) );
516
517 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::FontErrorSize,
519 m_FontErrorSize, 0.01, 100 ) );
520
521 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::OcePluginLinearDeflection,
523 m_OcePluginLinearDeflection, 0.01, 1.0 ) );
524
525 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::OcePluginAngularDeflection,
527 m_OcePluginAngularDeflection, 0.01, 360.0 ) );
528
529 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::TriangulateSimplificationLevel,
532
533 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::TriangulateMinimumArea,
535 m_TriangulateMinimumArea, 25, 100000 ) );
536
537 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableCacheFriendlyFracture,
540
541 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::MaxFileSystemWatchers,
543 0, 2147483647 ) );
544
545 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::MinorSchematicGraphSize,
548 0, 2147483647 ) );
549
550 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::ResolveTextRecursionDepth,
553
554 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableExtensionSnaps,
557
558 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::ExtensionSnapTimeoutMs,
561
562 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ExtensionSnapActivateOnHover,
565
566 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableSnapAnchorsDebug,
569
570 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MinParallelAngle,
572 0.0, 45.0 ) );
573
574 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::HoleWallPaintingMultiplier,
577 0.1, 100.0 ) );
578
579 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::MsgPanelShowUuids,
582
583 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::MaximumThreads,
585 0, 500 ) );
586
587 configParams.push_back(
591
592 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::ExcludeFromSimulationLineWidth,
595
596 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::GitIconRefreshInterval,
598 m_GitIconRefreshInterval, 0, 100000 ) );
599
600 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ConfigurableToolbars,
603
604 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::MaxPastedTextLength,
606 m_MaxPastedTextLength, 0, 100000 ) );
607
608 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::PNSProcessClusterTimeout,
609 &m_PNSProcessClusterTimeout, 100, 10, 10000 ) );
610
611 // Special case for trace mask setting...we just grab them and set them immediately
612 // Because we even use wxLogTrace inside of advanced config
613 wxString traceMasks;
614 configParams.push_back( new PARAM_CFG_WXSTRING( true, AC_KEYS::TraceMasks, &traceMasks,
615 wxS( "" ) ) );
616
617 // Load the config from file
618 wxConfigLoadSetups( &aCfg, configParams );
619
620 // Now actually set the trace masks
621 wxStringTokenizer traceMaskTokenizer( traceMasks, wxS( "," ) );
622
623 while( traceMaskTokenizer.HasMoreTokens() )
624 {
625 wxString mask = traceMaskTokenizer.GetNextToken();
626 wxLog::AddTraceMask( mask );
627 }
628
629 dumpCfg( configParams );
630
631 for( PARAM_CFG* param : configParams )
632 delete param;
633
634 wxLogTrace( kicadTraceCoroutineStack, wxT( "Using coroutine stack size %d" ),
636}
637
638
static void dumpCfg(const std::vector< PARAM_CFG * > &aArray)
Dump the configs in the given array to trace.
wxString dumpParamCfg(const PARAM_CFG &aParam)
static const wxChar AdvancedConfigMask[]
static wxFileName getAdvancedCfgFilename()
Get the filename for the advanced config file.
void loadFromConfigFile()
Load the config from the normal configuration file.
void loadSettings(wxConfigBase &aCfg)
Load config from the given configuration base.
static const ADVANCED_CFG & GetCfg()
Get the singleton instance's config, which is shared by all consumers.
Configuration object for booleans.
Configuration object for double precision floating point numbers.
Configuration object for integers.
Configuration object for wxString objects.
A base class which establishes the interface functions ReadParam and SaveParam, which are implemented...
Definition: config_params.h:80
paramcfg_id m_Type
Type of parameter.
wxString m_Ident
Keyword in config data.
static wxString GetUserSettingsPath()
Return the user configuration path used to store KiCad's configuration files.
Definition: paths.cpp:592
void wxConfigLoadSetups(wxConfigBase *aCfg, const std::vector< PARAM_CFG * > &aList)
Use aList of PARAM_CFG object to load configuration values from aCfg.
@ PARAM_WXSTRING
Definition: config_params.h:58
@ PARAM_INT_WITH_SCALE
Definition: config_params.h:54
@ PARAM_INT
Definition: config_params.h:53
@ PARAM_FILENAME
Definition: config_params.h:60
@ PARAM_DOUBLE
Definition: config_params.h:55
@ PARAM_BOOL
Definition: config_params.h:56
bool m_Skip3DModelFileCache
Skip reading/writing 3D model file caches.
bool m_ShowRepairSchematic
Enable showing schematic repair output.
double m_DrawArcCenterMaxAngle
When drawing an arc, the angle ( center - start ) - ( start - end ) can be limited to avoid extremely...
int m_DisambiguationMenuDelay
The number of milliseconds to wait in a click before showing a disambiguation menu.
bool m_EnableLibDir
Enable option to open lib file directory.
double m_MaxTangentAngleDeviation
Maximum angle between the tangent line of an arc track and a connected straight track in order to com...
bool m_Use3DConnexionDriver
Use the 3DConnexion Driver.
int m_TriangulateSimplificationLevel
The number of internal units that will be allowed to deflect from the base segment when creating a ne...
bool m_EnableCacheFriendlyFracture
Enable the use of a cache-friendlier and therefore faster version of the polygon fracture algorithm.
bool m_ShowRouterDebugGraphics
Show PNS router debug graphics while routing.
bool m_Skip3DModelMemoryCache
Skip reading/writing 3D model memory caches.
double m_HoleWallPaintingMultiplier
What factor to use when painting via and PTH pad hole walls, so that the painted hole wall can be ove...
bool m_EnableLibWithText
Enable option to load lib files with text editor.
int m_MaximumThreads
Default value for the maximum number of threads to use for parallel processing.
double m_HoleWallThickness
Dimension used to calculate the actual hole size from the finish hole size.
int m_CoroutineStackSize
Configure the coroutine stack size in bytes.
double m_SmallDrillMarkSize
The diameter of the drill marks on print and plot outputs (in mm) when the "Drill marks" option is se...
bool m_ConfigurableToolbars
Enable the UI to configure toolbars.
bool m_EnableGenerators
Enable support for generators.
bool m_IncrementalConnectivity
Use the new incremental netlister for realtime jobs.
double m_ExtraClearance
When filling zones, we add an extra amount of clearance to each zone to ensure that rounding errors d...
int m_TriangulateMinimumArea
The minimum area of a polygon that can be left over after triangulation and still consider the triang...
bool m_DrawBoundingBoxes
Draw GAL bounding boxes in painters.
bool m_EnableRouterDump
Enable PNS router to dump state information for debug purpose (press 0 while routing)
double m_DRCEpsilon
Epsilon for DRC tests.
int m_GitIconRefreshInterval
The interval in milliseconds to refresh the git icons in the project tree.
double m_SliverAngleTolerance
Sliver angle to tolerance for DRC.
bool m_AllowManualCanvasScale
Allow manual scaling of canvas.
double m_SliverWidthTolerance
Sliver width tolerance for DRC.
double m_OcePluginLinearDeflection
OCE (STEP/IGES) 3D Plugin Tesselation Linear Deflection.
bool m_EnablePcbDesignBlocks
Enable the new PCB Design Blocks feature.
double m_MinParallelAngle
Minimum overlapping angle for which an arc is considered to be parallel to its paired arc.
int m_ExcludeFromSimulationLineWidth
The line width in mils for the exclude from simulation outline.
int m_MinorSchematicGraphSize
Set the number of items in a schematic graph for it to be considered "minor".
int m_NetInspectorBulkUpdateOptimisationThreshold
When updating the net inspector, it either recalculates all nets or iterates through items one-by-one...
bool m_ExtraZoneDisplayModes
When true, adds zone-display-modes for stroking the zone fracture boundaries and the zone triangulati...
double m_MinPlotPenWidth
Absolute minimum pen width for plotting.
double m_SliverMinimumLength
Sliver length tolerance for DRC.
double m_MaxTrackLengthToKeep
Maximum track length to keep after doing an arc track resizing operation.
double m_DrawArcAccuracy
Distance from an arc end point and the estimated end point, when rotating from the start point to the...
bool m_HotkeysDumper
Enable the hotkeys dumper feature for generating documentation.
double m_FontErrorSize
Deviation between font's bezier curve ideal and the poligonized curve.
int m_UpdateUIEventInterval
The update interval the wxWidgets sends wxUpdateUIEvents to windows.
double m_3DRT_BevelExtentFactor
3D-Viewer raytracing factor applied to Extent.z of the item layer.
double m_OcePluginAngularDeflection
OCE (STEP/IGES) 3D Plugin Tesselation Angular Deflection.
bool m_EnableSnapAnchorsDebug
Enable snap anchors debug visualization.
bool m_ShowPcbnewExportNetlist
Enable exporting board editor netlist to a file for troubleshooting purposes.
int m_ResolveTextRecursionDepth
The number of recursions to resolve text variables.
int m_MaxFilesystemWatchers
Maximum number of filesystem watchers to use.
bool m_DebugPDFWriter
A mode that writes PDFs without compression.
int m_MsgPanelShowUuids
Show UUIDs of items in the message panel.
int m_PNSProcessClusterTimeout
Timeout for the PNS router's processCluster wallclock timeout, in milliseconds.
bool m_EnableCreepageSlot
Enable the minimum slot width check for creepage.
bool m_EnableAPILogging
Log IPC API requests and responses.
bool m_ShowEventCounters
Shows debugging event counters in various places.
int m_MaxPastedTextLength
Set the maximum number of characters that can be pasted without warning.
bool m_HyperZoom
Slide the zoom steps over for debugging things "up close".
bool m_DrawTriangulationOutlines
Enable drawing the triangulation outlines with a visible color.
bool m_ExtensionSnapActivateOnHover
If extension snaps are enabled, 'activate' items on hover, even if not near a snap point.
double m_MinimumMarkerSeparationDistance
When finding overlapped marker a minium distance (in mm) between two DRC markers required to mark it ...
double m_PcbSelectionVisibilityRatio
Board object selection visibility limit.
int m_3DRT_BevelHeight_um
Set the bevel height of layer items in 3D viewer when ray tracing.
bool m_EnableExtensionSnaps
Enable snap anchors based on item line extensions.
bool m_CompactSave
Save files in compact display mode.
bool m_HideVersionFromTitle
Hide the build version from the KiCad manager frame title.
int m_ExtensionSnapTimeoutMs
If extension snaps are enabled, this is the timeout in milliseconds before a hovered item gets extens...
bool m_DebugZoneFiller
A mode that dumps the various stages of a F_Cu fill into In1_Cu through In9_Cu.
const wxChar *const kicadTraceCoroutineStack
Flag to enable tracing of the coroutine call stack.
List of known groups for advanced configuration options.
static const wxChar V3D_RayTracing[]
List of known keys for advanced configuration options.
static const wxChar DebugPDFWriter[]
static const wxChar HotkeysDumper[]
static const wxChar EnableAPILogging[]
static const wxChar ExtensionSnapActivateOnHover[]
static const wxChar ShowRepairSchematic[]
static const wxChar HideVersionFromTitle[]
static const wxChar PNSProcessClusterTimeout[]
static const wxChar AllowManualCanvasScale[]
static const wxChar NetInspectorBulkUpdateOptimisationThreshold[]
static const wxChar MaxTangentTrackAngleDeviation[]
static const wxChar MaxTrackLengthToKeep[]
static const wxChar EnableLibDir[]
static const wxChar ShowPcbnewExportNetlist[]
static const wxChar EnablePcbDesignBlocks[]
static const wxChar EnableLibWithText[]
static const wxChar DrawBoundingBoxes[]
static const wxChar MaxPastedTextLength[]
static const wxChar EnableGenerators[]
static const wxChar MinPlotPenWidth[]
static const wxChar CoroutineStackSize[]
static const wxChar HoleWallThickness[]
static const wxChar DRCSliverWidthTolerance[]
static const wxChar DisambiguationTime[]
static const wxChar HyperZoom[]
static const wxChar IncrementalConnectivity[]
static const wxChar MinParallelAngle[]
static const wxChar DebugZoneFiller[]
static const wxChar OcePluginLinearDeflection[]
static const wxChar StrokeTriangulation[]
static const wxChar CompactFileSave[]
static const wxChar EnableExtensionSnaps[]
static const wxChar DRCSliverAngleTolerance[]
static const wxChar UpdateUIEventInterval[]
static const wxChar V3DRT_BevelHeight_um[]
static const wxChar MinorSchematicGraphSize[]
static const wxChar ShowRouterDebugGraphics[]
static const wxChar FontErrorSize[]
static const wxChar DRCEpsilon[]
static const wxChar EnableSnapAnchorsDebug[]
static const wxChar V3DRT_BevelExtentFactor[]
static const wxChar EnableRouterDump[]
static const wxChar DrawArcAccuracy[]
static const wxChar Skip3DModelMemoryCache[]
static const wxChar TriangulateSimplificationLevel[]
static const wxChar ExtraZoneDisplayModes[]
static const wxChar MaxFileSystemWatchers[]
static const wxChar ExcludeFromSimulationLineWidth[]
static const wxChar Skip3DModelFileCache[]
static const wxChar EnableCacheFriendlyFracture[]
static const wxChar HoleWallPaintingMultiplier[]
static const wxChar ResolveTextRecursionDepth[]
static const wxChar SmallDrillMarkSize[]
static const wxChar EnableCreepageSlot[]
static const wxChar DrawArcCenterStartEndMaxAngle[]
static const wxChar ExtraFillMargin[]
static const wxChar PcbSelectionVisibilityRatio[]
static const wxChar TriangulateMinimumArea[]
static const wxChar OcePluginAngularDeflection[]
static const wxChar ExtensionSnapTimeoutMs[]
static const wxChar DRCSliverMinimumLength[]
static const wxChar ShowEventCounters[]
static const wxChar MaximumThreads[]
static const wxChar GitIconRefreshInterval[]
static const wxChar TraceMasks[]
static const wxChar Use3DConnexionDriver[]
static const wxChar MsgPanelShowUuids[]
static const wxChar ConfigurableToolbars[]
Limits and default settings for the coroutine stack size allowed.
static constexpr int min_stack
static constexpr int max_stack
static constexpr int default_stack
wxLogTrace helper definitions.