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 (C) 2019-2023 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 DRCEpsilon[] = wxT( "DRCEpsilon" );
68static const wxChar DRCSliverWidthTolerance[] = wxT( "DRCSliverWidthTolerance" );
69static const wxChar DRCSliverMinimumLength[] = wxT( "DRCSliverMinimumLength" );
70static const wxChar DRCSliverAngleTolerance[] = wxT( "DRCSliverAngleTolerance" );
71static const wxChar HoleWallThickness[] = wxT( "HoleWallPlatingThickness" );
72static const wxChar CoroutineStackSize[] = wxT( "CoroutineStackSize" );
73static const wxChar ShowRouterDebugGraphics[] = wxT( "ShowRouterDebugGraphics" );
74static const wxChar EnableRouterDump[] = wxT( "EnableRouterDump" );
75static const wxChar HyperZoom[] = wxT( "HyperZoom" );
76static const wxChar CompactFileSave[] = wxT( "CompactSave" );
77static const wxChar DrawArcAccuracy[] = wxT( "DrawArcAccuracy" );
78static const wxChar DrawArcCenterStartEndMaxAngle[] = wxT( "DrawArcCenterStartEndMaxAngle" );
79static const wxChar MaxTangentTrackAngleDeviation[] = wxT( "MaxTangentTrackAngleDeviation" );
80static const wxChar MaxTrackLengthToKeep[] = wxT( "MaxTrackLengthToKeep" );
81static const wxChar StrokeTriangulation[] = wxT( "StrokeTriangulation" );
82static const wxChar ExtraZoneDisplayModes[] = wxT( "ExtraZoneDisplayModes" );
83static const wxChar MinPlotPenWidth[] = wxT( "MinPlotPenWidth" );
84static const wxChar DebugZoneFiller[] = wxT( "DebugZoneFiller" );
85static const wxChar DebugPDFWriter[] = wxT( "DebugPDFWriter" );
86static const wxChar SmallDrillMarkSize[] = wxT( "SmallDrillMarkSize" );
87static const wxChar HotkeysDumper[] = wxT( "HotkeysDumper" );
88static const wxChar DrawBoundingBoxes[] = wxT( "DrawBoundingBoxes" );
89static const wxChar ShowPcbnewExportNetlist[] = wxT( "ShowPcbnewExportNetlist" );
90static const wxChar Skip3DModelFileCache[] = wxT( "Skip3DModelFileCache" );
91static const wxChar Skip3DModelMemoryCache[] = wxT( "Skip3DModelMemoryCache" );
92static const wxChar HideVersionFromTitle[] = wxT( "HideVersionFromTitle" );
93static const wxChar TraceMasks[] = wxT( "TraceMasks" );
94static const wxChar ShowRepairSchematic[] = wxT( "ShowRepairSchematic" );
95static const wxChar ShowEventCounters[] = wxT( "ShowEventCounters" );
96static const wxChar AllowManualCanvasScale[] = wxT( "AllowManualCanvasScale" );
97static const wxChar UpdateUIEventInterval[] = wxT( "UpdateUIEventInterval" );
98static const wxChar V3DRT_BevelHeight_um[] = wxT( "V3DRT_BevelHeight_um" );
99static const wxChar V3DRT_BevelExtentFactor[] = wxT( "V3DRT_BevelExtentFactor" );
100static const wxChar UseClipper2[] = wxT( "UseClipper2" );
101static const wxChar EnableGenerators[] = wxT( "EnableGenerators" );
102static const wxChar EnableGit[] = wxT( "EnableGit" );
103static const wxChar EnableLibWithText[] = wxT( "EnableLibWithText" );
104static const wxChar EnableEeschemaPrintCairo[] = wxT( "EnableEeschemaPrintCairo" );
105static const wxChar DisambiguationTime[] = wxT( "DisambiguationTime" );
106static const wxChar PcbSelectionVisibilityRatio[] = wxT( "PcbSelectionVisibilityRatio" );
107static const wxChar MinimumSegmentLength[] = wxT( "MinimumSegmentLength" );
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" );
115} // namespace KEYS
116
117
122namespace AC_GROUPS
123{
124static const wxChar V3D_RayTracing[] = wxT( "G_3DV_RayTracing" );
125}
126
127/*
128 * Get a simple string for common parameters.
129 *
130 * This isn't exhaustive, but it covers most common types that might be
131 * used in the advance config
132 */
133wxString dumpParamCfg( const PARAM_CFG& aParam )
134{
135 wxString s = aParam.m_Ident + wxS( ": " );
136
137 /*
138 * This implementation is rather simplistic, but it is
139 * effective enough for simple uses. A better implementation would be
140 * some kind of visitor, but that's somewhat more work.
141 */
142 switch( aParam.m_Type )
143 {
146 s << *static_cast<const PARAM_CFG_INT&>( aParam ).m_Pt_param;
147 break;
149 s << *static_cast<const PARAM_CFG_DOUBLE&>( aParam ).m_Pt_param;
150 break;
152 s << *static_cast<const PARAM_CFG_WXSTRING&>( aParam ).m_Pt_param;
153 break;
155 s << *static_cast<const PARAM_CFG_FILENAME&>( aParam ).m_Pt_param;
156 break;
158 s << ( *static_cast<const PARAM_CFG_BOOL&>( aParam ).m_Pt_param ? wxS( "true" ) : wxS( "false" ) );
159 break;
160 default: s << wxS( "Unsupported PARAM_CFG variant: " ) << aParam.m_Type;
161 }
162
163 return s;
164}
165
166
170static void dumpCfg( const std::vector<PARAM_CFG*>& aArray )
171{
172 // only dump if we need to
173 if( !wxLog::IsAllowedTraceMask( AdvancedConfigMask ) )
174 return;
175
176 for( const PARAM_CFG* param : aArray )
177 {
178 wxLogTrace( AdvancedConfigMask, dumpParamCfg( *param ) );
179 }
180}
181
182
188static wxFileName getAdvancedCfgFilename()
189{
190 const static wxString cfg_filename{ wxS( "kicad_advanced" ) };
191 return wxFileName( PATHS::GetUserSettingsPath(), cfg_filename );
192}
193
194
196{
197 wxLogTrace( AdvancedConfigMask, wxS( "Init advanced config" ) );
198
199 // Init defaults - this is done in case the config doesn't exist,
200 // then the values will remain as set here.
203 m_EnableRouterDump = false;
204 m_HyperZoom = false;
205 m_DrawArcAccuracy = 10.0;
208 m_MaxTrackLengthToKeep = 0.0005;
211
212 m_ExtraClearance = 0.0005;
213 m_DRCEpsilon = 0.0005; // 0.5um is small enough not to materially violate
214 // any constraints.
216 m_SliverMinimumLength = 0.0008;
218
219 m_HoleWallThickness = 0.020; // IPC-6012 says 15-18um; Cadence says at least
220 // 0.020 for a Class 2 board and at least 0.025
221 // for Class 3.
222
223 m_MinPlotPenWidth = 0.0212; // 1 pixel at 1200dpi.
224
225 m_DebugZoneFiller = false;
226 m_DebugPDFWriter = false;
228 m_HotkeysDumper = false;
229 m_DrawBoundingBoxes = false;
234 m_ShowEventCounters = false;
236 m_CompactSave = false;
238 m_ShowRepairSchematic = false;
239 m_EnableGenerators = false;
240 m_EnableGit = false;
241 m_EnableLibWithText = false;
242
244
246 m_3DRT_BevelExtentFactor = 1.0 / 16.0;
247
248 m_UseClipper2 = true;
249 m_EnableAPILogging = false;
250
252
254
256
258
260
263
266
268
270
272}
273
274
276{
277 static ADVANCED_CFG instance;
278 return instance;
279}
280
281
283{
284 const wxFileName k_advanced = getAdvancedCfgFilename();
285
286 // If we are running headless, use the class defaults because we cannot instantiate wxConfig
287 if( !wxTheApp )
288 return;
289
290 if( !k_advanced.FileExists() )
291 {
292 wxLogTrace( AdvancedConfigMask, wxS( "File does not exist %s" ), k_advanced.GetFullPath() );
293
294 // load the defaults
295 wxConfig emptyConfig;
296 loadSettings( emptyConfig );
297
298 return;
299 }
300
301 wxLogTrace( AdvancedConfigMask, wxS( "Loading advanced config from: %s" ),
302 k_advanced.GetFullPath() );
303
304 wxFileConfig file_cfg( wxS( "" ), wxS( "" ), k_advanced.GetFullPath() );
305 loadSettings( file_cfg );
306}
307
308
309void ADVANCED_CFG::loadSettings( wxConfigBase& aCfg )
310{
311 std::vector<PARAM_CFG*> configParams;
312
313 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::ExtraFillMargin,
315 m_ExtraClearance, 0.0, 1.0 ) );
316
317 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCEpsilon,
318 &m_DRCEpsilon, m_DRCEpsilon, 0.0, 1.0 ) );
319
320 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverWidthTolerance,
322 0.01, 0.25 ) );
323
324 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverMinimumLength,
326 1e-9, 10 ) );
327
328 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DRCSliverAngleTolerance,
330 1.0, 90.0 ) );
331
332 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::HoleWallThickness,
334 0.0, 1.0 ) );
335
336 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::CoroutineStackSize,
339
340 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::UpdateUIEventInterval,
342 -1, 100000 ) );
343
344 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowRouterDebugGraphics,
347
348 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableRouterDump,
350
351 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::HyperZoom,
353
354 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::CompactFileSave,
356
357 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DrawArcAccuracy,
359 0.0, 100000.0 ) );
360
361 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::DrawArcCenterStartEndMaxAngle,
363 m_DrawArcCenterMaxAngle, 0.0, 100000.0 ) );
364
365 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MaxTangentTrackAngleDeviation,
367 m_MaxTangentAngleDeviation, 0.0, 90.0 ) );
368
369 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MaxTrackLengthToKeep,
371 0.0, 1.0 ) );
372
373 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ExtraZoneDisplayModes,
376
377 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::StrokeTriangulation,
380
381 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::MinPlotPenWidth,
383 0.0, 1.0 ) );
384
385 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::DebugZoneFiller,
387
388 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::DebugPDFWriter,
390
391 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::SmallDrillMarkSize,
393 0.0, 3.0 ) );
394
395 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::HotkeysDumper,
397
398 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::DrawBoundingBoxes,
400
401 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowPcbnewExportNetlist,
404
405 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::Skip3DModelFileCache,
407
408 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::Skip3DModelMemoryCache,
410
411 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::HideVersionFromTitle,
413
414 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowRepairSchematic,
416
417 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::ShowEventCounters,
419
420 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::AllowManualCanvasScale,
423
424 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::V3DRT_BevelHeight_um,
426 0, std::numeric_limits<int>::max(),
428
429 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::V3DRT_BevelExtentFactor,
431 m_3DRT_BevelExtentFactor, 0.0, 100.0,
433
434 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::UseClipper2,
436
437 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::Use3DConnexionDriver,
439
440 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::IncrementalConnectivity,
443
444 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::DisambiguationTime,
447 50, 10000 ) );
448
449 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableGenerators,
451
452 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableAPILogging,
454
455 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableGit,
457
458 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableLibWithText,
460
461 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableEeschemaPrintCairo,
464
465 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::PcbSelectionVisibilityRatio,
467 m_PcbSelectionVisibilityRatio, 0.0, 1.0 ) );
468
469 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::MinimumSegmentLength,
471 m_MinimumSegmentLength, 10, 1000 ) );
472
473 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::OcePluginLinearDeflection,
475 m_OcePluginLinearDeflection, 0.01, 1.0 ) );
476
477 configParams.push_back( new PARAM_CFG_DOUBLE( true, AC_KEYS::OcePluginAngularDeflection,
479 m_OcePluginAngularDeflection, 0.01, 360.0 ) );
480
481 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::TriangulateSimplificationLevel,
484
485 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::TriangulateMinimumArea,
487 m_TriangulateMinimumArea, 0, 100000 ) );
488
489 configParams.push_back( new PARAM_CFG_BOOL( true, AC_KEYS::EnableCacheFriendlyFracture,
492
493 configParams.push_back( new PARAM_CFG_INT( true, AC_KEYS::MaxFileSystemWatchers,
495 0, 2147483647 ) );
496
497 // Special case for trace mask setting...we just grab them and set them immediately
498 // Because we even use wxLogTrace inside of advanced config
499 wxString traceMasks;
500 configParams.push_back( new PARAM_CFG_WXSTRING( true, AC_KEYS::TraceMasks, &traceMasks,
501 wxS( "" ) ) );
502
503 // Load the config from file
504 wxConfigLoadSetups( &aCfg, configParams );
505
506 // Now actually set the trace masks
507 wxStringTokenizer traceMaskTokenizer( traceMasks, wxS( "," ) );
508
509 while( traceMaskTokenizer.HasMoreTokens() )
510 {
511 wxString mask = traceMaskTokenizer.GetNextToken();
512 wxLog::AddTraceMask( mask );
513 }
514
515 dumpCfg( configParams );
516
517 for( PARAM_CFG* param : configParams )
518 delete param;
519
520 wxLogTrace( kicadTraceCoroutineStack, wxT( "Using coroutine stack size %d" ), m_CoroutineStackSize );
521}
522
523
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 config file.
void loadSettings(wxConfigBase &aCfg)
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:510
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.
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.
bool m_EnableLibWithText
Enable option to load lib files with text editor.
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.
bool m_UseClipper2
Use Clipper2 instead of Clipper1.
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_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_MinimumSegmentLength
Length of the minimum segment for the outline decomposer.
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_EnableGit
Enable git integration.
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.
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_ShowPcbnewExportNetlist
Enable exporting board editor netlist to a file for troubleshooting purposes.
int m_MaxFilesystemWatchers
Maximum number of filesystem watchers to use.
bool m_DebugPDFWriter
A mode that writes PDFs without compression.
bool m_EnableAPILogging
Log IPC API requests and responses.
bool m_ShowEventCounters
Shows debugging event counters in various places.
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.
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_CompactSave
Save files in compact display mode.
bool m_HideVersionFromTitle
Hide the build version from the KiCad manager frame title.
bool m_EnableEeschemaPrintCairo
Enable Eeschema printing using Cairo.
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 MinimumSegmentLength[]
static const wxChar ShowRepairSchematic[]
static const wxChar HideVersionFromTitle[]
static const wxChar AllowManualCanvasScale[]
static const wxChar MaxTangentTrackAngleDeviation[]
static const wxChar MaxTrackLengthToKeep[]
static const wxChar ShowPcbnewExportNetlist[]
static const wxChar EnableGit[]
static const wxChar UseClipper2[]
static const wxChar EnableLibWithText[]
static const wxChar DrawBoundingBoxes[]
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 DebugZoneFiller[]
static const wxChar OcePluginLinearDeflection[]
static const wxChar StrokeTriangulation[]
static const wxChar CompactFileSave[]
static const wxChar DRCSliverAngleTolerance[]
static const wxChar UpdateUIEventInterval[]
static const wxChar V3DRT_BevelHeight_um[]
static const wxChar ShowRouterDebugGraphics[]
static const wxChar DRCEpsilon[]
static const wxChar EnableEeschemaPrintCairo[]
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 Skip3DModelFileCache[]
static const wxChar EnableCacheFriendlyFracture[]
static const wxChar SmallDrillMarkSize[]
static const wxChar DrawArcCenterStartEndMaxAngle[]
static const wxChar ExtraFillMargin[]
static const wxChar PcbSelectionVisibilityRatio[]
static const wxChar TriangulateMinimumArea[]
static const wxChar OcePluginAngularDeflection[]
static const wxChar DRCSliverMinimumLength[]
static const wxChar ShowEventCounters[]
static const wxChar TraceMasks[]
static const wxChar Use3DConnexionDriver[]
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.