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, see <https://www.gnu.org/licenses/>.
18 */
19
20#include <advanced_config.h>
21#include <trace_helpers.h>
22#include <config_params.h>
23#include <paths.h>
24
25#include <wx/app.h>
26#include <wx/config.h>
27#include <wx/filename.h>
28#include <wx/log.h>
29#include <wx/tokenzr.h>
30
31/*
32 * Flag to enable advanced config debugging
33 *
34 * Use "KICAD_ADVANCED_CONFIG" to enable.
35 *
36 * @ingroup trace_env_vars
37 */
38static const wxChar AdvancedConfigMask[] = wxT( "KICAD_ADVANCED_CONFIG" );
39
45namespace AC_STACK
46{
47static constexpr int min_stack = 32 * 4096;
48static constexpr int default_stack = 256 * 4096;
49static constexpr int max_stack = 4096 * 4096;
50} // namespace AC_STACK
51
57namespace AC_KEYS
58{
59
60static const wxChar IncrementalConnectivity[] = wxT( "IncrementalConnectivity" );
61static const wxChar Use3DConnexionDriver[] = wxT( "3DConnexionDriver" );
62static const wxChar ExtraFillMargin[] = wxT( "ExtraFillMargin" );
63static const wxChar EnableCreepageSlot[] = wxT( "EnableCreepageSlot" );
64static const wxChar RealtimeCreepage[] = wxT( "RealtimeCreepage" );
65static const wxChar DRCEpsilon[] = wxT( "DRCEpsilon" );
66static const wxChar DRCSliverWidthTolerance[] = wxT( "DRCSliverWidthTolerance" );
67static const wxChar DRCSliverMinimumLength[] = wxT( "DRCSliverMinimumLength" );
68static const wxChar DRCSliverAngleTolerance[] = wxT( "DRCSliverAngleTolerance" );
69static const wxChar HoleWallThickness[] = wxT( "HoleWallPlatingThickness" );
70static const wxChar CoroutineStackSize[] = wxT( "CoroutineStackSize" );
71static const wxChar ShowRouterDebugGraphics[] = wxT( "ShowRouterDebugGraphics" );
72static const wxChar EnableRouterDump[] = wxT( "EnableRouterDump" );
73static const wxChar HyperZoom[] = wxT( "HyperZoom" );
74static const wxChar CompactFileSave[] = wxT( "CompactSave" );
75static const wxChar DrawArcAccuracy[] = wxT( "DrawArcAccuracy" );
76static const wxChar DrawArcCenterStartEndMaxAngle[] = wxT( "DrawArcCenterStartEndMaxAngle" );
77static const wxChar MaxTangentTrackAngleDeviation[] = wxT( "MaxTangentTrackAngleDeviation" );
78static const wxChar MaxTrackLengthToKeep[] = wxT( "MaxTrackLengthToKeep" );
79static const wxChar StrokeTriangulation[] = wxT( "StrokeTriangulation" );
80static const wxChar ExtraZoneDisplayModes[] = wxT( "ExtraZoneDisplayModes" );
81static const wxChar MinPlotPenWidth[] = wxT( "MinPlotPenWidth" );
82static const wxChar DebugZoneFiller[] = wxT( "DebugZoneFiller" );
83static const wxChar DebugPDFWriter[] = wxT( "DebugPDFWriter" );
84static const wxChar PDFStrokeFontWidthFactor[] = wxT( "PDFStrokeFontWidthFactor" );
85static const wxChar PDFStrokeFontXOffset[] = wxT( "PDFStrokeFontXOffset" );
86static const wxChar PDFStrokeFontYOffset[] = wxT( "PDFStrokeFontYOffset" );
87static const wxChar PDFStrokeFontBoldMultiplier[] = wxT( "PDFStrokeFontBoldMultiplier" );
88static const wxChar PDFStrokeFontKerningFactor[] = wxT( "PDFStrokeFontKerningFactor" );
89static const wxChar UsePdfPrint[] = wxT( "UsePdfPrint" );
90static const wxChar SmallDrillMarkSize[] = wxT( "SmallDrillMarkSize" );
91static const wxChar HotkeysDumper[] = wxT( "HotkeysDumper" );
92static const wxChar DrawBoundingBoxes[] = wxT( "DrawBoundingBoxes" );
93static const wxChar ShowPcbnewExportNetlist[] = wxT( "ShowPcbnewExportNetlist" );
94static const wxChar Skip3DModelFileCache[] = wxT( "Skip3DModelFileCache" );
95static const wxChar Skip3DModelMemoryCache[] = wxT( "Skip3DModelMemoryCache" );
96static const wxChar HideVersionFromTitle[] = wxT( "HideVersionFromTitle" );
97static const wxChar TraceMasks[] = wxT( "TraceMasks" );
98static const wxChar RouterTestCaseDirectory[] = wxT( "RouterTestCaseDirectory" );
99static const wxChar ShowEventCounters[] = wxT( "ShowEventCounters" );
100static const wxChar AllowManualCanvasScale[] = wxT( "AllowManualCanvasScale" );
101static const wxChar UpdateUIEventInterval[] = wxT( "UpdateUIEventInterval" );
102static const wxChar V3DRT_BevelHeight_um[] = wxT( "V3DRT_BevelHeight_um" );
103static const wxChar V3DRT_BevelExtentFactor[] = wxT( "V3DRT_BevelExtentFactor" );
104static const wxChar EnablePcbDesignBlocks[] = wxT( "EnablePcbDesignBlocks" );
105static const wxChar EnableGenerators[] = wxT( "EnableGenerators" );
106static const wxChar EnableLibWithText[] = wxT( "EnableLibWithText" );
107static const wxChar EnableLibDir[] = wxT( "EnableLibDir" );
108static const wxChar DisambiguationTime[] = wxT( "DisambiguationTime" );
109static const wxChar PcbSelectionVisibilityRatio[] = wxT( "PcbSelectionVisibilityRatio" );
110static const wxChar FontErrorSize[] = wxT( "FontErrorSize" );
111static const wxChar OcePluginLinearDeflection[] = wxT( "OcePluginLinearDeflection" );
112static const wxChar OcePluginAngularDeflection[] = wxT( "OcePluginAngularDeflection" );
113static const wxChar TriangulateSimplificationLevel[] = wxT( "TriangulateSimplificationLevel" );
114static const wxChar TriangulateMinimumArea[] = wxT( "TriangulateMinimumArea" );
115static const wxChar EnableCacheFriendlyFracture[] = wxT( "EnableCacheFriendlyFracture" );
116static const wxChar TriangulateDelaunayRefine[] = wxT( "TriangulateDelaunayRefine" );
117static const wxChar EnableAPILogging[] = wxT( "EnableAPILogging" );
118static const wxChar MaxFileSystemWatchers[] = wxT( "MaxFileSystemWatchers" );
119static const wxChar MinorSchematicGraphSize[] = wxT( "MinorSchematicGraphSize" );
120static const wxChar ResolveTextRecursionDepth[] = wxT( "ResolveTextRecursionDepth" );
121static const wxChar EnableExtensionSnaps[] = wxT( "EnableExtensionSnaps" );
122static const wxChar ExtensionSnapTimeoutMs[] = wxT( "ExtensionSnapTimeoutMs" );
123static const wxChar ExtensionSnapActivateOnHover[] = wxT( "ExtensionSnapActivateOnHover" );
124static const wxChar EnableSnapAnchorsDebug[] = wxT( "EnableSnapAnchorsDebug" );
125static const wxChar SnapHysteresis[] = wxT( "SnapHysteresis" );
126static const wxChar SnapToAnchorMargin[] = wxT( "SnapToAnchorMargin" );
127static const wxChar MinParallelAngle[] = wxT( "MinParallelAngle" );
128static const wxChar HoleWallPaintingMultiplier[] = wxT( "HoleWallPaintingMultiplier" );
129static const wxChar MsgPanelShowUuids[] = wxT( "MsgPanelShowUuids" );
130static const wxChar MaximumThreads[] = wxT( "MaximumThreads" );
132 wxT( "NetInspectorBulkUpdateOptimisationThreshold" );
133static const wxChar ExcludeFromSimulationLineWidth[] = wxT( "ExcludeFromSimulationLineWidth" );
134static const wxChar SimulatorMultiRunCombinationLimit[] = wxT( "SimulatorMultiRunCombinationLimit" );
135static const wxChar GitIconRefreshInterval[] = wxT( "GitIconRefreshInterval" );
136static const wxChar MaxPastedTextLength[] = wxT( "MaxPastedTextLength" );
137static const wxChar PNSProcessClusterTimeout[] = wxT( "PNSProcessClusterTimeout" );
138static const wxChar FollowBranchTimeout[] = wxT( "FollowBranchTimeoutMs" );
139static const wxChar ImportSkipComponentBodies[] = wxT( "ImportSkipComponentBodies" );
140static const wxChar ImportSkipLayerMapping[] = wxT( "ImportSkipLayerMapping" );
141static const wxChar ScreenDPI[] = wxT( "ScreenDPI" );
142static const wxChar EnableUseAuiPerspective[] = wxT( "EnableUseAuiPerspective" );
143static const wxChar HistoryLockStaleTimeout[] = wxT( "HistoryLockStaleTimeout" );
144static const wxChar ZoneFillIterativeRefill[] = wxT( "ZoneFillIterativeRefill" );
145static const wxChar PadsPcbTextHeightScale[] = wxT( "PadsPcbTextHeightScale" );
146static const wxChar PadsPcbTextWidthScale[] = wxT( "PadsPcbTextWidthScale" );
147static const wxChar PadsSchTextHeightScale[] = wxT( "PadsSchTextHeightScale" );
148static const wxChar PadsSchTextWidthScale[] = wxT( "PadsSchTextWidthScale" );
149static const wxChar PadsTextAnchorOffsetNm[] = wxT( "PadsTextAnchorOffsetNm" );
150static const wxChar PcbImportMinObjectSizeNm[] = wxT( "PcbImportMinObjectSizeNm" );
151static const wxChar DiffSkewOverlayTrackInflation[] = wxT( "DiffSkewOverlayTrackInflation" );
152static const wxChar DiffSkewTrackGapInflation[] = wxT( "DiffSkewTrackGapInflation" );
153static const wxChar DiffSkewCosThetaParallelTestValue[] = wxT( "DiffSkewCosThetaParallelTestValue" );
154static const wxChar DiffSkewColourInterpolationLogStrength[] = wxT( "DiffSkewColourInterpolationLogStrength" );
155static const wxChar DiffSkewTargetDiffSegmentSize[] = wxT( "DiffSkewTargetDiffSegmentSize" );
156static const wxChar EagleImportFieldsCanAutoplace[] = wxT( "EagleImportFieldsCanAutoplace" );
157
158
159} // namespace AC_KEYS
160
161
166namespace AC_GROUPS
167{
168static const wxChar V3D_RayTracing[] = wxT( "G_3DV_RayTracing" );
169}
170
171/*
172 * Get a simple string for common parameters.
173 *
174 * This isn't exhaustive, but it covers most common types that might be
175 * used in the advance config
176 */
177wxString dumpParamCfg( const PARAM_CFG& aParam )
178{
179 wxString s = aParam.m_Ident + wxS( ": " );
180
181 /*
182 * This implementation is rather simplistic, but it is
183 * effective enough for simple uses. A better implementation would be
184 * some kind of visitor, but that's somewhat more work.
185 */
186 switch( aParam.m_Type )
187 {
189 case paramcfg_id::PARAM_INT_WITH_SCALE: s << *static_cast<const PARAM_CFG_INT&>( aParam ).m_Pt_param; break;
190 case paramcfg_id::PARAM_DOUBLE: s << *static_cast<const PARAM_CFG_DOUBLE&>( aParam ).m_Pt_param; break;
191 case paramcfg_id::PARAM_WXSTRING: s << *static_cast<const PARAM_CFG_WXSTRING&>( aParam ).m_Pt_param; break;
192 case paramcfg_id::PARAM_FILENAME: s << *static_cast<const PARAM_CFG_FILENAME&>( aParam ).m_Pt_param; break;
194 s << ( *static_cast<const PARAM_CFG_BOOL&>( aParam ).m_Pt_param ? wxS( "true" ) : wxS( "false" ) );
195 break;
196 default: s << wxS( "Unsupported PARAM_CFG variant: " ) << aParam.m_Type;
197 }
198
199 return s;
200}
201
202
206static void dumpCfg( const std::vector<std::unique_ptr<PARAM_CFG>>& aArray )
207{
208 // only dump if we need to
209 if( !wxLog::IsAllowedTraceMask( AdvancedConfigMask ) )
210 return;
211
212 for( const auto& param : aArray )
213 {
214 wxLogTrace( AdvancedConfigMask, dumpParamCfg( *param ) );
215 }
216}
217
218
224static wxFileName getAdvancedCfgFilename()
225{
226 const static wxString cfg_filename{ wxS( "kicad_advanced" ) };
227 return wxFileName( PATHS::GetUserSettingsPath(), cfg_filename );
228}
229
230
232{
233 wxLogTrace( AdvancedConfigMask, wxS( "Init advanced config" ) );
234
235 // Init defaults - this is done in case the config doesn't exist,
236 // then the values will remain as set here.
239 m_EnableRouterDump = false;
240 m_HyperZoom = false;
241 m_DrawArcAccuracy = 10.0;
244 m_MaxTrackLengthToKeep = 0.0005;
247
248 m_ExtraClearance = 0.0005;
249 m_EnableCreepageSlot = false;
250 m_RealtimeCreepage = false;
251 m_DRCEpsilon = 0.0005; // 0.5um is small enough not to materially violate
252 // any constraints.
254 m_SliverMinimumLength = 0.0008;
256
257 m_HoleWallThickness = 0.020; // IPC-6012 says 15-18um; Cadence says at least
258 // 0.020 for a Class 2 board and at least 0.025
259 // for Class 3.
260
261 m_MinPlotPenWidth = 0.0212; // 1 pixel at 1200dpi.
262
263 m_DebugZoneFiller = false;
264 m_DebugPDFWriter = false;
265 m_PDFStrokeFontWidthFactor = .12; // default 12% of EM
270 m_UsePdfPrint = false;
272 m_HotkeysDumper = false;
273 m_DrawBoundingBoxes = false;
279 m_ShowEventCounters = false;
281 m_CompactSave = false;
284 m_EnableGenerators = false;
285 m_EnableLibWithText = false;
286 m_EnableLibDir = false;
287
289 m_3DRT_BevelExtentFactor = 1.0 / 16.0;
290
291 m_EnableAPILogging = false;
292
294
296
298
300
301 m_FontErrorSize = 2;
302
305
308
311
313
315
317
324
325 m_MinParallelAngle = 0.001;
327
329
331
334
336
338
339 m_PNSProcessClusterTimeout = 100; // Default: 100 ms
340 m_FollowBranchTimeout = 500; // Default: 500 ms
341
344
345 m_ScreenDPI = 91;
346
348 m_HistoryLockStaleTimeout = 300; // 5 minutes default
350
357
363
365
367}
368
369
371{
372 static ADVANCED_CFG instance;
373 return instance;
374}
375
376
381
382
384{
385 wxFileName k_advanced = getAdvancedCfgFilename();
386 wxFileConfig file_cfg( wxS( "" ), wxS( "" ), k_advanced.GetFullPath() );
387
388 wxConfigSaveSetups( &file_cfg, m_entries );
389}
390
391
393{
394 const wxFileName k_advanced = getAdvancedCfgFilename();
395
396 // If we are running headless, use the class defaults because we cannot instantiate wxConfig
397 if( !wxTheApp )
398 return;
399
400 if( !k_advanced.FileExists() )
401 {
402 wxLogTrace( AdvancedConfigMask, wxS( "File does not exist %s" ), k_advanced.GetFullPath() );
403
404 // load the defaults
405 wxConfig emptyConfig;
406 loadSettings( emptyConfig );
407
408 return;
409 }
410
411 wxLogTrace( AdvancedConfigMask, wxS( "Loading advanced config from: %s" ), k_advanced.GetFullPath() );
412
413 wxFileConfig file_cfg( wxS( "" ), wxS( "" ), k_advanced.GetFullPath() );
414 loadSettings( file_cfg );
415}
416
417
418void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
419{
420 m_entries.clear();
421
422 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::ExtraFillMargin, &m_ExtraClearance,
423 m_ExtraClearance, 0.0, 1.0 ) );
424
425 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableCreepageSlot, &m_EnableCreepageSlot,
427
428 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::RealtimeCreepage, &m_RealtimeCreepage,
430
431 m_entries.push_back(
432 std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::DRCEpsilon, &m_DRCEpsilon, m_DRCEpsilon, 0.0, 1.0 ) );
433
434 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>(
436
437 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>(
439
440 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>(
442
443 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::HoleWallThickness, &m_HoleWallThickness,
444 m_HoleWallThickness, 0.0, 1.0 ) );
445
446 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::CoroutineStackSize, &m_CoroutineStackSize,
449
450 m_entries.push_back( std::make_unique<PARAM_CFG_INT>(
452
453 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::ShowRouterDebugGraphics,
455
456 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableRouterDump, &m_EnableRouterDump,
458
459 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::HyperZoom, &m_HyperZoom, m_HyperZoom ) );
460
461 m_entries.push_back(
462 std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::CompactFileSave, &m_CompactSave, m_CompactSave ) );
463
464 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::DrawArcAccuracy, &m_DrawArcAccuracy,
465 m_DrawArcAccuracy, 0.0, 100000.0 ) );
466
467 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::DrawArcCenterStartEndMaxAngle,
469 100000.0 ) );
470
471 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::MaxTangentTrackAngleDeviation,
473 0.0, 90.0 ) );
474
475 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>(
477
478 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::ExtraZoneDisplayModes,
480
481 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>(
483
484 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::MinPlotPenWidth, &m_MinPlotPenWidth,
485 m_MinPlotPenWidth, 0.0, 1.0 ) );
486
487 m_entries.push_back(
488 std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::DebugZoneFiller, &m_DebugZoneFiller, m_DebugZoneFiller ) );
489
490 m_entries.push_back(
491 std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::DebugPDFWriter, &m_DebugPDFWriter, m_DebugPDFWriter ) );
492
493 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>(
495
496 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::PDFStrokeFontXOffset,
498
499 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::PDFStrokeFontYOffset,
501
502 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::PDFStrokeFontBoldMultiplier,
505
506 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>(
508
509 m_entries.push_back(
510 std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::UsePdfPrint, &m_UsePdfPrint, m_UsePdfPrint ) );
511
512 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::SmallDrillMarkSize, &m_SmallDrillMarkSize,
513 m_SmallDrillMarkSize, 0.0, 3.0 ) );
514
515 m_entries.push_back(
516 std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::HotkeysDumper, &m_HotkeysDumper, m_HotkeysDumper ) );
517
518 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::DrawBoundingBoxes, &m_DrawBoundingBoxes,
520
521 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::ShowPcbnewExportNetlist,
523
524 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::Skip3DModelFileCache, &m_Skip3DModelFileCache,
526
527 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::Skip3DModelMemoryCache,
529
530 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::HideVersionFromTitle, &m_HideVersionFromTitle,
532
533 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::ShowEventCounters, &m_ShowEventCounters,
535
536 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::AllowManualCanvasScale,
538
539 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::V3DRT_BevelHeight_um, &m_3DRT_BevelHeight_um,
540 m_3DRT_BevelHeight_um, 0, std::numeric_limits<int>::max(),
542
543 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::V3DRT_BevelExtentFactor,
545 100.0, AC_GROUPS::V3D_RayTracing ) );
546
547 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::Use3DConnexionDriver, &m_Use3DConnexionDriver,
549
550 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::IncrementalConnectivity,
552
553 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::DisambiguationTime, &m_DisambiguationMenuDelay,
554 m_DisambiguationMenuDelay, 50, 10000 ) );
555
556 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnablePcbDesignBlocks,
558
559 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableGenerators, &m_EnableGenerators,
561
562 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableAPILogging, &m_EnableAPILogging,
564
565 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableLibWithText, &m_EnableLibWithText,
567
568 m_entries.push_back(
569 std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableLibDir, &m_EnableLibDir, m_EnableLibDir ) );
570
571 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::PcbSelectionVisibilityRatio,
573 m_PcbSelectionVisibilityRatio, 0.0, 1.0 ) );
574
575 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::FontErrorSize, &m_FontErrorSize,
576 m_FontErrorSize, 0.01, 100 ) );
577
578 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::OcePluginLinearDeflection,
580 0.01, 1.0 ) );
581
582 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::OcePluginAngularDeflection,
584 m_OcePluginAngularDeflection, 0.01, 360.0 ) );
585
586 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::TriangulateSimplificationLevel,
589
590 m_entries.push_back( std::make_unique<PARAM_CFG_INT>(
592
593 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableCacheFriendlyFracture,
596
597 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::TriangulateDelaunayRefine,
600
601 m_entries.push_back( std::make_unique<PARAM_CFG_INT>(
603
604 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::MinorSchematicGraphSize,
606 2147483647 ) );
607
608 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::ResolveTextRecursionDepth,
610 10 ) );
611
612 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableExtensionSnaps, &m_EnableExtensionSnaps,
614
615 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::ExtensionSnapTimeoutMs,
617
618 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::ExtensionSnapActivateOnHover,
621
622 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableSnapAnchorsDebug,
624
625 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::SnapHysteresis, &m_SnapHysteresis,
626 m_SnapHysteresis, 0, 100 ) );
627
628 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::SnapToAnchorMargin, &m_SnapToAnchorMargin,
629 m_SnapToAnchorMargin, 1.0, 2.0 ) );
630
631 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::MinParallelAngle, &m_MinParallelAngle,
632 m_MinParallelAngle, 0.0, 45.0 ) );
633
634 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::HoleWallPaintingMultiplier,
636 m_HoleWallPaintingMultiplier, 0.1, 100.0 ) );
637
638 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::MsgPanelShowUuids, &m_MsgPanelShowUuids,
640
641 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::MaximumThreads, &m_MaximumThreads,
642 m_MaximumThreads, 0, 500 ) );
643
644 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::NetInspectorBulkUpdateOptimisationThreshold,
647
648 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::ExcludeFromSimulationLineWidth,
651
652 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::SimulatorMultiRunCombinationLimit,
655
656 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::GitIconRefreshInterval,
658
659 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::MaxPastedTextLength, &m_MaxPastedTextLength,
660 m_MaxPastedTextLength, 0, 100000 ) );
661
662 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::PNSProcessClusterTimeout,
663 &m_PNSProcessClusterTimeout, 100, 10, 10000 ) );
664
665 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::FollowBranchTimeout,
666 &m_FollowBranchTimeout, 500, 50, 5000 ) );
667
668 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::ImportSkipComponentBodies,
670
671 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::ImportSkipLayerMapping,
673
674 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::ScreenDPI, &m_ScreenDPI, m_ScreenDPI, 50, 500 ) );
675
676 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EnableUseAuiPerspective,
678
679 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::HistoryLockStaleTimeout,
681 86400 ) ); // 10 seconds to 24 hours
682
683 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::ZoneFillIterativeRefill,
685
686 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::PadsPcbTextHeightScale,
688 m_PadsPcbTextHeightScale, 0.1, 1.0 ) );
689
690 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::PadsPcbTextWidthScale,
692 m_PadsPcbTextWidthScale, 0.1, 1.0 ) );
693
694 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::PadsSchTextHeightScale,
696 m_PadsSchTextHeightScale, 0.1, 1.0 ) );
697
698 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::PadsSchTextWidthScale,
700 m_PadsSchTextWidthScale, 0.1, 1.0 ) );
701
702 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::PadsTextAnchorOffsetNm,
704 m_PadsTextAnchorOffsetNm, 0, 1000000 ) );
705
706 m_entries.push_back( std::make_unique<PARAM_CFG_INT>( true, AC_KEYS::PcbImportMinObjectSizeNm,
709 1000000 ) );
710
711 m_entries.push_back( std::make_unique<PARAM_CFG_WXSTRING>( true, AC_KEYS::RouterTestCaseDirectory, &m_RouterTestCaseDirectory, wxS( "" ) ) );
712
713 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::DiffSkewOverlayTrackInflation,
715 m_DiffSkewOverlayTrackInflation, 0.0, 10.0 ) );
716
717 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::DiffSkewTrackGapInflation,
719 0.0, 10.0 ) );
720
721 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::DiffSkewCosThetaParallelTestValue,
724
725 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::DiffSkewColourInterpolationLogStrength,
728
729 m_entries.push_back( std::make_unique<PARAM_CFG_DOUBLE>( true, AC_KEYS::DiffSkewTargetDiffSegmentSize,
731 m_DiffSkewTargetDiffSegmentSize, 1.0, 1e10 ) );
732
733 m_entries.push_back( std::make_unique<PARAM_CFG_BOOL>( true, AC_KEYS::EagleImportFieldsCanAutoplace,
735
736
737 // Special case for trace mask setting...we just grab them and set them immediately
738 // Because we even use wxLogTrace inside of advanced config
739 m_entries.push_back( std::make_unique<PARAM_CFG_WXSTRING>( true, AC_KEYS::TraceMasks, &m_traceMasks, wxS( "" ) ) );
740
741
742 // Load the config from file
744
745 // Now actually set the trace masks
746 wxStringTokenizer traceMaskTokenizer( m_traceMasks, ", ", wxTOKEN_STRTOK );
747
748 while( traceMaskTokenizer.HasMoreTokens() )
749 {
750 wxString mask = traceMaskTokenizer.GetNextToken();
751 wxLog::AddTraceMask( mask );
752 }
753
755
756 wxLogTrace( kicadTraceCoroutineStack, wxT( "Using coroutine stack size %d" ), m_CoroutineStackSize );
757}
wxString dumpParamCfg(const PARAM_CFG &aParam)
static const wxChar AdvancedConfigMask[]
static void dumpCfg(const std::vector< std::unique_ptr< PARAM_CFG > > &aArray)
Dump the configs in the given array to trace.
static wxFileName getAdvancedCfgFilename()
Get the filename for the advanced config file.
void loadFromConfigFile()
Load the config from the normal configuration file.
void Save()
Save the configuration to the configuration file.
std::vector< std::unique_ptr< PARAM_CFG > > m_entries
void Reload()
Reload the configuration from the 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.
A base class which establishes the interface functions ReadParam and SaveParam, which are implemented...
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:634
void wxConfigLoadSetups(wxConfigBase *aCfg, const std::vector< std::unique_ptr< PARAM_CFG > > &aList)
Use aList of PARAM_CFG object to load configuration values from aCfg.
void wxConfigSaveSetups(wxConfigBase *aCfg, const std::vector< std::unique_ptr< PARAM_CFG > > &aList)
Writes aList of PARAM_CFG objects to aCfg.
@ PARAM_WXSTRING
@ PARAM_INT_WITH_SCALE
@ PARAM_INT
@ PARAM_FILENAME
@ PARAM_DOUBLE
@ PARAM_BOOL
double m_DiffSkewColourInterpolationLogStrength
The logarithmic weighting factor to apply to colour interpolation in the diff phase overlay tool.
bool m_Skip3DModelFileCache
Skip reading/writing 3D model file caches.
bool m_EnableUseAuiPerspective
Enable use Aui Perspective to store/load geometry of main editor frames.
double m_DiffSkewTrackGapInflation
The multiplier of constraint diff pair gap to allow identification of coupled track segments in the d...
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.
int m_ScreenDPI
Screen DPI setting for display calculations.
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_RealtimeCreepage
Use the realtime (V2) creepage engine.
bool m_EnableCacheFriendlyFracture
Enable the use of a cache-friendlier and therefore faster version of the polygon fracture algorithm.
double m_PadsSchTextWidthScale
PADS text width scale factor for schematic imports.
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.
double m_PDFStrokeFontKerningFactor
Kerning (spacing) factor applied to glyph advance (width).
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.
double m_PDFStrokeFontXOffset
Horizontal offset factor applied to stroke font glyph coordinates (in EM units) after to compensate m...
int m_CoroutineStackSize
Configure the coroutine stack size in bytes.
double m_PDFStrokeFontYOffset
Vertical offset factor applied to stroke font glyph coordinates (in EM units) after Y inversion to co...
double m_SmallDrillMarkSize
The diameter of the drill marks on print and plot outputs (in mm) when the "Drill marks" option is se...
wxString m_traceMasks
Trace masks for wxLogTrace, loaded from the config file.
double m_PadsPcbTextWidthScale
PADS text width scale factor for PCB imports.
bool m_EnableGenerators
Enable support for generators.
double m_PadsPcbTextHeightScale
PADS text height scale factor for PCB imports.
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...
bool m_TriangulateDelaunayRefine
Refine each triangulation toward the constrained Delaunay triangulation with a boundary-preserving ed...
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_PDFStrokeFontBoldMultiplier
Multiplier applied to stroke width factor when rendering bold stroke font subsets.
double m_DRCEpsilon
Epsilon for DRC tests.
double m_PDFStrokeFontWidthFactor
Stroke font line width factor relative to EM size for PDF stroke fonts.
int m_PcbImportMinObjectSizeNm
Minimum object size in nanometers for PCB imports.
int m_GitIconRefreshInterval
The interval in milliseconds to refresh the git icons in the project tree.
double m_DiffSkewTargetDiffSegmentSize
The target size (in PCB IU) of diff phase skew gradient overlay segments.
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.
bool m_ImportSkipLayerMapping
Skip the layer mapping step when importing.
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.
wxString m_RouterTestCaseDirectory
Router test case directory.
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.
int m_PadsTextAnchorOffsetNm
PADS text anchor offset in nanometers for PCB imports.
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.
double m_DiffSkewCosThetaParallelTestValue
The value of cos(theta) between two tracks used to test for parallelism in the diff phase skew overla...
int m_ResolveTextRecursionDepth
The number of recursions to resolve text variables.
bool m_ZoneFillIterativeRefill
Enable iterative zone filling to handle isolated islands in higher priority zones.
int m_MaxFilesystemWatchers
Maximum number of filesystem watchers to use.
int m_SnapHysteresis
Hysteresis in pixels used for snap activation and deactivation.
bool m_DebugPDFWriter
A mode that writes PDFs without compression.
int m_SimulatorMultiRunCombinationLimit
Maximum number of tuner combinations simulated when using multi-run mode.
int m_MsgPanelShowUuids
Show UUIDs of items in the message panel.
double m_DiffSkewOverlayTrackInflation
The multiplier of underlying track size applied to the diff phase skew overlay.
int m_PNSProcessClusterTimeout
Timeout for the PNS router's processCluster wallclock timeout, in milliseconds.
int m_FollowBranchTimeout
Timeout for the PNS router's followBranch path search, 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_HistoryLockStaleTimeout
Stale lock timeout for local history repository locks, in seconds.
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".
double m_SnapToAnchorMargin
Margin multiplier for preferring anchors over construction line snaps.
double m_PadsSchTextHeightScale
PADS text height scale factor for schematic imports.
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_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_UsePdfPrint
Use legacy wxWidgets-based printing.
bool m_CompactSave
Save files in compact display mode.
bool m_ImportSkipComponentBodies
Skip importing component bodies when importing some format files, such as Altium.
bool m_EagleImportFieldsCanAutoplace
Default CanAutoplace value for fields imported from EAGLE files.
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 SimulatorMultiRunCombinationLimit[]
static const wxChar HotkeysDumper[]
static const wxChar EnableAPILogging[]
static const wxChar ExtensionSnapActivateOnHover[]
static const wxChar HideVersionFromTitle[]
static const wxChar PNSProcessClusterTimeout[]
static const wxChar DiffSkewTargetDiffSegmentSize[]
static const wxChar AllowManualCanvasScale[]
static const wxChar SnapHysteresis[]
static const wxChar NetInspectorBulkUpdateOptimisationThreshold[]
static const wxChar PadsSchTextWidthScale[]
static const wxChar PadsPcbTextWidthScale[]
static const wxChar MaxTangentTrackAngleDeviation[]
static const wxChar MaxTrackLengthToKeep[]
static const wxChar EnableLibDir[]
static const wxChar ShowPcbnewExportNetlist[]
static const wxChar PcbImportMinObjectSizeNm[]
static const wxChar PDFStrokeFontWidthFactor[]
static const wxChar PadsSchTextHeightScale[]
static const wxChar EnablePcbDesignBlocks[]
static const wxChar RouterTestCaseDirectory[]
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 SnapToAnchorMargin[]
static const wxChar HoleWallThickness[]
static const wxChar DRCSliverWidthTolerance[]
static const wxChar DisambiguationTime[]
static const wxChar HyperZoom[]
static const wxChar DiffSkewCosThetaParallelTestValue[]
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 ImportSkipLayerMapping[]
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 PadsTextAnchorOffsetNm[]
static const wxChar FontErrorSize[]
static const wxChar DRCEpsilon[]
static const wxChar HistoryLockStaleTimeout[]
static const wxChar EnableSnapAnchorsDebug[]
static const wxChar V3DRT_BevelExtentFactor[]
static const wxChar EnableRouterDump[]
static const wxChar EagleImportFieldsCanAutoplace[]
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 ImportSkipComponentBodies[]
static const wxChar EnableCacheFriendlyFracture[]
static const wxChar HoleWallPaintingMultiplier[]
static const wxChar ZoneFillIterativeRefill[]
static const wxChar ResolveTextRecursionDepth[]
static const wxChar SmallDrillMarkSize[]
static const wxChar EnableCreepageSlot[]
static const wxChar EnableUseAuiPerspective[]
static const wxChar PDFStrokeFontYOffset[]
static const wxChar DiffSkewTrackGapInflation[]
static const wxChar DiffSkewColourInterpolationLogStrength[]
static const wxChar DrawArcCenterStartEndMaxAngle[]
static const wxChar ExtraFillMargin[]
static const wxChar PcbSelectionVisibilityRatio[]
static const wxChar TriangulateMinimumArea[]
static const wxChar PDFStrokeFontKerningFactor[]
static const wxChar OcePluginAngularDeflection[]
static const wxChar ExtensionSnapTimeoutMs[]
static const wxChar PadsPcbTextHeightScale[]
static const wxChar DRCSliverMinimumLength[]
static const wxChar ShowEventCounters[]
static const wxChar RealtimeCreepage[]
static const wxChar UsePdfPrint[]
static const wxChar ScreenDPI[]
static const wxChar PDFStrokeFontXOffset[]
static const wxChar TriangulateDelaunayRefine[]
static const wxChar PDFStrokeFontBoldMultiplier[]
static const wxChar MaximumThreads[]
static const wxChar FollowBranchTimeout[]
static const wxChar GitIconRefreshInterval[]
static const wxChar TraceMasks[]
static const wxChar Use3DConnexionDriver[]
static const wxChar MsgPanelShowUuids[]
static const wxChar DiffSkewOverlayTrackInflation[]
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.