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

@ -51,8 +51,8 @@ CVPCB_SETTINGS::CVPCB_SETTINGS() :
addParamsForWindow( &m_FootprintViewer, "footprint_viewer" ); addParamsForWindow( &m_FootprintViewer, "footprint_viewer" );
m_params.emplace_back( new PARAM<double>( "footprint_viewer.zoom", &m_FootprintViewerZoom, m_params.emplace_back( new PARAM<double>( "footprint_viewer.zoom",
1.0 ) ); &m_FootprintViewerZoom, 1.0 ) );
m_params.emplace_back( new PARAM<bool>( "footprint_viewer.autozoom", m_params.emplace_back( new PARAM<bool>( "footprint_viewer.autozoom",
&m_FootprintViewerAutoZoomOnSelect, true ) ); &m_FootprintViewerAutoZoomOnSelect, 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 ) WINDOW_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{ {
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ); if( CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ) )
return &cfg->m_FootprintViewer; 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() MAGNETIC_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetMagneticItemsSettings()
{ {
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ); static MAGNETIC_SETTINGS fallback;
if( CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ) )
return &cfg->m_FootprintViewerMagneticSettings; 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_params.emplace_back( new PARAM<bool>( "appearance.show_sexpr_file_convert_warning",
&m_Appearance.show_sexpr_file_convert_warning, true ) ); &m_Appearance.show_sexpr_file_convert_warning, true ) );
m_params.emplace_back( m_params.emplace_back( new PARAM<bool>( "appearance.show_sheet_filename_case_sensitivity_dialog",
new PARAM<bool>( "appearance.show_sheet_filename_case_sensitivity_dialog",
&m_Appearance.show_sheet_filename_case_sensitivity_dialog, true ) ); &m_Appearance.show_sheet_filename_case_sensitivity_dialog, true ) );
m_params.emplace_back( new PARAM<bool>( "aui.show_schematic_hierarchy", 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_params.emplace_back( new PARAM<wxString>( "drawing.field_names",
&m_Drawing.field_names, "" ) ); &m_Drawing.field_names, "" ) );
m_params.emplace_back( new PARAM<int>( "drawing.line_mode", &m_Drawing.line_mode, m_params.emplace_back( new PARAM<int>( "drawing.line_mode",
LINE_MODE::LINE_MODE_90 ) ); &m_Drawing.line_mode, LINE_MODE::LINE_MODE_90 ) );
m_params.emplace_back( new PARAM<bool>( "drawing.auto_start_wires", m_params.emplace_back( new PARAM<bool>( "drawing.auto_start_wires",
&m_Drawing.auto_start_wires, true ) ); &m_Drawing.auto_start_wires, true ) );
@ -384,8 +383,7 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
&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_params.emplace_back( new PARAM<bool>( "find_replace.search_current_sheet_only",
&m_FindReplaceExtra.search_current_sheet_only, &m_FindReplaceExtra.search_current_sheet_only, false ) );
false ) );
m_params.emplace_back( new PARAM<bool>( "find_replace.replace_references", m_params.emplace_back( new PARAM<bool>( "find_replace.replace_references",
&m_FindReplaceExtra.replace_references, false ) ); &m_FindReplaceExtra.replace_references, false ) );
@ -515,11 +513,14 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
m_params.emplace_back( new PARAM_MAP<int>( "field_editor.field_widths", 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_params.emplace_back( new PARAM<wxString>( "field_editor.export_filename",
&m_FieldEditorPanel.export_filename, wxT( "" ) ) ); &m_FieldEditorPanel.export_filename, wxT( "" ) ) );
@ -527,7 +528,8 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
m_params.emplace_back( new PARAM<int>( "field_editor.selection_mode", 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_params.emplace_back( new PARAM<bool>( "plot.background_color",
&m_PlotPanel.background_color, false ) ); &m_PlotPanel.background_color, false ) );
@ -604,32 +606,27 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
m_params.emplace_back( new PARAM<bool>( "simulator.white_background", 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>( m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.vertical_unmodified",
"simulator.mouse_wheel_actions.vertical_unmodified",
&m_Simulator.preferences.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, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) ); SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.vertical_with_ctrl",
"simulator.mouse_wheel_actions.vertical_with_ctrl",
&m_Simulator.preferences.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::PAN_LEFT_RIGHT, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) ); SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.vertical_with_shift",
"simulator.mouse_wheel_actions.vertical_with_shift",
&m_Simulator.preferences.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::PAN_UP_DOWN, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) ); SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.vertical_with_alt",
"simulator.mouse_wheel_actions.vertical_with_alt",
&m_Simulator.preferences.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::NONE, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) ); SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) );
m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( m_params.emplace_back( new PARAM_ENUM<SIM_MOUSE_WHEEL_ACTION>( "simulator.mouse_wheel_actions.horizontal",
"simulator.mouse_wheel_actions.horizontal",
&m_Simulator.preferences.mouse_wheel_actions.horizontal, SIM_MOUSE_WHEEL_ACTION::NONE, &m_Simulator.preferences.mouse_wheel_actions.horizontal, SIM_MOUSE_WHEEL_ACTION::NONE,
SIM_MOUSE_WHEEL_ACTION::NONE, SIM_MOUSE_WHEEL_ACTION::ZOOM_VERTICALLY ) ); 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_params.emplace_back( new PARAM<bool>( "system.never_show_rescue_dialog",
&m_RescueNeverShow, false ) ); &m_RescueNeverShow, false ) );
m_params.emplace_back( new PARAM<int>( "lib_view.window.pos_x", addParamsForWindow( &m_LibViewPanel.window, "lib_view.window" );
&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, "" ) );
m_params.emplace_back( new PARAM<int>( "lib_view.lib_list_width", m_params.emplace_back( new PARAM<int>( "lib_view.lib_list_width",
&m_LibViewPanel.lib_list_width, 150 ) ); &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 ); EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
wxASSERT( cfg ); 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 ) WINDOW_SETTINGS* SYMBOL_CHOOSER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{ {
EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg ); if( EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg ) )
wxASSERT( cfg );
return &cfg->m_LibViewPanel.window; 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 ) WINDOW_SETTINGS* SYMBOL_VIEWER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{ {
EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg ); if( EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg ) )
wxASSERT( cfg );
return &cfg->m_LibViewPanel.window; 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() MAGNETIC_SETTINGS* FOOTPRINT_EDIT_FRAME::GetMagneticItemsSettings()
{ {
// Get the actual frame settings for magnetic items static MAGNETIC_SETTINGS fallback;
FOOTPRINT_EDITOR_SETTINGS* cfg = GetSettings();
wxCHECK( cfg, nullptr ); if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetSettings() )
return &cfg->m_MagneticItems; 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 ) WINDOW_SETTINGS* FOOTPRINT_VIEWER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{ {
PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ); if( PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
wxCHECK_MSG( cfg, nullptr, wxT( "config not existing" ) );
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 ) WINDOW_SETTINGS* FOOTPRINT_WIZARD_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{ {
auto cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ); if( PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
wxASSERT( cfg ); 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() 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;
} }