Must use addParamsForWindow to init WINDOW_SETTINGs structs.

(cherry picked from commit beb83e87ea6d3e690d7b4d91a8bafe05ef9331a1)
This commit is contained in:
Jeff Young 2025-07-17 16:14:13 +01:00
parent ac1aad35b7
commit 3949647754
11 changed files with 78 additions and 78 deletions

View File

@ -370,7 +370,7 @@ void APP_SETTINGS_BASE::addParamsForWindow( WINDOW_SETTINGS* aWindow, const std:
m_params.emplace_back( new PARAM<int>( aJsonPath + ".pos_y", &aWindow->state.pos_y, 0 ) );
m_params.emplace_back( new PARAM<unsigned int>( aJsonPath + ".display",
&aWindow->state.display, 0 ) );
&aWindow->state.display, 0 ) );
m_params.emplace_back( new PARAM_LIST<double>( aJsonPath + ".zoom_factors",
&aWindow->zoom_factors, DefaultZoomList(), true /* resetIfEmpty */ ) );

View File

@ -51,10 +51,10 @@ CVPCB_SETTINGS::CVPCB_SETTINGS() :
addParamsForWindow( &m_FootprintViewer, "footprint_viewer" );
m_params.emplace_back( new PARAM<double>( "footprint_viewer.zoom", &m_FootprintViewerZoom,
1.0 ) );
m_params.emplace_back( new PARAM<double>( "footprint_viewer.zoom",
&m_FootprintViewerZoom, 1.0 ) );
m_params.emplace_back( new PARAM<bool>( "footprint_viewer.autozoom",
&m_FootprintViewerAutoZoomOnSelect, true ) );
&m_FootprintViewerAutoZoomOnSelect, true ) );
m_params.emplace_back( new PARAM<bool>( "footprint_viewer.use_45_limit",
&m_ViewersDisplay.m_Use45Limit, true ) );

View File

@ -371,8 +371,11 @@ void DISPLAY_FOOTPRINTS_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
WINDOW_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return &cfg->m_FootprintViewer;
if( CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ) )
return &cfg->m_FootprintViewer;
wxFAIL_MSG( wxT( "DISPLAY_FOOTPRINTS_FRAME not running with CVPCB_SETTINGS" ) );
return &aCfg->m_Window; // non-null fail-safe
}
@ -384,8 +387,13 @@ PCB_VIEWERS_SETTINGS_BASE* DISPLAY_FOOTPRINTS_FRAME::GetViewerSettingsBase() con
MAGNETIC_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetMagneticItemsSettings()
{
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return &cfg->m_FootprintViewerMagneticSettings;
static MAGNETIC_SETTINGS fallback;
if( CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ) )
return &cfg->m_FootprintViewerMagneticSettings;
wxFAIL_MSG( wxT( "DISPLAY_FOOTPRINTS_FRAME not running with CVPCB_SETTINGS" ) );
return &fallback;
}

View File

@ -247,8 +247,7 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
m_params.emplace_back( new PARAM<bool>( "appearance.show_sexpr_file_convert_warning",
&m_Appearance.show_sexpr_file_convert_warning, true ) );
m_params.emplace_back(
new PARAM<bool>( "appearance.show_sheet_filename_case_sensitivity_dialog",
m_params.emplace_back( new PARAM<bool>( "appearance.show_sheet_filename_case_sensitivity_dialog",
&m_Appearance.show_sheet_filename_case_sensitivity_dialog, true ) );
m_params.emplace_back( new PARAM<bool>( "aui.show_schematic_hierarchy",
@ -356,8 +355,8 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
m_params.emplace_back( new PARAM<wxString>( "drawing.field_names",
&m_Drawing.field_names, "" ) );
m_params.emplace_back( new PARAM<int>( "drawing.line_mode", &m_Drawing.line_mode,
LINE_MODE::LINE_MODE_90 ) );
m_params.emplace_back( new PARAM<int>( "drawing.line_mode",
&m_Drawing.line_mode, LINE_MODE::LINE_MODE_90 ) );
m_params.emplace_back( new PARAM<bool>( "drawing.auto_start_wires",
&m_Drawing.auto_start_wires, true ) );
@ -378,17 +377,16 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
&m_Drawing.junction_size_choice, 3 ) );
m_params.emplace_back( new PARAM<bool>( "find_replace.search_all_fields",
&m_FindReplaceExtra.search_all_fields, false ) );
&m_FindReplaceExtra.search_all_fields, false ) );
m_params.emplace_back( new PARAM<bool>( "find_replace.search_all_pins",
&m_FindReplaceExtra.search_all_pins, false ) );
&m_FindReplaceExtra.search_all_pins, false ) );
m_params.emplace_back( new PARAM<bool>( "find_replace.search_current_sheet_only",
&m_FindReplaceExtra.search_current_sheet_only,
false ) );
&m_FindReplaceExtra.search_current_sheet_only, false ) );
m_params.emplace_back( new PARAM<bool>( "find_replace.replace_references",
&m_FindReplaceExtra.replace_references, false ) );
&m_FindReplaceExtra.replace_references, false ) );
m_params.emplace_back( new PARAM<bool>( "input.drag_is_move",
&m_Input.drag_is_move, false ) );
@ -513,21 +511,25 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
&m_PageSettings.export_comment9, false ) );
m_params.emplace_back( new PARAM_MAP<int>( "field_editor.field_widths",
&m_FieldEditorPanel.field_widths, {} ) );
&m_FieldEditorPanel.field_widths, {} ) );
m_params.emplace_back( new PARAM<int>( "field_editor.width", &m_FieldEditorPanel.width, 0 ) );
m_params.emplace_back( new PARAM<int>( "field_editor.width",
&m_FieldEditorPanel.width, 0 ) );
m_params.emplace_back( new PARAM<int>( "field_editor.height", &m_FieldEditorPanel.height, 0 ) );
m_params.emplace_back( new PARAM<int>( "field_editor.height",
&m_FieldEditorPanel.height, 0 ) );
m_params.emplace_back( new PARAM<int>( "field_editor.page", &m_FieldEditorPanel.page, 0 ) );
m_params.emplace_back( new PARAM<int>( "field_editor.page",
&m_FieldEditorPanel.page, 0 ) );
m_params.emplace_back( new PARAM<wxString>( "field_editor.export_filename",
&m_FieldEditorPanel.export_filename, wxT( "" ) ) );
&m_FieldEditorPanel.export_filename, wxT( "" ) ) );
m_params.emplace_back( new PARAM<int>( "field_editor.selection_mode",
&m_FieldEditorPanel.selection_mode, 0 ) );
&m_FieldEditorPanel.selection_mode, 0 ) );
m_params.emplace_back( new PARAM<int>( "field_editor.scope", &m_FieldEditorPanel.scope, 0 ) );
m_params.emplace_back( new PARAM<int>( "field_editor.scope",
&m_FieldEditorPanel.scope, 0 ) );
m_params.emplace_back( new PARAM<bool>( "plot.background_color",
&m_PlotPanel.background_color, false ) );
@ -587,49 +589,44 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
&m_Simulator.window.perspective, "" ) );
m_params.emplace_back( new PARAM<int>( "simulator.plot_panel_width",
&m_Simulator.view.plot_panel_width, 0 ) );
&m_Simulator.view.plot_panel_width, 0 ) );
m_params.emplace_back( new PARAM<int>( "simulator.plot_panel_height",
&m_Simulator.view.plot_panel_height, 0 ) );
&m_Simulator.view.plot_panel_height, 0 ) );
m_params.emplace_back( new PARAM<int>( "simulator.signal_panel_height",
&m_Simulator.view.signal_panel_height, 0 ) );
&m_Simulator.view.signal_panel_height, 0 ) );
m_params.emplace_back( new PARAM<int>( "simulator.cursors_panel_height",
&m_Simulator.view.cursors_panel_height, 0 ) );
&m_Simulator.view.cursors_panel_height, 0 ) );
m_params.emplace_back( new PARAM<int>( "simulator.measurements_panel_height",
&m_Simulator.view.measurements_panel_height, 0 ) );
&m_Simulator.view.measurements_panel_height, 0 ) );
m_params.emplace_back( new PARAM<bool>( "simulator.white_background",
&m_Simulator.view.white_background, false ) );
&m_Simulator.view.white_background, false ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>(
"simulator.mouse_wheel_actions.vertical_unmodified",
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.vertical_unmodified",
&m_Simulator.preferences.mouse_wheel_actions.vertical_unmodified,
SIM_MOUSE_WHEEL_ACTION::ZOOM, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>(
"simulator.mouse_wheel_actions.vertical_with_ctrl",
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.vertical_with_ctrl",
&m_Simulator.preferences.mouse_wheel_actions.vertical_with_ctrl,
SIM_MOUSE_WHEEL_ACTION::PAN_LEFT_RIGHT, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>(
"simulator.mouse_wheel_actions.vertical_with_shift",
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.vertical_with_shift",
&m_Simulator.preferences.mouse_wheel_actions.vertical_with_shift,
SIM_MOUSE_WHEEL_ACTION::PAN_UP_DOWN, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>(
"simulator.mouse_wheel_actions.vertical_with_alt",
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.vertical_with_alt",
&m_Simulator.preferences.mouse_wheel_actions.vertical_with_alt,
SIM_MOUSE_WHEEL_ACTION::NONE, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>(
"simulator.mouse_wheel_actions.horizontal",
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.horizontal",
&m_Simulator.preferences.mouse_wheel_actions.horizontal, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::NONE, SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
@ -731,26 +728,7 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
m_params.emplace_back( new PARAM<bool>( "system.never_show_rescue_dialog",
&m_RescueNeverShow, false ) );
m_params.emplace_back( new PARAM<int>( "lib_view.window.pos_x",
&m_LibViewPanel.window.state.pos_x, 0 ) );
m_params.emplace_back( new PARAM<int>( "lib_view.window.pos_y",
&m_LibViewPanel.window.state.pos_y, 0 ) );
m_params.emplace_back( new PARAM<int>( "lib_view.window.size_x",
&m_LibViewPanel.window.state.size_x, 500 ) );
m_params.emplace_back( new PARAM<int>( "lib_view.window.size_y",
&m_LibViewPanel.window.state.size_y, 400 ) );
m_params.emplace_back( new PARAM<unsigned int>( "lib_view.window.display",
&m_LibViewPanel.window.state.display, 0 ) );
m_params.emplace_back( new PARAM<bool>( "lib_view.window.maximized",
&m_LibViewPanel.window.state.maximized, false ) );
m_params.emplace_back( new PARAM<wxString>( "lib_view.window.perspective",
&m_LibViewPanel.window.perspective, "" ) );
addParamsForWindow( &m_LibViewPanel.window, "lib_view.window" );
m_params.emplace_back( new PARAM<int>( "lib_view.lib_list_width",
&m_LibViewPanel.lib_list_width, 150 ) );

View File

@ -275,7 +275,8 @@ WINDOW_SETTINGS* SIMULATOR_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
wxASSERT( cfg );
return cfg ? &cfg->m_Simulator.window : nullptr;
wxFAIL_MSG( wxT( "SIMULATOR not running with EESCHEMA_SETTINGS" ) );
return &aCfg->m_Window; // non-null fail-safe
}

View File

@ -191,9 +191,11 @@ void SYMBOL_CHOOSER_FRAME::OnOK( wxCommandEvent& aEvent )
WINDOW_SETTINGS* SYMBOL_CHOOSER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{
EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
wxASSERT( cfg );
return &cfg->m_LibViewPanel.window;
if( EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg ) )
return &cfg->m_LibViewPanel.window;
wxFAIL_MSG( wxT( "SYMBOL_CHOOSER not running with EESCHEMA_SETTINGS" ) );
return &aCfg->m_Window; // non-null fail-safe
}

View File

@ -899,9 +899,11 @@ void SYMBOL_VIEWER_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg)
WINDOW_SETTINGS* SYMBOL_VIEWER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{
EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
wxASSERT( cfg );
return &cfg->m_LibViewPanel.window;
if( EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg ) )
return &cfg->m_LibViewPanel.window;
wxFAIL_MSG( wxT( "SYMBOL_VIEWER not running with EESCHEMA_SETTINGS" ) );
return &aCfg->m_Window; // non-null fail-safe
}

View File

@ -822,10 +822,12 @@ COLOR_SETTINGS* FOOTPRINT_EDIT_FRAME::GetColorSettings( bool aForceRefresh ) con
MAGNETIC_SETTINGS* FOOTPRINT_EDIT_FRAME::GetMagneticItemsSettings()
{
// Get the actual frame settings for magnetic items
FOOTPRINT_EDITOR_SETTINGS* cfg = GetSettings();
wxCHECK( cfg, nullptr );
return &cfg->m_MagneticItems;
static MAGNETIC_SETTINGS fallback;
if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetSettings() )
return &cfg->m_MagneticItems;
return &fallback;
}

View File

@ -854,10 +854,11 @@ void FOOTPRINT_VIEWER_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
WINDOW_SETTINGS* FOOTPRINT_VIEWER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{
PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
wxCHECK_MSG( cfg, nullptr, wxT( "config not existing" ) );
if( PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
return &cfg->m_FootprintViewer;
return &cfg->m_FootprintViewer;
wxFAIL_MSG( wxT( "FOOTPRINT_CHOOSER not running with PCBNEW_SETTINGS" ) );
return &aCfg->m_Window; // non-null fail-safe
}

View File

@ -520,10 +520,11 @@ void FOOTPRINT_WIZARD_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
WINDOW_SETTINGS* FOOTPRINT_WIZARD_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{
auto cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
wxASSERT( cfg );
if( PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
return &cfg->m_FootprintWizard;
return cfg ? &cfg->m_FootprintWizard : nullptr;
wxFAIL_MSG( wxT( "FOOTPRINT_CHOOSER not running with PCBNEW_SETTINGS" ) );
return &aCfg->m_Window; // non-null fail-safe
}

View File

@ -913,7 +913,12 @@ PCB_VIEWERS_SETTINGS_BASE* PCB_BASE_FRAME::GetViewerSettingsBase() const
MAGNETIC_SETTINGS* PCB_BASE_FRAME::GetMagneticItemsSettings()
{
return &GetPcbNewSettings()->m_MagneticItems;
static MAGNETIC_SETTINGS fallback;
if( PCBNEW_SETTINGS* cfg = GetPcbNewSettings() )
return &cfg->m_MagneticItems;
return &fallback;
}