26#include <dialogs/dialog_bom_cfg_lexer.h> 
   42using namespace T_BOMCFG_T;     
 
   52                { 
"name", 
"bom_csv_grouped_extra" },
 
   53                { 
"path", 
"bom_csv_grouped_extra.py" }
 
   56                { 
"name", 
"bom_csv_grouped_by_value" },
 
   57                { 
"path", 
"bom_csv_grouped_by_value.py" }
 
   60                { 
"name", 
"bom_csv_grouped_by_value_with_fp" },
 
   61                { 
"path", 
"bom_csv_grouped_by_value_with_fp.py" }
 
 
   68    static wxAuiPaneInfo paneInfo;
 
   70    paneInfo.Name( wxS( 
"NetNavigator" ) )
 
   71            .Caption( 
_( 
"Net Navigator" ) )
 
   72            .CaptionVisible( 
true )
 
   74            .Left().Layer( 3 ).Position( 0 )
 
   76            .BottomDockable( 
false )
 
   80            .FloatingSize( 200, 200 )
 
   81            .FloatingPosition( 50, 200 )
 
 
   90    static wxAuiPaneInfo paneInfo;
 
   93            .Caption( 
_( 
"Properties" ) )
 
   94            .CaptionVisible( 
true )
 
   96            .Left().Layer( 3 ).Position( 2 )
 
   98            .BottomDockable( 
false )
 
  100            .MinSize( aWindow->FromDIP( wxSize( 240, 60 ) ) )
 
  101            .BestSize( aWindow->FromDIP( wxSize( 300, 200 ) ) )
 
  102            .FloatingSize( aWindow->FromDIP( wxSize( 300, 400 ) ) )
 
  103            .FloatingPosition( aWindow->FromDIP( wxPoint( 50, 200 ) ) )
 
 
  112    static wxAuiPaneInfo paneInfo;
 
  114    paneInfo.Name( wxS( 
"SelectionFilter" ) )
 
  115            .Caption( 
_( 
"Selection Filter" ) )
 
  116            .CaptionVisible( 
true )
 
  118            .Left().Layer( 3 ).Position( 4 )
 
  119            .TopDockable( 
false )
 
  120            .BottomDockable( 
false )
 
  122            .MinSize( aWindow->FromDIP( wxSize( 180, -1 ) ) )
 
  123            .BestSize( aWindow->FromDIP( wxSize( 180, -1 ) ) )
 
 
  132    static wxAuiPaneInfo paneInfo;
 
  135            .Caption( 
_( 
"Design Blocks" ) )
 
  136            .CaptionVisible( 
true )
 
  138            .Right().Layer( 3 ).Position( 2 )
 
  139            .TopDockable( 
false )
 
  140            .BottomDockable( 
false )
 
  142            .MinSize( aWindow->FromDIP( wxSize( 240, 60 ) ) )
 
  143            .BestSize( aWindow->FromDIP( wxSize( 300, 200 ) ) )
 
  144            .FloatingSize( aWindow->FromDIP( wxSize( 800, 600 ) ) )
 
  145            .FloatingPosition( aWindow->FromDIP( wxPoint( 50, 200 ) ) )
 
 
  173            &
m_Appearance.edit_symbol_visible_columns, 
"0 1 2 3 4 5 6 7" ) );
 
  182            &
m_Appearance.edit_sheet_visible_columns, 
"0 1 2 3 4 5 6 7" ) );
 
  185            &
m_Appearance.edit_label_visible_columns, 
"0 1 2 3 4 5 6 7" ) );
 
  239            &
m_Appearance.show_sexpr_file_convert_warning, 
true ) );
 
  241    m_params.emplace_back( 
new PARAM<bool>( 
"appearance.show_sheet_filename_case_sensitivity_dialog",
 
  242            &
m_Appearance.show_sheet_filename_case_sensitivity_dialog, 
true ) );
 
  251            &
m_AuiPanels.hierarchy_panel_docked_height, -1 ) );
 
  263            &
m_AuiPanels.design_blocks_panel_docked_width, -1 ) );
 
  266            &
m_AuiPanels.design_blocks_panel_float_width, -1 ) );
 
  269            &
m_AuiPanels.design_blocks_panel_float_height, -1 ) );
 
  293            &
m_AuiPanels.net_nav_panel_docked_size, wxSize( 120, -1 ) ) );
 
  296            &
m_AuiPanels.net_nav_panel_float_pos, wxPoint( 50, 200 ), 
false ) );
 
  299            &
m_AuiPanels.net_nav_panel_float_size, wxSize( 200, 200 ) ) );
 
  302            &
m_AuiPanels.net_nav_search_mode_wildcard, 
true ) );
 
  338            &
m_Drawing.default_repeat_offset_x, 0 ) );
 
  341            &
m_Drawing.default_repeat_offset_y, 100 ) );
 
  356            reinterpret_cast<int*
>( &
m_Drawing.arc_edit_mode ),
 
  363            &
m_Drawing.repeat_label_increment, 1 ) );
 
  375            &
m_Drawing.junction_size_mult_list, { 0.0, 1.7, 4.0, 6.0, 9.0, 12.0 } ) );
 
  396            &
m_Input.drag_is_move, 
false ) );
 
  399            &
m_Input.allow_unconstrained_pin_swaps, 
false ) );
 
  402            &
m_Input.esc_clears_net_highlight, 
true ) );
 
  419    m_params.emplace_back( 
new PARAM<int>( 
"selection.highlight_netclass_colors_thickness",
 
  420            &
m_Selection.highlight_netclass_colors_thickness, 15, 0, 50 ) );
 
  423            &
m_Selection.highlight_netclass_colors_alpha, 0.6, 0, 1 ) );
 
  426            &
m_Selection.drag_net_collision_width, 4, 1, 50 ) );
 
  449            [&]( 
const nlohmann::json& aObj )
 
  451                if( !aObj.is_array() )
 
  454                const nlohmann::json& list = aObj.empty() ? defaultBomPlugins : aObj;
 
  456                m_BomPanel.plugins = bomSettingsFromJson( list );
 
  462            [&]( 
const nlohmann::json& aObj )
 
  464                if( !aObj.is_array() )
 
  470                const nlohmann::json& list = aObj;
 
  472                m_NetlistPanel.plugins = netlistSettingsFromJson( list );
 
  551            &
m_Simulator.view.measurements_panel_height, 0 ) );
 
  557            &
m_Simulator.preferences.mouse_wheel_actions.vertical_unmodified,
 
  562            &
m_Simulator.preferences.mouse_wheel_actions.vertical_with_ctrl,
 
  567            &
m_Simulator.preferences.mouse_wheel_actions.vertical_with_shift,
 
  572            &
m_Simulator.preferences.mouse_wheel_actions.vertical_with_alt,
 
  659                if( std::optional<int> optval = 
Get<int>( 
"lib_tree.column_width" ) )
 
  662                        Set( 
"lib_tree.column_width",  300 );
 
 
  684    std::string gridSizePtr = 
"window.grid.last_size";
 
  686    if( std::optional<int> currentSize = 
Get<int>( gridSizePtr ) )
 
  688        Set( gridSizePtr, *currentSize - 4 );
 
  693        Set( gridSizePtr,  1 );
 
  696    ret &= 
fromLegacy<bool>( aCfg, 
"FootprintPreview",   
"appearance.footprint_preview" );
 
  697    ret &= 
fromLegacy<bool>( aCfg, 
"NavigatorStaysOpen", 
"appearance.navigator_stays_open" );
 
  699            "appearance.print_sheet_reference" );
 
  700    ret &= 
fromLegacy<bool>( aCfg, 
"ShowHiddenPins",     
"appearance.show_hidden_pins" );
 
  702            "appearance.show_illegal_symbol_lib_dialog" );
 
  703    ret &= 
fromLegacy<bool>( aCfg, 
"ShowPageLimits",     
"appearance.show_page_limits" );
 
  705            "appearance.show_sheet_filename_case_sensitivity_dialog" );
 
  707    ret &= 
fromLegacy<bool>( aCfg, 
"AutoplaceFields",     
"autoplace_fields.enable" );
 
  708    ret &= 
fromLegacy<bool>( aCfg, 
"AutoplaceJustify",    
"autoplace_fields.allow_rejustify" );
 
  709    ret &= 
fromLegacy<bool>( aCfg, 
"AutoplaceAlign",      
"autoplace_fields.align_to_grid" );
 
  711    ret &= 
fromLegacy<int>(  aCfg, 
"DefaultBusWidth",      
"drawing.default_bus_thickness" );
 
  712    ret &= 
fromLegacy<int>(  aCfg, 
"DefaultJunctionSize",  
"drawing.default_junction_size" );
 
  713    ret &= 
fromLegacy<int>(  aCfg, 
"DefaultDrawLineWidth", 
"drawing.default_line_thickness" );
 
  714    ret &= 
fromLegacy<int>(  aCfg, 
"RepeatStepX",          
"drawing.default_repeat_offset_x" );
 
  715    ret &= 
fromLegacy<int>(  aCfg, 
"RepeatStepY",          
"drawing.default_repeat_offset_y" );
 
  716    ret &= 
fromLegacy<int>(  aCfg, 
"DefaultWireWidth",     
"drawing.default_wire_thickness" );
 
  719    ret &= 
fromLegacy<int>(  aCfg, 
"RepeatLabelIncrement", 
"drawing.repeat_label_increment" );
 
  723    ret &= 
fromLegacy<int>(  aCfg, 
"SelectionThickness",      
"selection.thickness" );
 
  724    ret &= 
fromLegacy<bool>( aCfg, 
"SelectionDrawChildItems", 
"selection.draw_selected_children" );
 
  725    ret &= 
fromLegacy<bool>( aCfg, 
"SelectionFillShapes",     
"selection.fill_shapes" );
 
  727            "selection.select_pin_selects_symbol" );
 
  729    ret &= 
fromLegacy<int>(  aCfg, 
"AnnotateFilterMsg",       
"annotation.messages_filter" );
 
  731    ret &= 
fromLegacyString( aCfg, 
"bom_plugin_selected",     
"bom.selected_plugin" );
 
  737            "edit_sch_component.visible_columns" );
 
  739    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportRevision", 
"page_settings.export_revision" );
 
  740    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportDate",     
"page_settings.export_date" );
 
  741    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportTitle",    
"page_settings.export_title" );
 
  742    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportCompany",  
"page_settings.export_company" );
 
  743    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment1", 
"page_settings.export_comment1" );
 
  744    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment2", 
"page_settings.export_comment2" );
 
  745    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment3", 
"page_settings.export_comment3" );
 
  746    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment4", 
"page_settings.export_comment4" );
 
  747    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment5", 
"page_settings.export_comment5" );
 
  748    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment6", 
"page_settings.export_comment6" );
 
  749    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment7", 
"page_settings.export_comment7" );
 
  750    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment8", 
"page_settings.export_comment8" );
 
  751    ret &= 
fromLegacy<bool>( aCfg, 
"PageSettingsExportComment9", 
"page_settings.export_comment9" );
 
  755        constexpr int max_custom_commands = 8;  
 
  756        nlohmann::json js_cmd   = nlohmann::json::array();
 
  757        nlohmann::json js_title = nlohmann::json::array();
 
  758        wxString cmd_key, title_key, cmd, title;
 
  760        for( 
int i = 1; i <= max_custom_commands; ++i )
 
  763            cmd_key.Printf( 
"CustomNetlistCommand%d", i );
 
  764            title_key.Printf( 
"CustomNetlistTitle%d", i );
 
  766            if( aCfg->Read( cmd_key, &cmd ) && aCfg->Read( title_key, &title )
 
  767                && !cmd.IsEmpty() && !title.IsEmpty() )
 
  769                js_cmd.push_back( cmd.ToUTF8() );
 
  770                js_title.push_back( title.ToUTF8() );
 
  774        Set( 
"netlist.custom_command_titles", js_title );
 
  775        Set( 
"netlist.custom_command_paths", js_cmd );
 
  784        aCfg->SetPath( 
"SymbolFieldEditor/Show/" );
 
  786        nlohmann::json js = nlohmann::json( {} );
 
  791        while( aCfg->GetNextEntry( key, index ) )
 
  793            if( aCfg->Read( key, &value ) )
 
  795                std::string key_utf( key.ToUTF8() );
 
  799                    js[ std::move( key_utf ) ] = value;
 
  808        Set( 
"field_editor.fields_show", js );
 
  810        aCfg->SetPath( 
"../GroupBy" );
 
  812        while( aCfg->GetNextEntry( key, index ) )
 
  814            if( aCfg->Read( key, &value ) )
 
  816                std::string key_utf( key.ToUTF8() );
 
  820                    js[ std::move( key_utf ) ] = value;
 
  829        Set( 
"field_editor.fields_group_by", js );
 
  831        aCfg->SetPath( 
"../.." );
 
  838    ret &= 
fromLegacy<int>(    aCfg, 
"SIM_PLOT_FRAMEPos_x",       
"simulator.window.pos_x" );
 
  839    ret &= 
fromLegacy<int>(    aCfg, 
"SIM_PLOT_FRAMEPos_y",       
"simulator.window.pos_y" );
 
  840    ret &= 
fromLegacy<int>(    aCfg, 
"SIM_PLOT_FRAMESize_x",      
"simulator.window.size_x" );
 
  841    ret &= 
fromLegacy<int>(    aCfg, 
"SIM_PLOT_FRAMESize_y",      
"simulator.window.size_y" );
 
  842    ret &= 
fromLegacy<bool>(   aCfg, 
"SIM_PLOT_FRAMEMaximized",   
"simulator.window.maximized" );
 
  843    ret &= 
fromLegacyString(   aCfg, 
"SIM_PLOT_FRAMEPerspective", 
"simulator.window.perspective" );
 
  844    ret &= 
fromLegacyString(   aCfg, 
"SIM_PLOT_FRAMEMostRecentlyUsedPath", 
"simulator.mru_path" );
 
  845    ret &= 
fromLegacy<int>(    aCfg, 
"SimPlotPanelWidth",        
"simulator.plot_panel_width" );
 
  846    ret &= 
fromLegacy<int>(    aCfg, 
"SimPlotPanelHeight",       
"simulator.plot_panel_height" );
 
  847    ret &= 
fromLegacy<int>(    aCfg, 
"SimSignalPanelHeight",     
"simulator.signal_panel_height" );
 
  848    ret &= 
fromLegacy<int>(    aCfg, 
"SimCursorsPanelHeight",    
"simulator.cursors_panel_height" );
 
  849    ret &= 
fromLegacy<bool>(   aCfg, 
"SimPlotWhiteBg",           
"simulator.white_background" );
 
  851    ret &= 
fromLegacy<int>(  aCfg, 
"SymbolChooserHSashPosition", 
"symbol_chooser.sash_pos_h" );
 
  852    ret &= 
fromLegacy<int>(  aCfg, 
"SymbolChooserVSashPosition", 
"symbol_chooser.sash_pos_v" );
 
  853    ret &= 
fromLegacy<int>(  aCfg, 
"SymbolChooserWidth",         
"symbol_chooser.width" );
 
  854    ret &= 
fromLegacy<int>(  aCfg, 
"SymbolChooserHeight",        
"symbol_chooser.height" );
 
  856    const std::string vlf = 
"ViewlibFrame";
 
  857    ret &= 
fromLegacy<bool>( aCfg, vlf + 
"Maximized",            
"lib_view.window.maximized" );
 
  858    ret &= 
fromLegacyString( aCfg, vlf + 
"MostRecentlyUsedPath", 
"lib_view.window.mru_path" );
 
  859    ret &= 
fromLegacy<int>(  aCfg, vlf + 
"Size_x",               
"lib_view.window.size_x" );
 
  860    ret &= 
fromLegacy<int>(  aCfg, vlf + 
"Size_y",               
"lib_view.window.size_y" );
 
  861    ret &= 
fromLegacyString( aCfg, vlf + 
"Perspective",          
"lib_view.window.perspective" );
 
  862    ret &= 
fromLegacy<int>(  aCfg, vlf + 
"Pos_x",                
"lib_view.window.pos_x" );
 
  863    ret &= 
fromLegacy<int>(  aCfg, vlf + 
"Pos_y",                
"lib_view.window.pos_y" );
 
  864    ret &= 
fromLegacy<int>(  aCfg, 
"ViewLiblistWidth",           
"lib_view.lib_list_width" );
 
  865    ret &= 
fromLegacy<int>(  aCfg, 
"ViewCmplistWidth",           
"lib_view.cmp_list_width" );
 
  867            "ViewCmpShowPinElectricalType", 
"lib_view.show_pin_electrical_type" );
 
  869    ret &= 
fromLegacy<int>(  aCfg, vlf + 
"_LastGridSize",        
"lib_view.grid.last_size" );
 
  871    ret &= 
fromLegacy<bool>( aCfg, 
"RescueNeverShow",     
"system.never_show_rescue_dialog" );
 
  876    if( aCfg->Read( 
"MoveWarpsCursor", &tmp ) )
 
  882    auto migrateLegacyColor =
 
  883            [&] ( 
const std::string& aKey, 
int aLayerId )
 
  887                if( aCfg->Read( aKey, &str ) )
 
  895    migrateLegacyColor( 
"Color4DBusEx",             
LAYER_BUS );
 
  907    migrateLegacyColor( 
"Color4DNoteEx",            
LAYER_NOTES );
 
  908    migrateLegacyColor( 
"Color4DPinEx",             
LAYER_PIN );
 
  913    migrateLegacyColor( 
"Color4DSheetEx",           
LAYER_SHEET );
 
  918    migrateLegacyColor( 
"Color4DWireEx",            
LAYER_WIRE );
 
  930        sym_edit_cfg->MigrateFromLegacy( aCfg );
 
  931        sym_edit_cfg->Load();
 
 
  947    BOM_CFG_PARSER( std::vector<EESCHEMA_SETTINGS::BOM_PLUGIN_SETTINGS>* aPluginList,
 
  948                    const char* aData, 
const wxString& aSource );
 
 
  990    nlohmann::json js = nlohmann::json::array();
 
  994        nlohmann::json pluginJson;
 
  996        pluginJson[
"name"]    = plugin.
name.ToUTF8();
 
  997        pluginJson[
"path"]    = plugin.
path.ToUTF8();
 
  998        pluginJson[
"command"] = plugin.
command.ToUTF8();
 
 1000        js.push_back( pluginJson );
 
 
 1008        const nlohmann::json& aObj )
 
 1010    std::vector<EESCHEMA_SETTINGS::BOM_PLUGIN_SETTINGS> ret;
 
 1012    wxASSERT( aObj.is_array() );
 
 1014    for( 
const nlohmann::json& entry : aObj )
 
 1016        if( entry.empty() || !entry.is_object() )
 
 1019        if( !entry.contains( 
"name" ) || !entry.contains( 
"path" ) )
 
 1023                                    entry.at( 
"path" ).get<wxString>() );
 
 1025        if( entry.contains( 
"command" ) )
 
 1026            plugin.
command = entry.at( 
"command" ).get<wxString>();
 
 1028        ret.emplace_back( plugin );
 
 
 1037    nlohmann::json js = nlohmann::json::array();
 
 1041        nlohmann::json pluginJson;
 
 1043        pluginJson[
"name"]    = plugin.
name.ToUTF8();
 
 1044        pluginJson[
"path"]    = plugin.
path.ToUTF8();
 
 1045        pluginJson[
"command"] = plugin.
command.ToUTF8();
 
 1047        js.push_back( pluginJson );
 
 
 1055        const nlohmann::json& aObj )
 
 1057    std::vector<EESCHEMA_SETTINGS::NETLIST_PLUGIN_SETTINGS> ret;
 
 1059    wxASSERT( aObj.is_array() );
 
 1061    for( 
const nlohmann::json& entry : aObj )
 
 1063        if( entry.empty() || !entry.is_object() )
 
 1066        if( !entry.contains( 
"name" ) || !entry.contains( 
"path" ) )
 
 1070                                    entry.at( 
"path" ).get<wxString>() );
 
 1072        if( entry.contains( 
"command" ) )
 
 1073            plugin.
command = entry.at( 
"command" ).get<wxString>();
 
 1075        ret.emplace_back( plugin );
 
 
 1083                                const char* aLine, 
const wxString& aSource ) :
 
 1084        DIALOG_BOM_CFG_LEXER( aLine, aSource )
 
 1086    wxASSERT( aPluginList );
 
 
 1095    while( ( token = NextTok() ) != T_RIGHT )
 
 1100        if( token == T_LEFT )
 
 1103        if( token == T_plugins )
 
 
 1125    NeedSYMBOLorNUMBER();
 
 1126    settings.
path = FromUTF8();
 
 1130    while( ( token = NextTok() ) != T_RIGHT )
 
 1141            NeedSYMBOLorNUMBER();
 
 1143            settings.
command = FromUTF8();
 
 1150            NeedSYMBOLorNUMBER();
 
 1152            wxString option = FromUTF8();
 
 1154            if( option.StartsWith( wxS( 
"nickname=" ), &str ) )
 
 1155                settings.
name = str;
 
 1162            Unexpected( CurText() );
 
 
@ KEEP_CENTER_ADJUST_ANGLE_RADIUS
When editing endpoints, the angle and radius are adjusted.
 
APP_SETTINGS_BASE(const std::string &aFilename, int aSchemaVersion)
 
void addParamsForWindow(WINDOW_SETTINGS *aWindow, const std::string &aJsonPath, int aDefaultWidth=0, int aDefaultHeight=0)
Add parameters for the given window object.
 
virtual bool MigrateFromLegacy(wxConfigBase *aCfg) override
Migrates from wxConfig to JSON-based configuration.
 
bool migrateLibTreeWidth()
Migrate the library tree width setting from a single column (Item) to multi-column.
 
Used for parsing legacy-format bom plugin configurations.
 
BOM_CFG_PARSER(std::vector< EESCHEMA_SETTINGS::BOM_PLUGIN_SETTINGS > *aPluginList, const char *aData, const wxString &aSource)
 
std::vector< EESCHEMA_SETTINGS::BOM_PLUGIN_SETTINGS > * m_pluginList
 
static const COLOR4D UNSPECIFIED
For legacy support; used as a value to indicate color hasn't been set yet.
 
Color settings are a bit different than most of the settings objects in that there can be more than o...
 
void SetColor(int aLayer, const COLOR4D &aColor)
 
static const wxString PropertiesPaneName()
 
static const wxString DesignBlocksPaneName()
 
PANEL_ANNOTATE m_AnnotatePanel
 
static std::vector< BOM_PLUGIN_SETTINGS > DefaultBomPlugins()
 
bool migrateBomSettings()
 
PANEL_NETLIST m_NetlistPanel
 
nlohmann::json bomSettingsToJson() const
 
virtual bool MigrateFromLegacy(wxConfigBase *aLegacyConfig) override
Migrates from wxConfig to JSON-based configuration.
 
DIALOG_CHANGE_SYMBOLS m_ChangeSymbols
 
nlohmann::json netlistSettingsToJson() const
 
PANEL_SYM_CHOOSER m_SymChooserPanel
 
PAGE_SETTINGS m_PageSettings
 
static std::vector< BOM_PLUGIN_SETTINGS > bomSettingsFromJson(const nlohmann::json &aObj)
 
FIND_REPLACE_EXTRA m_FindReplaceExtra
 
wxString m_lastSymbolLibDir
 
PANEL_LIB_VIEW m_LibViewPanel
 
AUTOPLACE_FIELDS m_AutoplaceFields
 
DIALOG_IMPORT_GRAPHICS m_ImportGraphics
 
static std::vector< NETLIST_PLUGIN_SETTINGS > netlistSettingsFromJson(const nlohmann::json &aObj)
 
PANEL_SYMBOL_FIELDS_TABLE m_FieldEditorPanel
 
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
 
bool fromLegacyString(wxConfigBase *aConfig, const std::string &aKey, const std::string &aDest)
Translates a legacy wxConfig string value to a given JSON pointer value.
 
bool fromLegacy(wxConfigBase *aConfig, const std::string &aKey, const std::string &aDest)
Translates a legacy wxConfig value to a given JSON pointer value.
 
void Set(const std::string &aPath, ValueType aVal)
Stores a value into the JSON document Will throw an exception if ValueType isn't something that the l...
 
bool Contains(const std::string &aPath) const
 
std::optional< ValueType > Get(const std::string &aPath) const
Fetches a value from within the JSON document.
 
std::vector< PARAM_BASE * > m_params
The list of parameters (owned by this object)
 
void registerMigration(int aOldSchemaVersion, int aNewSchemaVersion, std::function< bool(void)> aMigrator)
Registers a migration from one schema version to another.
 
nlohmann::json & At(const std::string &aPath)
Wrappers for the underlying JSON API so that most consumers don't need json.hpp All of these function...
 
wxString GetFilename() const
 
A color representation with 4 components: red, green, blue, alpha.
 
Stores an enum as an integer.
 
Like a normal param, but with custom getter and setter functions.
 
Represents a map of <std::string, Value>.
 
virtual COMMON_SETTINGS * GetCommonSettings() const
 
virtual SETTINGS_MANAGER & GetSettingsManager() const
 
void SaveColorSettings(COLOR_SETTINGS *aSettings, const std::string &aNamespace="")
Safely save a COLOR_SETTINGS to disk, preserving any changes outside the given namespace.
 
COLOR_SETTINGS * GetMigratedColorSettings()
Return a color theme for storing colors migrated from legacy (5.x and earlier) settings,...
 
#define DEFAULT_BUS_WIDTH_MILS
The default noconnect size in mils.
 
#define DEFAULT_JUNCTION_DIAM
The default bus and wire entry size in mils.
 
#define DEFAULT_WIRE_WIDTH_MILS
The default bus width in mils. (can be changed in preference menu)
 
#define DEFAULT_LINE_WIDTH_MILS
The default wire width in mils. (can be changed in preference menu)
 
#define DEFAULT_TEXT_SIZE
Ratio of the font height to the baseline of the text above the wire.
 
const nlohmann::json defaultBomPlugins
Default value for bom.plugins.
 
const wxAuiPaneInfo & defaultSchSelectionFilterPaneInfo(wxWindow *aWindow)
 
const wxAuiPaneInfo & defaultPropertiesPaneInfo(wxWindow *aWindow)
 
const wxAuiPaneInfo & defaultNetNavigatorPaneInfo()
 
const int eeschemaSchemaVersion
Update the schema version whenever a migration is required.
 
const wxAuiPaneInfo & defaultDesignBlocksPaneInfo(wxWindow *aWindow)
 
@ LAYER_DEVICE_BACKGROUND
 
@ LAYER_SCHEMATIC_DRAWINGSHEET
 
@ LAYER_SELECTION_SHADOWS
 
@ LAYER_SCHEMATIC_BACKGROUND
 
PGM_BASE & Pgm()
The global program "get" accessor.
 
T * GetAppSettings(const char *aFilename)
 
#define TO_UTF8(wxstring)
Convert a wxString to a UTF8 encoded C string for all wxWidgets build modes.
 
Functions to provide common constants and other functions to assist in making a consistent UI.