Repair COMMON_TOOLS to know about frame-specific WINDOW_SETTINGS

Remove the older architectures for ensuring non-empty
grids and zooms

Move new architecture to PARAM_LIST::Load,
and add zoom support

Fixes https://gitlab.com/kicad/code/kicad/-/issues/21318
This commit is contained in:
Jeff Young 2025-07-15 15:22:18 +01:00
parent 486522e0b4
commit 6541202d42
10 changed files with 112 additions and 139 deletions

View File

@ -29,6 +29,7 @@
#include <settings/common_settings.h>
#include <settings/grid_settings.h>
#include <settings/parameters.h>
#include <zoom_defines.h>
APP_SETTINGS_BASE::APP_SETTINGS_BASE( const std::string& aFilename, int aSchemaVersion ) :
@ -432,7 +433,7 @@ void APP_SETTINGS_BASE::addParamsForWindow( WINDOW_SETTINGS* aWindow, const std:
&aWindow->state.display, 0 ) );
m_params.emplace_back( new PARAM_LIST<double>( aJsonPath + ".zoom_factors",
&aWindow->zoom_factors, {} ) );
&aWindow->zoom_factors, DefaultZoomList(), true /* resetIfEmpty */ ) );
m_params.emplace_back( new PARAM<bool>( aJsonPath + ".grid.axes_enabled",
&aWindow->grid.axes_enabled, false ) );
@ -453,11 +454,7 @@ void APP_SETTINGS_BASE::addParamsForWindow( WINDOW_SETTINGS* aWindow, const std:
}
m_params.emplace_back( new PARAM_LIST<GRID>( aJsonPath + ".grid.sizes", &aWindow->grid.grids,
DefaultGridSizeList() ) );
// Force grids to have at least 1 entry. If not, reset to default.
if( aWindow->grid.grids.empty() )
aWindow->grid.grids = DefaultGridSizeList();
DefaultGridSizeList(), true /* resetIfEmpty */ ) );
m_params.emplace_back( new PARAM<int>( aJsonPath + ".grid.last_size",
&aWindow->grid.last_size_idx, defaultGridIdx ) );
@ -551,6 +548,30 @@ void APP_SETTINGS_BASE::addParamsForWindow( WINDOW_SETTINGS* aWindow, const std:
}
const std::vector<double> APP_SETTINGS_BASE::DefaultZoomList() const
{
if( m_filename == wxS( "eeschema" ) || m_filename == wxS( "symbol_editor" ) )
{
return { ZOOM_LIST_EESCHEMA };
}
else if( m_filename == wxS( "pl_editor" ) )
{
return { ZOOM_LIST_PL_EDITOR };
}
else if( m_filename == wxS( "gerbview" ) )
{
return { ZOOM_LIST_GERBVIEW };
}
else
{
if( ADVANCED_CFG::GetCfg().m_HyperZoom )
return { ZOOM_LIST_PCBNEW_HYPER };
else
return { ZOOM_LIST_PCBNEW };
}
}
const std::vector<GRID> APP_SETTINGS_BASE::DefaultGridSizeList() const
{
if( m_filename == wxS( "eeschema" ) || m_filename == wxS( "symbol_editor" ) )
@ -560,6 +581,42 @@ const std::vector<GRID> APP_SETTINGS_BASE::DefaultGridSizeList() const
GRID{ wxEmptyString, wxS( "25 mil" ), wxS( "25 mil" ) },
GRID{ wxEmptyString, wxS( "10 mil" ), wxS( "10 mil" ) } };
}
else if( m_filename == wxS( "pl_editor" ) )
{
return { GRID{ wxEmptyString, wxS( "5.00 mm" ), wxS( "5.00 mm" ) },
GRID{ wxEmptyString, wxS( "2.50 mm" ), wxS( "2.50 mm" ) },
GRID{ wxEmptyString, wxS( "2.00 mm" ), wxS( "2.00 mm" ) },
GRID{ wxEmptyString, wxS( "1.00 mm" ), wxS( "1.00 mm" ) },
GRID{ wxEmptyString, wxS( "0.50 mm" ), wxS( "0.50 mm" ) },
GRID{ wxEmptyString, wxS( "0.25 mm" ), wxS( "0.25 mm" ) },
GRID{ wxEmptyString, wxS( "0.20 mm" ), wxS( "0.20 mm" ) },
GRID{ wxEmptyString, wxS( "0.10 mm" ), wxS( "0.10 mm" ) } };
}
else if( m_filename == wxS( "gerbview" ) )
{
return { GRID{ wxEmptyString, wxS( "100 mil" ), wxS( "100 mil" ) },
GRID{ wxEmptyString, wxS( "50 mil" ), wxS( "50 mil" ) },
GRID{ wxEmptyString, wxS( "25 mil" ), wxS( "25 mil" ) },
GRID{ wxEmptyString, wxS( "20 mil" ), wxS( "20 mil" ) },
GRID{ wxEmptyString, wxS( "10 mil" ), wxS( "10 mil" ) },
GRID{ wxEmptyString, wxS( "5 mil" ), wxS( "5 mil" ) },
GRID{ wxEmptyString, wxS( "2.5 mil" ), wxS( "2.5 mil" ) },
GRID{ wxEmptyString, wxS( "2 mil" ), wxS( "2 mil" ) },
GRID{ wxEmptyString, wxS( "1 mil" ), wxS( "1 mil" ) },
GRID{ wxEmptyString, wxS( "0.5 mil" ), wxS( "0.5 mil" ) },
GRID{ wxEmptyString, wxS( "0.2 mil" ), wxS( "0.2 mil" ) },
GRID{ wxEmptyString, wxS( "0.1 mil" ), wxS( "0.1 mil" ) },
GRID{ wxEmptyString, wxS( "5.0 mm" ), wxS( "5.0 mm" ) },
GRID{ wxEmptyString, wxS( "1.5 mm" ), wxS( "2.5 mm" ) },
GRID{ wxEmptyString, wxS( "1.0 mm" ), wxS( "1.0 mm" ) },
GRID{ wxEmptyString, wxS( "0.5 mm" ), wxS( "0.5 mm" ) },
GRID{ wxEmptyString, wxS( "0.25 mm" ), wxS( "0.25 mm" ) },
GRID{ wxEmptyString, wxS( "0.2 mm" ), wxS( "0.2 mm" ) },
GRID{ wxEmptyString, wxS( "0.1 mm" ), wxS( "0.1 mm" ) },
GRID{ wxEmptyString, wxS( "0.05 mm" ), wxS( "0.0 mm" ) },
GRID{ wxEmptyString, wxS( "0.025 mm" ), wxS( "0.0 mm" ) },
GRID{ wxEmptyString, wxS( "0.01 mm" ), wxS( "0.0 mm" ) } };
}
else
{
return { GRID{ wxEmptyString, wxS( "1000 mil" ), wxS( "1000 mil" ) },

View File

@ -64,18 +64,15 @@ void COMMON_TOOLS::Reset( RESET_REASON aReason )
if( aReason == RESET_REASON::SHUTDOWN )
return;
GRID_SETTINGS& settings = m_toolMgr->GetSettings()->m_Window.grid;
GRID_SETTINGS& settings = m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid;
EDA_IU_SCALE scale = m_frame->GetIuScale();
for( GRID& gridDef : settings.grids )
{
double gridSizeX = EDA_UNIT_UTILS::UI::DoubleValueFromString( scale, EDA_UNITS::MM,
gridDef.x );
double gridSizeY = EDA_UNIT_UTILS::UI::DoubleValueFromString( scale, EDA_UNITS::MM,
gridDef.y );
double gridSizeX = EDA_UNIT_UTILS::UI::DoubleValueFromString( scale, EDA_UNITS::MM, gridDef.x );
double gridSizeY = EDA_UNIT_UTILS::UI::DoubleValueFromString( scale, EDA_UNITS::MM, gridDef.y );
m_grids.emplace_back( KiROUND<double, int>( gridSizeX ),
KiROUND<double, int>( gridSizeY ) );
m_grids.emplace_back( KiROUND<double, int>( gridSizeX ), KiROUND<double, int>( gridSizeY ) );
}
OnGridChanged( false );
@ -251,7 +248,7 @@ int COMMON_TOOLS::doZoomInOut( bool aDirection, bool aCenterOnCursor )
zoom /= 1.3;
// Now look for the next closest menu step
std::vector<double>& zoomList = m_toolMgr->GetSettings()->m_Window.zoom_factors;
std::vector<double>& zoomList = m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->zoom_factors;
int idx;
if( aDirection )
@ -458,13 +455,7 @@ int COMMON_TOOLS::ZoomPreset( const TOOL_EVENT& aEvent )
// Note: idx == 0 is Auto; idx == 1 is first entry in zoomList
int COMMON_TOOLS::doZoomToPreset( int idx, bool aCenterOnCursor )
{
std::vector<double>& zoomList = m_toolMgr->GetSettings()->m_Window.zoom_factors;
if( zoomList.empty() ) // When called from footprint chooser, zoomList is empty for some reason
zoomList = m_frame->config()->m_Window.zoom_factors;
// or: zoomList = Kiface().KifaceSettings()->m_Window.zoom_factors;
wxCHECK( !zoomList.empty(), 0 ); // To avoid a crash lower on scale from Fp Chooser panel
std::vector<double>& zoomList = m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->zoom_factors;
if( idx == 0 ) // Zoom Auto
{
@ -498,7 +489,7 @@ int COMMON_TOOLS::doZoomToPreset( int idx, bool aCenterOnCursor )
int COMMON_TOOLS::GridNext( const TOOL_EVENT& aEvent )
{
int& currentGrid = m_toolMgr->GetSettings()->m_Window.grid.last_size_idx;
int& currentGrid = m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.last_size_idx;
currentGrid++;
@ -511,7 +502,7 @@ int COMMON_TOOLS::GridNext( const TOOL_EVENT& aEvent )
int COMMON_TOOLS::GridPrev( const TOOL_EVENT& aEvent )
{
int& currentGrid = m_toolMgr->GetSettings()->m_Window.grid.last_size_idx;
int& currentGrid = m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.last_size_idx;
currentGrid--;
@ -530,7 +521,7 @@ int COMMON_TOOLS::GridPreset( const TOOL_EVENT& aEvent )
int COMMON_TOOLS::GridPreset( int idx, bool aFromHotkey )
{
int& currentGrid = m_toolMgr->GetSettings()->m_Window.grid.last_size_idx;
int& currentGrid = m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.last_size_idx;
currentGrid = std::clamp( idx, 0, (int) m_grids.size() - 1 );
@ -540,7 +531,7 @@ int COMMON_TOOLS::GridPreset( int idx, bool aFromHotkey )
int COMMON_TOOLS::OnGridChanged( bool aFromHotkey )
{
int& currentGrid = m_toolMgr->GetSettings()->m_Window.grid.last_size_idx;
int& currentGrid = m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.last_size_idx;
currentGrid = std::max( 0, std::min( currentGrid, static_cast<int>( m_grids.size() ) - 1 ) );
@ -550,7 +541,7 @@ int COMMON_TOOLS::OnGridChanged( bool aFromHotkey )
// Update GAL canvas from screen
getView()->GetGAL()->SetGridSize( m_grids[ currentGrid ] );
getView()->GetGAL()->SetGridVisibility( m_toolMgr->GetSettings()->m_Window.grid.show );
getView()->GetGAL()->SetGridVisibility( m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.show );
getView()->MarkTargetDirty( KIGFX::TARGET_NONCACHED );
// Put cursor on new grid
@ -567,25 +558,25 @@ int COMMON_TOOLS::OnGridChanged( bool aFromHotkey )
int COMMON_TOOLS::GridFast1( const TOOL_EVENT& aEvent )
{
return GridPreset( m_frame->config()->m_Window.grid.fast_grid_1, true );
return GridPreset( m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.fast_grid_1, true );
}
int COMMON_TOOLS::GridFast2( const TOOL_EVENT& aEvent )
{
return GridPreset( m_frame->config()->m_Window.grid.fast_grid_2, true );
return GridPreset( m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.fast_grid_2, true );
}
int COMMON_TOOLS::GridFastCycle( const TOOL_EVENT& aEvent )
{
if( m_toolMgr->GetSettings()->m_Window.grid.last_size_idx
== m_frame->config()->m_Window.grid.fast_grid_1 )
if( m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.last_size_idx
== m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.fast_grid_1 )
{
return GridPreset( m_frame->config()->m_Window.grid.fast_grid_2, true );
return GridPreset( m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.fast_grid_2, true );
}
return GridPreset( m_frame->config()->m_Window.grid.fast_grid_1, true );
return GridPreset( m_frame->GetWindowSettings( m_toolMgr->GetSettings() )->grid.fast_grid_1, true );
}
@ -707,7 +698,7 @@ int COMMON_TOOLS::ToggleCursor( const TOOL_EVENT& aEvent )
auto& galOpts = m_frame->GetGalDisplayOptions();
galOpts.m_forceDisplayCursor = !galOpts.m_forceDisplayCursor;
galOpts.WriteConfig( m_toolMgr->GetSettings()->m_Window );
galOpts.WriteConfig( *m_frame->GetWindowSettings( m_toolMgr->GetSettings() ) );
galOpts.NotifyChanged();
return 0;
@ -719,7 +710,7 @@ int COMMON_TOOLS::ToggleCursorStyle( const TOOL_EVENT& aEvent )
GAL_DISPLAY_OPTIONS_IMPL& galOpts = m_frame->GetGalDisplayOptions();
galOpts.m_fullscreenCursor = !galOpts.m_fullscreenCursor;
galOpts.WriteConfig( m_toolMgr->GetSettings()->m_Window );
galOpts.WriteConfig( *m_frame->GetWindowSettings( m_toolMgr->GetSettings() ) );
galOpts.NotifyChanged();
return 0;

View File

@ -43,7 +43,6 @@
#include <settings/settings_manager.h>
#include <wildcards_and_files_ext.h>
#include <drawing_sheet/ds_data_model.h>
#include <zoom_defines.h>
#include <sim/spice_settings.h>
#include <tool/tool_manager.h>
#include <tools/sch_selection_tool.h>
@ -357,9 +356,6 @@ void SCH_BASE_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
EDA_DRAW_FRAME::LoadSettings( aCfg );
if( aCfg->m_Window.grid.grids.empty() )
aCfg->m_Window.grid.grids = aCfg->DefaultGridSizeList();
// Move legacy user grids to grid list
if( !aCfg->m_Window.grid.user_grid_x.empty() )
{
@ -378,9 +374,6 @@ void SCH_BASE_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
if( aCfg->m_Window.grid.fast_grid_2 > (int) aCfg->m_Window.grid.grids.size() )
aCfg->m_Window.grid.fast_grid_2 = 2;
if( aCfg->m_Window.zoom_factors.empty() )
aCfg->m_Window.zoom_factors = { ZOOM_LIST_EESCHEMA };
}

View File

@ -58,7 +58,6 @@
#include "widgets/gerbview_layer_widget.h"
#include "widgets/dcode_selection_box.h"
#include <dialog_draw_layers_settings.h>
#include <zoom_defines.h>
#include <navlib/nl_gerbview_plugin.h>
#include <wx/log.h>
@ -317,44 +316,11 @@ void GERBVIEW_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
{
EDA_DRAW_FRAME::LoadSettings( aCfg );
if( aCfg->m_Window.grid.grids.empty() )
{
aCfg->m_Window.grid.grids = { GRID{ wxEmptyString, wxS( "100 mil" ), wxS( "100 mil" ) },
GRID{ wxEmptyString, wxS( "50 mil" ), wxS( "50 mil" ) },
GRID{ wxEmptyString, wxS( "25 mil" ), wxS( "25 mil" ) },
GRID{ wxEmptyString, wxS( "20 mil" ), wxS( "20 mil" ) },
GRID{ wxEmptyString, wxS( "10 mil" ), wxS( "10 mil" ) },
GRID{ wxEmptyString, wxS( "5 mil" ), wxS( "5 mil" ) },
GRID{ wxEmptyString, wxS( "2.5 mil" ), wxS( "2.5 mil" ) },
GRID{ wxEmptyString, wxS( "2 mil" ), wxS( "2 mil" ) },
GRID{ wxEmptyString, wxS( "1 mil" ), wxS( "1 mil" ) },
GRID{ wxEmptyString, wxS( "0.5 mil" ), wxS( "0.5 mil" ) },
GRID{ wxEmptyString, wxS( "0.2 mil" ), wxS( "0.2 mil" ) },
GRID{ wxEmptyString, wxS( "0.1 mil" ), wxS( "0.1 mil" ) },
GRID{ wxEmptyString, wxS( "5.0 mm" ), wxS( "5.0 mm" ) },
GRID{ wxEmptyString, wxS( "1.5 mm" ), wxS( "2.5 mm" ) },
GRID{ wxEmptyString, wxS( "1.0 mm" ), wxS( "1.0 mm" ) },
GRID{ wxEmptyString, wxS( "0.5 mm" ), wxS( "0.5 mm" ) },
GRID{ wxEmptyString, wxS( "0.25 mm" ), wxS( "0.25 mm" ) },
GRID{ wxEmptyString, wxS( "0.2 mm" ), wxS( "0.2 mm" ) },
GRID{ wxEmptyString, wxS( "0.1 mm" ), wxS( "0.1 mm" ) },
GRID{ wxEmptyString, wxS( "0.05 mm" ), wxS( "0.0 mm" ) },
GRID{ wxEmptyString, wxS( "0.025 mm" ), wxS( "0.0 mm" ) },
GRID{ wxEmptyString, wxS( "0.01 mm" ), wxS( "0.0 mm" ) } };
}
if( aCfg->m_Window.zoom_factors.empty() )
{
aCfg->m_Window.zoom_factors = { ZOOM_LIST_GERBVIEW };
}
GERBVIEW_SETTINGS* cfg = dynamic_cast<GERBVIEW_SETTINGS*>( aCfg );
wxCHECK( cfg, /*void*/ );
SetElementVisibility( LAYER_GERBVIEW_DRAWINGSHEET,
cfg->m_Appearance.show_border_and_titleblock );
SetElementVisibility( LAYER_GERBVIEW_PAGE_LIMITS,
cfg->m_Display.m_DisplayPageLimits );
SetElementVisibility( LAYER_GERBVIEW_DRAWINGSHEET, cfg->m_Appearance.show_border_and_titleblock );
SetElementVisibility( LAYER_GERBVIEW_PAGE_LIMITS, cfg->m_Display.m_DisplayPageLimits );
PAGE_INFO pageInfo( wxT( "GERBER" ) );
pageInfo.SetType( cfg->m_Appearance.page_type );

View File

@ -208,6 +208,8 @@ public:
const std::vector<GRID> DefaultGridSizeList() const;
const std::vector<double> DefaultZoomList() const;
public:
CROSS_PROBING_SETTINGS m_CrossProbing;

View File

@ -476,17 +476,19 @@ class PARAM_LIST : public PARAM_BASE
{
public:
PARAM_LIST( const std::string& aJsonPath, std::vector<Type>* aPtr,
std::initializer_list<Type> aDefault, bool aReadOnly = false ) :
PARAM_BASE( aJsonPath, aReadOnly ),
std::initializer_list<Type> aDefault, bool aResetIfEmpty = false ) :
PARAM_BASE( aJsonPath, false ),
m_ptr( aPtr ),
m_default( aDefault )
m_default( aDefault ),
m_resetIfEmpty( aResetIfEmpty )
{ }
PARAM_LIST( const std::string& aJsonPath, std::vector<Type>* aPtr,
std::vector<Type> aDefault, bool aReadOnly = false ) :
PARAM_BASE( aJsonPath, aReadOnly ),
std::vector<Type> aDefault, bool aResetIfEmpty = false ) :
PARAM_BASE( aJsonPath, false ),
m_ptr( aPtr ),
m_default( std::move( aDefault ) )
m_default( std::move( aDefault ) ),
m_resetIfEmpty( aResetIfEmpty )
{ }
void Load( const JSON_SETTINGS& aSettings, bool aResetIfMissing = true ) const override
@ -504,10 +506,15 @@ public:
val.push_back( el.value().get<Type>() );
}
*m_ptr = val;
if( val.empty() && m_resetIfEmpty )
*m_ptr = m_default;
else
*m_ptr = val;
}
else if( aResetIfMissing )
{
*m_ptr = m_default;
}
}
void Store( JSON_SETTINGS* aSettings ) const override
@ -555,6 +562,7 @@ public:
protected:
std::vector<Type>* m_ptr;
std::vector<Type> m_default;
bool m_resetIfEmpty;
};
@ -667,13 +675,13 @@ class KICOMMON_API PARAM_PATH_LIST : public PARAM_LIST<wxString>
{
public:
PARAM_PATH_LIST( const std::string& aJsonPath, std::vector<wxString>* aPtr,
std::initializer_list<wxString> aDefault, bool aReadOnly = false ) :
PARAM_LIST( aJsonPath, aPtr, aDefault, aReadOnly )
std::initializer_list<wxString> aDefault ) :
PARAM_LIST( aJsonPath, aPtr, aDefault )
{ }
PARAM_PATH_LIST( const std::string& aJsonPath, std::vector<wxString>* aPtr,
std::vector<wxString> aDefault, bool aReadOnly = false ) :
PARAM_LIST( aJsonPath, aPtr, aDefault, aReadOnly )
std::vector<wxString> aDefault ) :
PARAM_LIST( aJsonPath, aPtr, aDefault )
{ }
void Load( const JSON_SETTINGS& aSettings, bool aResetIfMissing = true ) const override

View File

@ -58,7 +58,6 @@
#include "invoke_pl_editor_dialog.h"
#include "tools/pl_editor_control.h"
#include <view/view_controls.h>
#include <zoom_defines.h>
#include <wx/filedlg.h>
#include <wx/print.h>
@ -518,25 +517,6 @@ void PL_EDITOR_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
{
EDA_DRAW_FRAME::LoadSettings( aCfg );
if( aCfg->m_Window.grid.grids.empty() )
{
aCfg->m_Window.grid.grids = { GRID{ wxEmptyString, wxS( "5.00 mm" ), wxS( "5.00 mm" ) },
GRID{ wxEmptyString, wxS( "2.50 mm" ), wxS( "2.50 mm" ) },
GRID{ wxEmptyString, wxS( "2.00 mm" ), wxS( "2.00 mm" ) },
GRID{ wxEmptyString, wxS( "1.00 mm" ), wxS( "1.00 mm" ) },
GRID{ wxEmptyString, wxS( "0.50 mm" ), wxS( "0.50 mm" ) },
GRID{ wxEmptyString, wxS( "0.25 mm" ), wxS( "0.25 mm" ) },
GRID{ wxEmptyString, wxS( "0.20 mm" ), wxS( "0.20 mm" ) },
GRID{ wxEmptyString, wxS( "0.10 mm" ), wxS( "0.10 mm" ) } };
}
// Currently values read from config file are not used because the user cannot
// change this config
// if( aCfg->m_Window.zoom_factors.empty() )
{
aCfg->m_Window.zoom_factors = { ZOOM_LIST_PL_EDITOR };
}
PL_EDITOR_SETTINGS* cfg = dynamic_cast<PL_EDITOR_SETTINGS*>( aCfg );
wxCHECK( cfg, /*void*/ );

View File

@ -44,6 +44,7 @@
#include <tools/pcb_actions.h>
#include <tools/pcb_picker_tool.h>
#include <tools/pcb_viewer_tools.h>
#include "settings/cvpcb_settings.h"
#include "wx/display.h"
#include <footprint_preview_panel.h>
#include <3d_canvas/eda_3d_canvas.h>
@ -437,10 +438,13 @@ void FOOTPRINT_CHOOSER_FRAME::doCloseWindow()
WINDOW_SETTINGS* FOOTPRINT_CHOOSER_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* pcb_cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
return &pcb_cfg->m_FootprintViewer;
else if( CVPCB_SETTINGS* cvpcb_cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg ) )
return &cvpcb_cfg->m_FootprintViewer;
return &cfg->m_FootprintViewer;
wxFAIL_MSG( wxT( "FOOTPRINT_CHOOSER not running with PCBNEW_SETTINGS or CVPCB_SETTINGS" ) );
return &aCfg->m_Window; // non-null fail-safe
}

View File

@ -43,7 +43,6 @@
#include <settings/settings_manager.h>
#include <view/view.h>
#include <wx/stattext.h>
#include <zoom_defines.h>
#include <dialog_shim.h>
#include <project_pcb.h>
@ -243,19 +242,6 @@ FOOTPRINT_PREVIEW_PANEL* FOOTPRINT_PREVIEW_PANEL::New( KIWAY* aKiway, wxWindow*
{
PCBNEW_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( cfg->m_Window.grid.grids.empty() )
cfg->m_Window.grid.grids = cfg->DefaultGridSizeList();
// Currently values read from config file are not used because the user cannot
// change this config
//if( cfg->m_Window.zoom_factors.empty() )
{
if( ADVANCED_CFG::GetCfg().m_HyperZoom )
cfg->m_Window.zoom_factors = { ZOOM_LIST_PCBNEW_HYPER };
else
cfg->m_Window.zoom_factors = { ZOOM_LIST_PCBNEW };
}
std::unique_ptr<GAL_DISPLAY_OPTIONS_IMPL> gal_opts;
gal_opts = std::make_unique<GAL_DISPLAY_OPTIONS_IMPL>();

View File

@ -53,7 +53,6 @@
#include <pgm_base.h>
#include <project_pcb.h>
#include <wildcards_and_files_ext.h>
#include <zoom_defines.h>
#include <math/vector2d.h>
#include <math/vector2wx.h>
@ -814,9 +813,6 @@ void PCB_BASE_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
{
EDA_DRAW_FRAME::LoadSettings( aCfg );
if( aCfg->m_Window.grid.grids.empty() )
aCfg->m_Window.grid.grids = aCfg->DefaultGridSizeList();
// Move legacy user grids to grid list
if( !aCfg->m_Window.grid.user_grid_x.empty() )
{
@ -826,16 +822,6 @@ void PCB_BASE_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
aCfg->m_Window.grid.user_grid_y = wxEmptyString;
}
// Currently values read from config file are not used because the user cannot
// change this config
// if( aCfg->m_Window.zoom_factors.empty() )
{
if( ADVANCED_CFG::GetCfg().m_HyperZoom )
aCfg->m_Window.zoom_factors = { ZOOM_LIST_PCBNEW_HYPER };
else
aCfg->m_Window.zoom_factors = { ZOOM_LIST_PCBNEW };
}
// Some, but not all, derived classes have a PCBNEW_SETTINGS.
if( PCBNEW_SETTINGS* pcbnew_cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
m_polarCoords = pcbnew_cfg->m_PolarCoords;