Don't force callers of GetAppSettings to implement exception processing.

This commit is contained in:
Jeff Young 2025-06-14 19:35:35 +01:00
parent 5ed332771c
commit 18e107529a
112 changed files with 1189 additions and 1565 deletions

View File

@ -227,17 +227,11 @@ BOARD_ADAPTER::~BOARD_ADAPTER()
void BOARD_ADAPTER::ReloadColorSettings() noexcept
{
wxCHECK( PgmOrNull(), /* void */ );
PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
COLOR_SETTINGS* cs = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
COLOR_SETTINGS* colors = mgr.GetColorSettings( cfg ? cfg->m_ColorTheme : wxString( "" ) );
if( colors )
{
for( int layer = F_Cu; layer < PCB_LAYER_ID_COUNT; ++layer )
m_BoardEditorColors[ layer ] = colors->GetColor( layer );
}
for( int layer = F_Cu; layer < PCB_LAYER_ID_COUNT; ++layer )
m_BoardEditorColors[ layer ] = cs->GetColor( layer );
}
@ -617,7 +611,7 @@ std::map<int, COLOR4D> BOARD_ADAPTER::GetDefaultColors() const
colors[ LAYER_3D_USER_ECO1 ] = BOARD_ADAPTER::g_DefaultECOs;
colors[ LAYER_3D_USER_ECO2 ] = BOARD_ADAPTER::g_DefaultECOs;
COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings( wxEmptyString );
COLOR_SETTINGS* settings = ::GetColorSettings( DEFAULT_THEME );
for( int layer = LAYER_3D_USER_1; layer <= LAYER_3D_USER_45; ++layer )
colors[ layer ] = settings->GetColor( layer );
@ -636,7 +630,7 @@ std::map<int, COLOR4D> BOARD_ADAPTER::GetLayerColors() const
}
else
{
COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings();
COLOR_SETTINGS* settings = ::GetColorSettings( DEFAULT_THEME );
for( const auto& [ layer, defaultColor /* unused */ ] : GetDefaultColors() )
colors[ layer ] = settings->GetColor( layer );
@ -746,7 +740,7 @@ std::map<int, COLOR4D> BOARD_ADAPTER::GetLayerColors() const
void BOARD_ADAPTER::SetLayerColors( const std::map<int, COLOR4D>& aColors )
{
COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings();
COLOR_SETTINGS* settings = ::GetColorSettings( DEFAULT_THEME );
for( const auto& [ layer, color ] : aColors )
{

View File

@ -1124,14 +1124,14 @@ bool EDA_3D_CANVAS::SetView3D( VIEW3D_TYPE aRequestedView )
void EDA_3D_CANVAS::RenderEngineChanged()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
switch( cfg->m_Render.engine )
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
case RENDER_ENGINE::OPENGL: m_3d_render = m_3d_render_opengl; break;
case RENDER_ENGINE::RAYTRACING: m_3d_render = m_3d_render_raytracing; break;
default: m_3d_render = nullptr; break;
switch( cfg->m_Render.engine )
{
case RENDER_ENGINE::OPENGL: m_3d_render = m_3d_render_opengl; break;
case RENDER_ENGINE::RAYTRACING: m_3d_render = m_3d_render_raytracing; break;
default: m_3d_render = nullptr; break;
}
}
if( m_3d_render )

View File

@ -111,24 +111,26 @@ EDA_3D_VIEWER_FRAME::EDA_3D_VIEWER_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent
wxStatusBar *status_bar = CreateStatusBar( arrayDim( status_dims ) );
SetStatusWidths( arrayDim( status_dims ), status_dims );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
ANTIALIASING_MODE aaMode = static_cast<ANTIALIASING_MODE>( cfg->m_Render.opengl_AA_mode );
ANTIALIASING_MODE aaMode = ANTIALIASING_MODE::AA_NONE;
EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
m_canvas = new EDA_3D_CANVAS( this, OGL_ATT_LIST::GetAttributesList( aaMode, true ),
m_boardAdapter, m_currentCamera,
PROJECT_PCB::Get3DCacheManager( &Prj() ) );
if( cfg )
aaMode = static_cast<ANTIALIASING_MODE>( cfg->m_Render.opengl_AA_mode );
m_canvas = new EDA_3D_CANVAS( this, OGL_ATT_LIST::GetAttributesList( aaMode, true ), m_boardAdapter,
m_currentCamera, PROJECT_PCB::Get3DCacheManager( &Prj() ) );
m_appearancePanel = new APPEARANCE_CONTROLS_3D( this, GetCanvas() );
LoadSettings( cfg );
LoadSettings( GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
loadCommonSettings();
m_appearancePanel->SetUserViewports( Prj().GetProjectFile().m_Viewports3D );
// Create the manager
m_toolManager = new TOOL_MANAGER;
m_toolManager->SetEnvironment( GetBoard(), nullptr, nullptr, cfg, this );
m_toolManager->SetEnvironment( GetBoard(), nullptr, nullptr,
GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ), this );
m_actions = new EDA_3D_ACTIONS();
m_toolDispatcher = new TOOL_DISPATCHER( m_toolManager );
@ -142,7 +144,7 @@ EDA_3D_VIEWER_FRAME::EDA_3D_VIEWER_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent
setupUIConditions();
if( EDA_3D_CONTROLLER* ctrlTool = GetToolManager()->GetTool<EDA_3D_CONTROLLER>() )
ctrlTool->SetRotationIncrement( cfg->m_Camera.rotation_increment );
ctrlTool->SetRotationIncrement( cfg ? cfg->m_Camera.rotation_increment : 10.0 );
// Run the viewer control tool, it is supposed to be always active
m_toolManager->InvokeTool( "3DViewer.Control" );
@ -170,10 +172,11 @@ EDA_3D_VIEWER_FRAME::EDA_3D_VIEWER_FRAME( KIWAY* aKiway, PCB_BASE_FRAME* aParent
wxAuiPaneInfo& layersManager = m_auimgr.GetPane( "LayersManager" );
if( cfg->m_AuiPanels.right_panel_width > 0 )
if( cfg && cfg->m_AuiPanels.right_panel_width > 0 )
SetAuiPaneSize( m_auimgr, layersManager, cfg->m_AuiPanels.right_panel_width, -1 );
layersManager.Show( cfg->m_AuiPanels.show_layer_manager );
if( cfg )
layersManager.Show( cfg->m_AuiPanels.show_layer_manager );
// Call Update() to fix all pane default sizes, especially the "InfoBar" pane before
// hiding it.
@ -455,35 +458,25 @@ void EDA_3D_VIEWER_FRAME::OnCloseWindow( wxCloseEvent &event )
void EDA_3D_VIEWER_FRAME::Process_Special_Functions( wxCommandEvent &event )
{
int id = event.GetId();
bool isChecked = event.IsChecked();
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER_FRAME::Process_Special_Functions id %d "
"isChecked %d" ),
id,
isChecked );
if( m_canvas == nullptr )
return;
switch( id )
switch( event.GetId() )
{
case ID_MENU3D_RESET_DEFAULTS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
m_boardAdapter.SetLayerColors( m_boardAdapter.GetDefaultColors() );
cfg->ResetToDefaults();
LoadSettings( cfg );
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
cfg->ResetToDefaults();
LoadSettings( GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
// Tell canvas that we (may have) changed the render engine
RenderEngineChanged();
NewDisplay( true );
}
return;
}
default:
wxFAIL_MSG( wxT( "Invalid event in EDA_3D_VIEWER_FRAME::Process_Special_Functions()" ) );
@ -494,8 +487,7 @@ void EDA_3D_VIEWER_FRAME::Process_Special_Functions( wxCommandEvent &event )
void EDA_3D_VIEWER_FRAME::onDisableRayTracing( wxCommandEvent& aEvent )
{
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER_FRAME::%s disabling ray tracing." ),
__WXFUNCTION__ );
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER_FRAME::%s disabling ray tracing." ), __WXFUNCTION__ );
m_disable_ray_tracing = true;
m_boardAdapter.m_Cfg->m_Render.engine = RENDER_ENGINE::OPENGL;
@ -580,19 +572,9 @@ void EDA_3D_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE *aCfg )
void EDA_3D_VIEWER_FRAME::SaveSettings( APP_SETTINGS_BASE *aCfg )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
EDA_BASE_FRAME::SaveSettings( GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
EDA_BASE_FRAME::SaveSettings( cfg );
wxLogTrace( m_logTrace, wxT( "EDA_3D_VIEWER_FRAME::SaveSettings" ) );
wxLogTrace( m_logTrace, m_boardAdapter.m_Cfg->m_Render.engine == RENDER_ENGINE::RAYTRACING ?
wxT( "EDA_3D_VIEWER_FRAME::SaveSettings render setting Ray Trace" )
:
wxT( "EDA_3D_VIEWER_FRAME::SaveSettings render setting OpenGL" ) );
if( cfg )
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
cfg->m_AuiPanels.right_panel_width = m_appearancePanel->GetSize().x;
@ -614,8 +596,7 @@ void EDA_3D_VIEWER_FRAME::CommonSettingsChanged( int aFlags )
EDA_BASE_FRAME::CommonSettingsChanged( aFlags );
loadCommonSettings();
applySettings(
Pgm().GetSettingsManager().GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
applySettings( GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
m_appearancePanel->CommonSettingsChanged();
@ -643,23 +624,24 @@ void EDA_3D_VIEWER_FRAME::ShowChangedLanguage()
void EDA_3D_VIEWER_FRAME::ToggleAppearanceManager()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
wxAuiPaneInfo& layersManager = m_auimgr.GetPane( "LayersManager" );
wxAuiPaneInfo& layersManager = m_auimgr.GetPane( "LayersManager" );
// show auxiliary Vertical layers and visibility manager toolbar
cfg->m_AuiPanels.show_layer_manager = !cfg->m_AuiPanels.show_layer_manager;
layersManager.Show( cfg->m_AuiPanels.show_layer_manager );
if( cfg->m_AuiPanels.show_layer_manager )
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
SetAuiPaneSize( m_auimgr, layersManager, cfg->m_AuiPanels.right_panel_width, -1 );
}
else
{
cfg->m_AuiPanels.right_panel_width = m_appearancePanel->GetSize().x;
m_auimgr.Update();
// show auxiliary Vertical layers and visibility manager toolbar
cfg->m_AuiPanels.show_layer_manager = !cfg->m_AuiPanels.show_layer_manager;
layersManager.Show( cfg->m_AuiPanels.show_layer_manager );
if( cfg->m_AuiPanels.show_layer_manager )
{
SetAuiPaneSize( m_auimgr, layersManager, cfg->m_AuiPanels.right_panel_width, -1 );
}
else
{
cfg->m_AuiPanels.right_panel_width = m_appearancePanel->GetSize().x;
m_auimgr.Update();
}
}
}

View File

@ -64,32 +64,28 @@ void PANEL_3D_DISPLAY_OPTIONS::loadViewSettings( EDA_3D_VIEWER_SETTINGS* aCfg )
bool PANEL_3D_DISPLAY_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
loadViewSettings( cfg );
loadViewSettings( GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
return true;
}
bool PANEL_3D_DISPLAY_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
// Set visibility of items
cfg->m_Render.show_zones = m_checkBoxAreas->GetValue();
cfg->m_Render.subtract_mask_from_silk = m_checkBoxSubtractMaskFromSilk->GetValue();
cfg->m_Render.clip_silk_on_via_annuli = m_checkBoxClipSilkOnViaAnnulus->GetValue();
cfg->m_Render.differentiate_plated_copper = m_checkBoxRenderPlatedPadsAsPlated->GetValue();
// Set visibility of items
cfg->m_Render.show_zones = m_checkBoxAreas->GetValue();
cfg->m_Render.subtract_mask_from_silk = m_checkBoxSubtractMaskFromSilk->GetValue();
cfg->m_Render.clip_silk_on_via_annuli = m_checkBoxClipSilkOnViaAnnulus->GetValue();
cfg->m_Render.differentiate_plated_copper = m_checkBoxRenderPlatedPadsAsPlated->GetValue();
cfg->m_Render.material_mode = static_cast<MATERIAL_MODE>( m_materialProperties->GetSelection() );
cfg->m_Render.material_mode = static_cast<MATERIAL_MODE>( m_materialProperties->GetSelection() );
// Camera Options
cfg->m_Camera.animation_enabled = m_checkBoxEnableAnimation->GetValue();
cfg->m_Camera.moving_speed_multiplier = m_sliderAnimationSpeed->GetValue();
cfg->m_Camera.rotation_increment = m_spinCtrlRotationAngle->GetValue();
// Camera Options
cfg->m_Camera.animation_enabled = m_checkBoxEnableAnimation->GetValue();
cfg->m_Camera.moving_speed_multiplier = m_sliderAnimationSpeed->GetValue();
cfg->m_Camera.rotation_increment = m_spinCtrlRotationAngle->GetValue();
}
return true;
}

View File

@ -56,32 +56,27 @@ void PANEL_3D_OPENGL_OPTIONS::loadSettings( EDA_3D_VIEWER_SETTINGS* aCfg )
bool PANEL_3D_OPENGL_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
loadSettings( cfg );
loadSettings( GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
return true;
}
bool PANEL_3D_OPENGL_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
cfg->m_Render.opengl_copper_thickness = m_checkBoxCuThickness->GetValue();
cfg->m_Render.show_model_bbox = m_checkBoxBoundingBoxes->GetValue();
cfg->m_Render.highlight_on_rollover = m_checkBoxHighlightOnRollOver->GetValue();
cfg->m_Render.opengl_copper_thickness = m_checkBoxCuThickness->GetValue();
cfg->m_Render.show_model_bbox = m_checkBoxBoundingBoxes->GetValue();
cfg->m_Render.highlight_on_rollover = m_checkBoxHighlightOnRollOver->GetValue();
cfg->m_Render.opengl_AA_mode = static_cast<ANTIALIASING_MODE>( m_choiceAntiAliasing->GetSelection() );
cfg->m_Render.opengl_selection_color = m_selectionColorSwatch->GetSwatchColor();
cfg->m_Render.opengl_AA_mode =
static_cast<ANTIALIASING_MODE>( m_choiceAntiAliasing->GetSelection() );
cfg->m_Render.opengl_selection_color = m_selectionColorSwatch->GetSwatchColor();
cfg->m_Render.opengl_AA_disableOnMove = m_checkBoxDisableAAMove->GetValue();
cfg->m_Render.opengl_thickness_disableOnMove = m_checkBoxDisableMoveThickness->GetValue();
cfg->m_Render.opengl_microvias_disableOnMove = m_checkBoxDisableMoveVias->GetValue();
cfg->m_Render.opengl_holes_disableOnMove = m_checkBoxDisableMoveHoles->GetValue();
cfg->m_Render.opengl_AA_disableOnMove = m_checkBoxDisableAAMove->GetValue();
cfg->m_Render.opengl_thickness_disableOnMove = m_checkBoxDisableMoveThickness->GetValue();
cfg->m_Render.opengl_microvias_disableOnMove = m_checkBoxDisableMoveVias->GetValue();
cfg->m_Render.opengl_holes_disableOnMove = m_checkBoxDisableMoveHoles->GetValue();
}
return true;
}

View File

@ -110,85 +110,78 @@ void PANEL_3D_RAYTRACING_OPTIONS::loadSettings( EDA_3D_VIEWER_SETTINGS* aCfg )
bool PANEL_3D_RAYTRACING_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
loadSettings( cfg );
loadSettings( GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) );
return true;
}
bool PANEL_3D_RAYTRACING_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
cfg->m_Render.raytrace_shadows = m_cbRaytracing_renderShadows->GetValue();
cfg->m_Render.raytrace_backfloor = m_cbRaytracing_addFloor->GetValue();
cfg->m_Render.raytrace_refractions = m_cbRaytracing_showRefractions->GetValue();
cfg->m_Render.raytrace_reflections = m_cbRaytracing_showReflections->GetValue();
cfg->m_Render.raytrace_post_processing = m_cbRaytracing_postProcessing->GetValue();
cfg->m_Render.raytrace_anti_aliasing = m_cbRaytracing_antiAliasing->GetValue();
cfg->m_Render.raytrace_procedural_textures = m_cbRaytracing_proceduralTextures->GetValue();
cfg->m_Render.raytrace_shadows = m_cbRaytracing_renderShadows->GetValue();
cfg->m_Render.raytrace_backfloor = m_cbRaytracing_addFloor->GetValue();
cfg->m_Render.raytrace_refractions = m_cbRaytracing_showRefractions->GetValue();
cfg->m_Render.raytrace_reflections = m_cbRaytracing_showReflections->GetValue();
cfg->m_Render.raytrace_post_processing = m_cbRaytracing_postProcessing->GetValue();
cfg->m_Render.raytrace_anti_aliasing = m_cbRaytracing_antiAliasing->GetValue();
cfg->m_Render.raytrace_procedural_textures = m_cbRaytracing_proceduralTextures->GetValue();
cfg->m_Render.raytrace_nrsamples_shadows = m_numSamples_Shadows->GetValue();
cfg->m_Render.raytrace_nrsamples_reflections = m_numSamples_Reflections->GetValue();
cfg->m_Render.raytrace_nrsamples_refractions = m_numSamples_Refractions->GetValue();
cfg->m_Render.raytrace_nrsamples_shadows = m_numSamples_Shadows->GetValue();
cfg->m_Render.raytrace_nrsamples_reflections = m_numSamples_Reflections->GetValue();
cfg->m_Render.raytrace_nrsamples_refractions = m_numSamples_Refractions->GetValue();
cfg->m_Render.raytrace_spread_shadows =
EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::PERCENT,
m_spreadFactor_Shadows->GetValue() ) / 100.0f;
cfg->m_Render.raytrace_spread_reflections =
EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::PERCENT,
m_spreadFactor_Reflections->GetValue() ) / 100.0f;
cfg->m_Render.raytrace_spread_refractions =
EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::PERCENT,
m_spreadFactor_Refractions->GetValue() ) / 100.0f;
cfg->m_Render.raytrace_spread_shadows =
EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::PERCENT,
m_spreadFactor_Shadows->GetValue() )
/ 100.0f;
cfg->m_Render.raytrace_spread_reflections =
EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::PERCENT,
m_spreadFactor_Reflections->GetValue() )
/ 100.0f;
cfg->m_Render.raytrace_spread_refractions =
EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::PERCENT,
m_spreadFactor_Refractions->GetValue() )
/ 100.0f;
cfg->m_Render.raytrace_recursivelevel_reflections = m_recursiveLevel_Reflections->GetValue();
cfg->m_Render.raytrace_recursivelevel_refractions = m_recursiveLevel_Refractions->GetValue();
cfg->m_Render.raytrace_recursivelevel_reflections = m_recursiveLevel_Reflections->GetValue();
cfg->m_Render.raytrace_recursivelevel_refractions = m_recursiveLevel_Refractions->GetValue();
cfg->m_Render.raytrace_lightColorCamera = m_colourPickerCameraLight->GetSwatchColor();
cfg->m_Render.raytrace_lightColorTop = m_colourPickerTopLight->GetSwatchColor();
cfg->m_Render.raytrace_lightColorBottom = m_colourPickerBottomLight->GetSwatchColor();
cfg->m_Render.raytrace_lightColorCamera = m_colourPickerCameraLight->GetSwatchColor();
cfg->m_Render.raytrace_lightColorTop = m_colourPickerTopLight->GetSwatchColor();
cfg->m_Render.raytrace_lightColorBottom = m_colourPickerBottomLight->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[0] = m_colourPickerLight1->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[1] = m_colourPickerLight2->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[2] = m_colourPickerLight3->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[3] = m_colourPickerLight4->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[4] = m_colourPickerLight5->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[5] = m_colourPickerLight6->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[6] = m_colourPickerLight7->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[7] = m_colourPickerLight8->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[0] = m_colourPickerLight1->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[1] = m_colourPickerLight2->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[2] = m_colourPickerLight3->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[3] = m_colourPickerLight4->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[4] = m_colourPickerLight5->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[5] = m_colourPickerLight6->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[6] = m_colourPickerLight7->GetSwatchColor();
cfg->m_Render.raytrace_lightColor[7] = m_colourPickerLight8->GetSwatchColor();
auto get_value =
[]( wxTextCtrl* aCtrl )
{
return EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::UNSCALED,
aCtrl->GetValue() );
};
auto get_value =
[]( wxTextCtrl* aCtrl )
{
return EDA_UNIT_UTILS::UI::DoubleValueFromString( pcbIUScale, EDA_UNITS::UNSCALED,
aCtrl->GetValue() );
};
cfg->m_Render.raytrace_lightElevation[0] = get_value( m_lightElevation1 );
cfg->m_Render.raytrace_lightElevation[1] = get_value( m_lightElevation2 );
cfg->m_Render.raytrace_lightElevation[2] = get_value( m_lightElevation3 );
cfg->m_Render.raytrace_lightElevation[3] = get_value( m_lightElevation4 );
cfg->m_Render.raytrace_lightElevation[4] = get_value( m_lightElevation5 );
cfg->m_Render.raytrace_lightElevation[5] = get_value( m_lightElevation6 );
cfg->m_Render.raytrace_lightElevation[6] = get_value( m_lightElevation7 );
cfg->m_Render.raytrace_lightElevation[7] = get_value( m_lightElevation8 );
cfg->m_Render.raytrace_lightElevation[0] = get_value( m_lightElevation1 );
cfg->m_Render.raytrace_lightElevation[1] = get_value( m_lightElevation2 );
cfg->m_Render.raytrace_lightElevation[2] = get_value( m_lightElevation3 );
cfg->m_Render.raytrace_lightElevation[3] = get_value( m_lightElevation4 );
cfg->m_Render.raytrace_lightElevation[4] = get_value( m_lightElevation5 );
cfg->m_Render.raytrace_lightElevation[5] = get_value( m_lightElevation6 );
cfg->m_Render.raytrace_lightElevation[6] = get_value( m_lightElevation7 );
cfg->m_Render.raytrace_lightElevation[7] = get_value( m_lightElevation8 );
cfg->m_Render.raytrace_lightAzimuth[0] = get_value( m_lightAzimuth1 );
cfg->m_Render.raytrace_lightAzimuth[1] = get_value( m_lightAzimuth2 );
cfg->m_Render.raytrace_lightAzimuth[2] = get_value( m_lightAzimuth3 );
cfg->m_Render.raytrace_lightAzimuth[3] = get_value( m_lightAzimuth4 );
cfg->m_Render.raytrace_lightAzimuth[4] = get_value( m_lightAzimuth5 );
cfg->m_Render.raytrace_lightAzimuth[5] = get_value( m_lightAzimuth6 );
cfg->m_Render.raytrace_lightAzimuth[6] = get_value( m_lightAzimuth7 );
cfg->m_Render.raytrace_lightAzimuth[7] = get_value( m_lightAzimuth8 );
cfg->m_Render.raytrace_lightAzimuth[0] = get_value( m_lightAzimuth1 );
cfg->m_Render.raytrace_lightAzimuth[1] = get_value( m_lightAzimuth2 );
cfg->m_Render.raytrace_lightAzimuth[2] = get_value( m_lightAzimuth3 );
cfg->m_Render.raytrace_lightAzimuth[3] = get_value( m_lightAzimuth4 );
cfg->m_Render.raytrace_lightAzimuth[4] = get_value( m_lightAzimuth5 );
cfg->m_Render.raytrace_lightAzimuth[5] = get_value( m_lightAzimuth6 );
cfg->m_Render.raytrace_lightAzimuth[6] = get_value( m_lightAzimuth7 );
cfg->m_Render.raytrace_lightAzimuth[7] = get_value( m_lightAzimuth8 );
}
return true;
}

View File

@ -212,10 +212,7 @@ void PANEL_PREVIEW_3D_MODEL::loadSettings()
// TODO(JE) use all control options
m_boardAdapter.m_MousewheelPanning = settings->m_Input.scroll_modifier_zoom != 0;
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
if( cfg )
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
// Save the 3D viewer render settings, to restore it after closing the preview
m_initialRender = cfg->m_Render;

View File

@ -645,16 +645,14 @@ bool DESIGN_BLOCK_LIB_TABLE::LoadGlobalTable( DESIGN_BLOCK_LIB_TABLE& aTable )
aTable.clear();
aTable.Load( fn.GetFullPath() );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* settings = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" );
const ENV_VAR_MAP& env = Pgm().GetLocalEnvVariables();
wxString packagesPath;
if( std::optional<wxString> v = ENV_VAR::GetVersionedEnvVarValue( env, wxT( "3RD_PARTY" ) ) )
packagesPath = *v;
if( settings->m_PcmLibAutoAdd )
if( cfg && cfg->m_PcmLibAutoAdd )
{
// Scan for libraries in PCM packages directory
@ -663,14 +661,14 @@ bool DESIGN_BLOCK_LIB_TABLE::LoadGlobalTable( DESIGN_BLOCK_LIB_TABLE& aTable )
if( d.DirExists() )
{
PCM_DESIGN_BLOCK_LIB_TRAVERSER traverser( packagesPath, aTable, settings->m_PcmLibPrefix );
PCM_DESIGN_BLOCK_LIB_TRAVERSER traverser( packagesPath, aTable, cfg->m_PcmLibPrefix );
wxDir dir( d.GetPath() );
dir.Traverse( traverser );
}
}
if( settings->m_PcmLibAutoRemove )
if( cfg && cfg->m_PcmLibAutoRemove )
{
// Remove PCM libraries that no longer exist
std::vector<wxString> to_remove;

View File

@ -369,15 +369,14 @@ bool PANEL_COLOR_SETTINGS::saveCurrentTheme( bool aValidate )
if( aValidate && !validateSave() )
return false;
SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
COLOR_SETTINGS* selected = settingsMgr.GetColorSettings( m_currentSettings->GetFilename() );
COLOR_SETTINGS* selected = ::GetColorSettings( m_currentSettings->GetFilename() );
selected->SetOverrideSchItemColors( m_optOverrideColors->GetValue() );
for( int layer : m_validLayers )
selected->SetColor( layer, m_currentSettings->GetColor( layer ) );
settingsMgr.SaveColorSettings( selected, m_colorNamespace );
Pgm().GetSettingsManager().SaveColorSettings( selected, m_colorNamespace );
return true;
}

View File

@ -317,79 +317,80 @@ PANEL_DESIGN_BLOCK_LIB_TABLE::PANEL_DESIGN_BLOCK_LIB_TABLE( DIALOG_EDIT_LIBRARY_
for( auto& [fileType, desc] : m_supportedDesignBlockFiles )
choices.Add( DESIGN_BLOCK_IO_MGR::ShowType( fileType ) );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* cfg = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" );
if( cfg->m_lastDesignBlockLibDir.IsEmpty() )
cfg->m_lastDesignBlockLibDir = PATHS::GetDefaultUserDesignBlocksPath();
m_lastProjectLibDir = m_projectBasePath;
auto autoSizeCol = [&]( WX_GRID* aGrid, int aCol )
{
int prevWidth = aGrid->GetColSize( aCol );
auto autoSizeCol =
[&]( WX_GRID* aGrid, int aCol )
{
int prevWidth = aGrid->GetColSize( aCol );
aGrid->AutoSizeColumn( aCol, false );
aGrid->SetColSize( aCol, std::max( prevWidth, aGrid->GetColSize( aCol ) ) );
};
aGrid->AutoSizeColumn( aCol, false );
aGrid->SetColSize( aCol, std::max( prevWidth, aGrid->GetColSize( aCol ) ) );
};
auto setupGrid = [&]( WX_GRID* aGrid )
{
// Give a bit more room for wxChoice editors
aGrid->SetDefaultRowSize( aGrid->GetDefaultRowSize() + 4 );
auto setupGrid =
[&]( WX_GRID* aGrid )
{
// Give a bit more room for wxChoice editors
aGrid->SetDefaultRowSize( aGrid->GetDefaultRowSize() + 4 );
// add Cut, Copy, and Paste to wxGrids
aGrid->PushEventHandler( new DESIGN_BLOCK_GRID_TRICKS( m_parent, aGrid ) );
// add Cut, Copy, and Paste to wxGrids
aGrid->PushEventHandler( new DESIGN_BLOCK_GRID_TRICKS( m_parent, aGrid ) );
aGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
aGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
wxGridCellAttr* attr;
wxGridCellAttr* attr = new wxGridCellAttr;
attr = new wxGridCellAttr;
attr->SetEditor( new GRID_CELL_PATH_EDITOR(
m_parent, aGrid, &cfg->m_lastDesignBlockLibDir, true, m_projectBasePath,
[this]( WX_GRID* grid, int row ) -> wxString
if( cfg )
{
auto* libTable = static_cast<DESIGN_BLOCK_LIB_TABLE_GRID*>( grid->GetTable() );
auto* tableRow =
static_cast<DESIGN_BLOCK_LIB_TABLE_ROW*>( libTable->at( row ) );
DESIGN_BLOCK_IO_MGR::DESIGN_BLOCK_FILE_T fileType = tableRow->GetFileType();
const IO_BASE::IO_FILE_DESC& pluginDesc =
m_supportedDesignBlockFiles.at( fileType );
attr->SetEditor( new GRID_CELL_PATH_EDITOR(
m_parent, aGrid, &cfg->m_lastDesignBlockLibDir, true, m_projectBasePath,
[this]( WX_GRID* grid, int row ) -> wxString
{
auto* libTable = static_cast<DESIGN_BLOCK_LIB_TABLE_GRID*>( grid->GetTable() );
auto* tableRow = static_cast<DESIGN_BLOCK_LIB_TABLE_ROW*>( libTable->at( row ) );
DESIGN_BLOCK_IO_MGR::DESIGN_BLOCK_FILE_T fileType = tableRow->GetFileType();
const IO_BASE::IO_FILE_DESC& pluginDesc = m_supportedDesignBlockFiles.at( fileType );
if( pluginDesc.m_IsFile )
return pluginDesc.FileFilter();
else
return wxEmptyString;
} ) );
aGrid->SetColAttr( COL_URI, attr );
if( pluginDesc.m_IsFile )
return pluginDesc.FileFilter();
else
return wxEmptyString;
} ) );
}
attr = new wxGridCellAttr;
attr->SetEditor( new wxGridCellChoiceEditor( choices ) );
aGrid->SetColAttr( COL_TYPE, attr );
aGrid->SetColAttr( COL_URI, attr );
attr = new wxGridCellAttr;
attr->SetRenderer( new wxGridCellBoolRenderer() );
attr->SetReadOnly(); // not really; we delegate interactivity to GRID_TRICKS
aGrid->SetColAttr( COL_ENABLED, attr );
attr = new wxGridCellAttr;
attr->SetEditor( new wxGridCellChoiceEditor( choices ) );
aGrid->SetColAttr( COL_TYPE, attr );
// No visibility control for design block libraries yet; this feature is primarily
// useful for database libraries and it's only implemented for schematic symbols
// at the moment.
aGrid->HideCol( COL_VISIBLE );
attr = new wxGridCellAttr;
attr->SetRenderer( new wxGridCellBoolRenderer() );
attr->SetReadOnly(); // not really; we delegate interactivity to GRID_TRICKS
aGrid->SetColAttr( COL_ENABLED, attr );
// all but COL_OPTIONS, which is edited with Option Editor anyways.
autoSizeCol( aGrid, COL_NICKNAME );
autoSizeCol( aGrid, COL_TYPE );
autoSizeCol( aGrid, COL_URI );
autoSizeCol( aGrid, COL_DESCR );
// No visibility control for design block libraries yet; this feature is primarily
// useful for database libraries and it's only implemented for schematic symbols
// at the moment.
aGrid->HideCol( COL_VISIBLE );
// Gives a selection to each grid, mainly for delete button. wxGrid's wake up with
// a currentCell which is sometimes not highlighted.
if( aGrid->GetNumberRows() > 0 )
aGrid->SelectRow( 0 );
};
// all but COL_OPTIONS, which is edited with Option Editor anyways.
autoSizeCol( aGrid, COL_NICKNAME );
autoSizeCol( aGrid, COL_TYPE );
autoSizeCol( aGrid, COL_URI );
autoSizeCol( aGrid, COL_DESCR );
// Gives a selection to each grid, mainly for delete button. wxGrid's wake up with
// a currentCell which is sometimes not highlighted.
if( aGrid->GetNumberRows() > 0 )
aGrid->SelectRow( 0 );
};
setupGrid( m_global_grid );
@ -857,14 +858,12 @@ void PANEL_DESIGN_BLOCK_LIB_TABLE::onMigrateLibraries( wxCommandEvent& event )
{
if( rowsToMigrate.size() == 1 )
{
msg.Printf( _( "Save '%s' as current KiCad format "
"and replace entry in table?" ),
msg.Printf( _( "Save '%s' as current KiCad format and replace entry in table?" ),
m_cur_grid->GetCellValue( rowsToMigrate[0], COL_NICKNAME ) );
}
else
{
msg.Printf( _( "Save %d libraries as current KiCad format "
"and replace entries in table?" ),
msg.Printf( _( "Save %d libraries as current KiCad format and replace entries in table?" ),
(int) rowsToMigrate.size() );
}
@ -897,18 +896,16 @@ void PANEL_DESIGN_BLOCK_LIB_TABLE::onMigrateLibraries( wxCommandEvent& event )
"blocks?" ),
newLib.GetFullPath() );
switch( wxMessageBox( msg, _( "Migrate Library" ),
wxYES_NO | wxCANCEL | wxICON_QUESTION, m_parent ) )
switch( wxMessageBox( msg, _( "Migrate Library" ), wxYES_NO | wxCANCEL | wxICON_QUESTION, m_parent ) )
{
case wxYES: break;
case wxNO: continue;
case wxYES: break;
case wxNO: continue;
case wxCANCEL: return;
}
}
wxString options = m_cur_grid->GetCellValue( row, COL_OPTIONS );
std::unique_ptr<std::map<std::string, UTF8>> props(
LIB_TABLE::ParseOptions( options.ToStdString() ) );
wxString options = m_cur_grid->GetCellValue( row, COL_OPTIONS );
std::unique_ptr<std::map<std::string, UTF8>> props( LIB_TABLE::ParseOptions( options.ToStdString() ) );
if( DESIGN_BLOCK_IO_MGR::ConvertLibrary( props.get(), legacyLib.GetFullPath(),
newLib.GetFullPath() ) )
@ -926,8 +923,7 @@ void PANEL_DESIGN_BLOCK_LIB_TABLE::onMigrateLibraries( wxCommandEvent& event )
}
else
{
msg.Printf( _( "Failed to save design block library file '%s'." ),
newLib.GetFullPath() );
msg.Printf( _( "Failed to save design block library file '%s'." ), newLib.GetFullPath() );
DisplayErrorMessage( wxGetTopLevelParent( this ), msg );
}
}
@ -955,51 +951,42 @@ void PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event
if( fileType == DESIGN_BLOCK_IO_MGR::FILE_TYPE_NONE )
{
wxLogWarning( wxT( "File type selection event received but could not find the file type "
"in the table" ) );
wxLogWarning( wxT( "File type selection event received but could not find the file type in the table" ) );
return;
}
const IO_BASE::IO_FILE_DESC& fileDesc = m_supportedDesignBlockFiles.at( fileType );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* cfg = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" );
wxString title =
wxString::Format( _( "Select %s Library" ), DESIGN_BLOCK_IO_MGR::ShowType( fileType ) );
wxString openDir = cfg->m_lastDesignBlockLibDir;
wxString title = wxString::Format( _( "Select %s Library" ), DESIGN_BLOCK_IO_MGR::ShowType( fileType ) );
wxString dummy;
wxString* lastDir;
if( m_cur_grid == m_project_grid )
openDir = m_lastProjectLibDir;
lastDir = &m_lastProjectLibDir;
else
lastDir = cfg ? &cfg->m_lastDesignBlockLibDir : &dummy;
wxArrayString files;
wxWindow* topLevelParent = wxGetTopLevelParent( this );
wxWindow* topLevelParent = wxGetTopLevelParent( this );
if( fileDesc.m_IsFile )
{
wxFileDialog dlg( topLevelParent, title, openDir, wxEmptyString, fileDesc.FileFilter(),
wxFileDialog dlg( topLevelParent, title, *lastDir, wxEmptyString, fileDesc.FileFilter(),
wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE );
int result = dlg.ShowModal();
if( result == wxID_CANCEL )
if( dlg.ShowModal() == wxID_CANCEL )
return;
dlg.GetPaths( files );
if( m_cur_grid == m_global_grid )
cfg->m_lastDesignBlockLibDir = dlg.GetDirectory();
else
m_lastProjectLibDir = dlg.GetDirectory();
*lastDir = dlg.GetDirectory();
}
else
{
wxDirDialog dlg( topLevelParent, title, openDir,
wxDirDialog dlg( topLevelParent, title, *lastDir,
wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST | wxDD_MULTIPLE );
int result = dlg.ShowModal();
if( result == wxID_CANCEL )
if( dlg.ShowModal() == wxID_CANCEL )
return;
dlg.GetPaths( files );
@ -1007,18 +994,13 @@ void PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event
if( !files.IsEmpty() )
{
wxFileName first( files.front() );
if( m_cur_grid == m_global_grid )
cfg->m_lastDesignBlockLibDir = first.GetPath();
else
m_lastProjectLibDir = first.GetPath();
*lastDir = first.GetPath();
}
}
// Drop the last directory if the path is a .pretty folder
if( cfg->m_lastDesignBlockLibDir.EndsWith( FILEEXT::KiCadDesignBlockLibPathExtension ) )
cfg->m_lastDesignBlockLibDir =
cfg->m_lastDesignBlockLibDir.BeforeLast( wxFileName::GetPathSeparator() );
if( cfg && cfg->m_lastDesignBlockLibDir.EndsWith( FILEEXT::KiCadDesignBlockLibPathExtension ) )
cfg->m_lastDesignBlockLibDir = cfg->m_lastDesignBlockLibDir.BeforeLast( wxFileName::GetPathSeparator() );
const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
bool addDuplicates = false;
@ -1034,8 +1016,7 @@ void PANEL_DESIGN_BLOCK_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event
wxString nickname = LIB_ID::FixIllegalChars( fn.GetName(), true );
bool doAdd = true;
if( fileType == DESIGN_BLOCK_IO_MGR::KICAD_SEXP
&& fn.GetExt() != FILEEXT::KiCadDesignBlockLibPathExtension )
if( fileType == DESIGN_BLOCK_IO_MGR::KICAD_SEXP && fn.GetExt() != FILEEXT::KiCadDesignBlockLibPathExtension )
nickname = LIB_ID::FixIllegalChars( fn.GetFullName(), true ).wx_str();
if( cur_model()->ContainsNickname( nickname ) )

View File

@ -47,16 +47,14 @@ PANEL_PACKAGES_AND_UPDATES::PANEL_PACKAGES_AND_UPDATES( wxWindow* parent ) :
bool PANEL_PACKAGES_AND_UPDATES::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* cfg = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
wxCHECK( cfg, false );
m_cbKicadUpdate->SetValue( cfg->m_KiCadUpdateCheck );
m_cbPcmUpdate->SetValue( cfg->m_PcmUpdateCheck );
m_libAutoAdd->SetValue( cfg->m_PcmLibAutoAdd );
m_libAutoRemove->SetValue( cfg->m_PcmLibAutoRemove );
m_libPrefix->SetValue( cfg->m_PcmLibPrefix );
if( KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" ) )
{
m_cbKicadUpdate->SetValue( cfg->m_KiCadUpdateCheck );
m_cbPcmUpdate->SetValue( cfg->m_PcmUpdateCheck );
m_libAutoAdd->SetValue( cfg->m_PcmLibAutoAdd );
m_libAutoRemove->SetValue( cfg->m_PcmLibAutoRemove );
m_libPrefix->SetValue( cfg->m_PcmLibPrefix );
}
return true;
}
@ -64,16 +62,14 @@ bool PANEL_PACKAGES_AND_UPDATES::TransferDataToWindow()
bool PANEL_PACKAGES_AND_UPDATES::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* cfg = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
wxCHECK( cfg, false );
cfg->m_KiCadUpdateCheck = m_cbKicadUpdate->GetValue();
cfg->m_PcmUpdateCheck = m_cbPcmUpdate->GetValue();
cfg->m_PcmLibAutoAdd = m_libAutoAdd->GetValue();
cfg->m_PcmLibAutoRemove = m_libAutoRemove->GetValue();
cfg->m_PcmLibPrefix = m_libPrefix->GetValue();
if( KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" ) )
{
cfg->m_KiCadUpdateCheck = m_cbKicadUpdate->GetValue();
cfg->m_PcmUpdateCheck = m_cbPcmUpdate->GetValue();
cfg->m_PcmLibAutoAdd = m_libAutoAdd->GetValue();
cfg->m_PcmLibAutoRemove = m_libAutoRemove->GetValue();
cfg->m_PcmLibPrefix = m_libPrefix->GetValue();
}
return true;
}

View File

@ -1245,8 +1245,7 @@ COLOR_SETTINGS* EDA_DRAW_FRAME::GetColorSettings( bool aForceRefresh ) const
{
if( !m_colorSettings || aForceRefresh )
{
COLOR_SETTINGS* colorSettings = Pgm().GetSettingsManager().GetColorSettings();
COLOR_SETTINGS* colorSettings = ::GetColorSettings( DEFAULT_THEME );
const_cast<EDA_DRAW_FRAME*>( this )->m_colorSettings = colorSettings;
}

View File

@ -601,8 +601,7 @@ bool FP_LIB_TABLE::LoadGlobalTable( FP_LIB_TABLE& aTable )
SystemDirsAppend( &ss );
const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
std::optional<wxString> v = ENV_VAR::GetVersionedEnvVarValue( envVars,
wxT( "TEMPLATE_DIR" ) );
std::optional<wxString> v = ENV_VAR::GetVersionedEnvVarValue( envVars, wxT( "TEMPLATE_DIR" ) );
if( v && !v->IsEmpty() )
ss.AddPaths( *v, 0 );
@ -612,7 +611,7 @@ bool FP_LIB_TABLE::LoadGlobalTable( FP_LIB_TABLE& aTable )
// The fallback is to create an empty global footprint table for the user to populate.
if( fileName.IsEmpty() || !::wxCopyFile( fileName, fn.GetFullPath(), false ) )
{
FP_LIB_TABLE emptyTable;
FP_LIB_TABLE emptyTable;
emptyTable.Save( fn.GetFullPath() );
}
@ -620,16 +619,14 @@ bool FP_LIB_TABLE::LoadGlobalTable( FP_LIB_TABLE& aTable )
aTable.Load( fn.GetFullPath() );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* settings = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" );
const ENV_VAR_MAP& env = Pgm().GetLocalEnvVariables();
wxString packagesPath;
wxString packagesPath;
if( std::optional<wxString> v = ENV_VAR::GetVersionedEnvVarValue( env, wxT( "3RD_PARTY" ) ) )
packagesPath = *v;
if( settings->m_PcmLibAutoAdd )
if( cfg && cfg->m_PcmLibAutoAdd )
{
// Scan for libraries in PCM packages directory
@ -638,14 +635,14 @@ bool FP_LIB_TABLE::LoadGlobalTable( FP_LIB_TABLE& aTable )
if( d.DirExists() )
{
PCM_FP_LIB_TRAVERSER traverser( packagesPath, aTable, settings->m_PcmLibPrefix );
PCM_FP_LIB_TRAVERSER traverser( packagesPath, aTable, cfg->m_PcmLibPrefix );
wxDir dir( d.GetPath() );
dir.Traverse( traverser );
}
}
if( settings->m_PcmLibAutoRemove )
if( cfg && cfg->m_PcmLibAutoRemove )
{
// Remove PCM libraries that no longer exist
std::vector<wxString> to_remove;

View File

@ -237,7 +237,7 @@ COLOR_SETTINGS* SETTINGS_MANAGER::GetColorSettings( const wxString& aName )
{
ret = registerColorSettings( aName );
*ret = *m_color_settings.at( COLOR_SETTINGS::COLOR_BUILTIN_DEFAULT );
ret->SetFilename( wxT( "user" ) );
ret->SetFilename( DEFAULT_THEME );
ret->SetReadOnly( false );
}

View File

@ -116,7 +116,7 @@ DISPLAY_FOOTPRINTS_FRAME::DISPLAY_FOOTPRINTS_FRAME( KIWAY* aKiway, wxWindow* aPa
setupUIConditions();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<DISPLAY_FOOTPRINTS_TOOLBAR_SETTINGS>( "display_footprints-toolbars" );
m_toolbarSettings = GetToolbarSettings<DISPLAY_FOOTPRINTS_TOOLBAR_SETTINGS>( "display_footprints-toolbars" );
configureToolbars();
RecreateToolbars();
@ -192,13 +192,9 @@ void DISPLAY_FOOTPRINTS_FRAME::setupUIConditions()
wxASSERT( mgr );
#define CHECK( x ) ACTION_CONDITIONS().Check( x )
mgr->SetConditions( ACTIONS::zoomTool,
CHECK( cond.CurrentTool( ACTIONS::zoomTool ) ) );
mgr->SetConditions( ACTIONS::selectionTool,
CHECK( cond.CurrentTool( ACTIONS::selectionTool ) ) );
mgr->SetConditions( ACTIONS::measureTool,
CHECK( cond.CurrentTool( ACTIONS::measureTool ) ) );
mgr->SetConditions( ACTIONS::zoomTool, CHECK( cond.CurrentTool( ACTIONS::zoomTool ) ) );
mgr->SetConditions( ACTIONS::selectionTool, CHECK( cond.CurrentTool( ACTIONS::selectionTool ) ) );
mgr->SetConditions( ACTIONS::measureTool, CHECK( cond.CurrentTool( ACTIONS::measureTool ) ) );
mgr->SetConditions( ACTIONS::toggleGrid, CHECK( cond.GridVisible() ) );
mgr->SetConditions( ACTIONS::toggleCursorStyle, CHECK( cond.FullscreenCursor() ) );
@ -219,46 +215,50 @@ void DISPLAY_FOOTPRINTS_FRAME::setupUIConditions()
void DISPLAY_FOOTPRINTS_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
{
CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
wxCHECK( cfg, /* void */ );
// We don't allow people to change this right now, so make sure it's on
GetWindowSettings( cfg )->cursor.always_show_cursor = true;
PCB_BASE_FRAME::LoadSettings( cfg );
SetDisplayOptions( cfg->m_FootprintViewerDisplayOptions );
if( cfg )
SetDisplayOptions( cfg->m_FootprintViewerDisplayOptions );
}
void DISPLAY_FOOTPRINTS_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
{
CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg );
wxCHECK( cfg, /* void */ );
PCB_BASE_FRAME::SaveSettings( aCfg );
PCB_BASE_FRAME::SaveSettings( cfg );
cfg->m_FootprintViewerDisplayOptions = GetDisplayOptions();
cfg->m_FootprintViewerZoom = GetCanvas()->GetView()->GetScale();
if( CVPCB_SETTINGS* cfg = dynamic_cast<CVPCB_SETTINGS*>( aCfg ) )
{
cfg->m_FootprintViewerDisplayOptions = GetDisplayOptions();
cfg->m_FootprintViewerZoom = GetCanvas()->GetView()->GetScale();
}
}
WINDOW_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return &cfg->m_FootprintViewer;
static WINDOW_SETTINGS defaultCfg;
CVPCB_SETTINGS* cfg = GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return cfg ? &cfg->m_FootprintViewer : &defaultCfg;
}
PCB_VIEWERS_SETTINGS_BASE* DISPLAY_FOOTPRINTS_FRAME::GetViewerSettingsBase() const
{
return Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
}
MAGNETIC_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetMagneticItemsSettings()
{
CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return &cfg->m_FootprintViewerMagneticSettings;
static MAGNETIC_SETTINGS defaultCfg;
CVPCB_SETTINGS* cfg = GetAppSettings<CVPCB_SETTINGS>( "cvpcb" );
return cfg ? &cfg->m_FootprintViewerMagneticSettings : &defaultCfg;
}
@ -268,16 +268,14 @@ COLOR4D DISPLAY_FOOTPRINTS_FRAME::GetGridColor()
}
FOOTPRINT* DISPLAY_FOOTPRINTS_FRAME::GetFootprint( const wxString& aFootprintName,
REPORTER& aReporter )
FOOTPRINT* DISPLAY_FOOTPRINTS_FRAME::GetFootprint( const wxString& aFootprintName, REPORTER& aReporter )
{
FOOTPRINT* footprint = nullptr;
LIB_ID fpid;
if( fpid.Parse( aFootprintName ) >= 0 )
{
aReporter.Report( wxString::Format( _( "Footprint ID '%s' is not valid." ),
aFootprintName ),
aReporter.Report( wxString::Format( _( "Footprint ID '%s' is not valid." ), aFootprintName ),
RPT_SEVERITY_ERROR );
return nullptr;
}
@ -291,8 +289,7 @@ FOOTPRINT* DISPLAY_FOOTPRINTS_FRAME::GetFootprint( const wxString& aFootprintNam
// See if the library requested is in the library table
if( !fpTable->HasLibrary( libNickname ) )
{
aReporter.Report( wxString::Format( _( "Library '%s' is not in the footprint library "
"table." ),
aReporter.Report( wxString::Format( _( "Library '%s' is not in the footprint library table." ),
libNickname ),
RPT_SEVERITY_ERROR );
return nullptr;
@ -455,12 +452,8 @@ void DISPLAY_FOOTPRINTS_FRAME::UpdateMsgPanel()
COLOR_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetColorSettings( bool aForceRefresh ) const
{
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
if( cfg )
return Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme );
else
return Pgm().GetSettingsManager().GetColorSettings();
FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
}

View File

@ -544,18 +544,17 @@ public:
VECTOR2I pos = last->GetPosition();
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg =
mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
if( last->GetOrientation() == PIN_ORIENTATION::PIN_LEFT
|| last->GetOrientation() == PIN_ORIENTATION::PIN_RIGHT )
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
pos.y -= schIUScale.MilsToIU( cfg->m_Repeat.pin_step );
}
else
{
pos.x += schIUScale.MilsToIU( cfg->m_Repeat.pin_step );
if( last->GetOrientation() == PIN_ORIENTATION::PIN_LEFT
|| last->GetOrientation() == PIN_ORIENTATION::PIN_RIGHT )
{
pos.y -= schIUScale.MilsToIU( cfg->m_Repeat.pin_step );
}
else
{
pos.x += schIUScale.MilsToIU( cfg->m_Repeat.pin_step );
}
}
newPin->SetPosition( pos );

View File

@ -187,10 +187,7 @@ bool DIALOG_LIB_SYMBOL_PROPERTIES::TransferDataToWindow()
// Add in any template fieldnames not yet defined:
// Read global fieldname templates
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( cfg )
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
TEMPLATES templateMgr;

View File

@ -365,10 +365,7 @@ COLOR_SETTINGS* DIALOG_PLOT_SCHEMATIC::getColorSettings()
int selection = m_colorTheme->GetSelection();
if( selection < 0 )
{
return m_editFrame->GetSettingsManager()->GetColorSettings(
COLOR_SETTINGS::COLOR_BUILTIN_DEFAULT );
}
return ::GetColorSettings( COLOR_SETTINGS::COLOR_BUILTIN_DEFAULT );
return static_cast<COLOR_SETTINGS*>( m_colorTheme->GetClientData( selection ) );
}

View File

@ -61,7 +61,6 @@ void PANEL_EESCHEMA_ANNOTATION_OPTIONS::loadEEschemaSettings( EESCHEMA_SETTINGS*
case 2: m_rbSheetX1000->SetValue( true ); break;
}
int annotateStartNum = 0; // Default "start after" value for annotation
// See if we can get a "start after" value from the project settings
@ -79,41 +78,32 @@ void PANEL_EESCHEMA_ANNOTATION_OPTIONS::loadEEschemaSettings( EESCHEMA_SETTINGS*
bool PANEL_EESCHEMA_ANNOTATION_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
loadEEschemaSettings( cfg );
loadEEschemaSettings( GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) );
return true;
}
bool PANEL_EESCHEMA_ANNOTATION_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
cfg->m_AnnotatePanel.automatic = m_checkAutoAnnotate->GetValue();
cfg->m_AnnotatePanel.automatic = m_checkAutoAnnotate->GetValue();
cfg->m_AnnotatePanel.sort_order = m_rbSortBy_Y_Position->GetValue() ? ANNOTATE_ORDER_T::SORT_BY_Y_POSITION
: ANNOTATE_ORDER_T::SORT_BY_X_POSITION;
cfg->m_AnnotatePanel.sort_order = m_rbSortBy_Y_Position->GetValue()
? ANNOTATE_ORDER_T::SORT_BY_Y_POSITION
: ANNOTATE_ORDER_T::SORT_BY_X_POSITION;
if( m_rbSheetX100->GetValue() )
cfg->m_AnnotatePanel.method = ANNOTATE_ALGO_T::SHEET_NUMBER_X_100;
else if( m_rbSheetX1000->GetValue() )
cfg->m_AnnotatePanel.method = ANNOTATE_ALGO_T::SHEET_NUMBER_X_1000;
else
cfg->m_AnnotatePanel.method = ANNOTATE_ALGO_T::INCREMENTAL_BY_REF;
}
if( m_rbSheetX100->GetValue() )
cfg->m_AnnotatePanel.method = ANNOTATE_ALGO_T::SHEET_NUMBER_X_100;
else if( m_rbSheetX1000->GetValue() )
cfg->m_AnnotatePanel.method = ANNOTATE_ALGO_T::SHEET_NUMBER_X_1000;
else
cfg->m_AnnotatePanel.method = ANNOTATE_ALGO_T::INCREMENTAL_BY_REF;
SCH_EDIT_FRAME* schFrame = dynamic_cast<SCH_EDIT_FRAME*>( m_schSettingsProvider );
if( schFrame )
if( SCH_EDIT_FRAME* schFrame = dynamic_cast<SCH_EDIT_FRAME*>( m_schSettingsProvider ) )
{
SCHEMATIC_SETTINGS& projSettings = schFrame->Schematic().Settings();
projSettings.m_AnnotateStartNum =
EDA_UNIT_UTILS::UI::ValueFromString( m_textNumberAfter->GetValue() );
projSettings.m_AnnotateStartNum = EDA_UNIT_UTILS::UI::ValueFromString( m_textNumberAfter->GetValue() );
}
return true;

View File

@ -67,10 +67,9 @@ PANEL_EESCHEMA_COLOR_SETTINGS::PANEL_EESCHEMA_COLOR_SETTINGS( wxWindow* aParent
{
m_colorNamespace = "schematic";
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
EESCHEMA_SETTINGS* app_settings = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
COLOR_SETTINGS* current = mgr.GetColorSettings( app_settings->m_ColorTheme );
EESCHEMA_SETTINGS* app_settings = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
COLOR_SETTINGS* current = ::GetColorSettings( app_settings ? app_settings->m_ColorTheme : DEFAULT_THEME );
// Saved theme doesn't exist? Reset to default
if( current->GetFilename() != app_settings->m_ColorTheme )
@ -122,10 +121,8 @@ bool PANEL_EESCHEMA_COLOR_SETTINGS::TransferDataFromWindow()
if( !saveCurrentTheme( true ) )
return false;
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
cfg->m_ColorTheme = m_currentSettings->GetFilename();
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
cfg->m_ColorTheme = m_currentSettings->GetFilename();
return true;
}

View File

@ -80,50 +80,44 @@ void PANEL_EESCHEMA_DISPLAY_OPTIONS::loadEEschemaSettings( EESCHEMA_SETTINGS* cf
bool PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
loadEEschemaSettings( cfg );
loadEEschemaSettings( GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) );
m_galOptsPanel->TransferDataToWindow();
return true;
}
bool PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
cfg->m_Appearance.default_font = m_defaultFontCtrl->GetSelection() <= 0
// This is a keyword. Do not translate.
? wxString( KICAD_FONT_NAME )
: m_defaultFontCtrl->GetStringSelection();
cfg->m_Appearance.show_hidden_pins = m_checkShowHiddenPins->GetValue();
cfg->m_Appearance.show_hidden_fields = m_checkShowHiddenFields->GetValue();
cfg->m_Appearance.show_erc_warnings = m_checkShowERCWarnings->GetValue();
cfg->m_Appearance.show_erc_errors = m_checkShowERCErrors->GetValue();
cfg->m_Appearance.show_erc_exclusions = m_checkShowERCExclusions->GetValue();
cfg->m_Appearance.mark_sim_exclusions = m_cbMarkSimExclusions->GetValue();
cfg->m_Appearance.show_op_voltages = m_checkShowOPVoltages->GetValue();
cfg->m_Appearance.show_op_currents = m_checkShowOPCurrents->GetValue();
cfg->m_Appearance.show_pin_alt_icons = m_checkShowPinAltModeIcons->GetValue();
cfg->m_Appearance.show_page_limits = m_checkPageLimits->GetValue();
cfg->m_Appearance.default_font = m_defaultFontCtrl->GetSelection() <= 0
// This is a keyword. Do not translate.
? wxString( KICAD_FONT_NAME )
: m_defaultFontCtrl->GetStringSelection();
cfg->m_Appearance.show_hidden_pins = m_checkShowHiddenPins->GetValue();
cfg->m_Appearance.show_hidden_fields = m_checkShowHiddenFields->GetValue();
cfg->m_Appearance.show_erc_warnings = m_checkShowERCWarnings->GetValue();
cfg->m_Appearance.show_erc_errors = m_checkShowERCErrors->GetValue();
cfg->m_Appearance.show_erc_exclusions = m_checkShowERCExclusions->GetValue();
cfg->m_Appearance.mark_sim_exclusions = m_cbMarkSimExclusions->GetValue();
cfg->m_Appearance.show_op_voltages = m_checkShowOPVoltages->GetValue();
cfg->m_Appearance.show_op_currents = m_checkShowOPCurrents->GetValue();
cfg->m_Appearance.show_pin_alt_icons = m_checkShowPinAltModeIcons->GetValue();
cfg->m_Appearance.show_page_limits = m_checkPageLimits->GetValue();
cfg->m_Selection.draw_selected_children = m_checkSelDrawChildItems->GetValue();
cfg->m_Selection.fill_shapes = m_checkSelFillShapes->GetValue();
cfg->m_Selection.selection_thickness = KiROUND( m_selWidthCtrl->GetValue() );
cfg->m_Selection.highlight_thickness = KiROUND( m_highlightWidthCtrl->GetValue() );
cfg->m_Selection.highlight_netclass_colors = m_highlightNetclassColors->GetValue();
cfg->m_Selection.highlight_netclass_colors_thickness = m_colHighlightThickness->GetValue();
cfg->m_Selection.highlight_netclass_colors_alpha = m_colHighlightTransparency->GetValue() / 100.0;
cfg->m_Selection.draw_selected_children = m_checkSelDrawChildItems->GetValue();
cfg->m_Selection.fill_shapes = m_checkSelFillShapes->GetValue();
cfg->m_Selection.selection_thickness = KiROUND( m_selWidthCtrl->GetValue() );
cfg->m_Selection.highlight_thickness = KiROUND( m_highlightWidthCtrl->GetValue() );
cfg->m_Selection.highlight_netclass_colors = m_highlightNetclassColors->GetValue();
cfg->m_Selection.highlight_netclass_colors_thickness = m_colHighlightThickness->GetValue();
cfg->m_Selection.highlight_netclass_colors_alpha =
m_colHighlightTransparency->GetValue() / 100.0;
cfg->m_CrossProbing.on_selection = m_checkCrossProbeOnSelection->GetValue();
cfg->m_CrossProbing.center_on_items = m_checkCrossProbeCenter->GetValue();
cfg->m_CrossProbing.zoom_to_fit = m_checkCrossProbeZoom->GetValue();
cfg->m_CrossProbing.auto_highlight = m_checkCrossProbeAutoHighlight->GetValue();
cfg->m_CrossProbing.on_selection = m_checkCrossProbeOnSelection->GetValue();
cfg->m_CrossProbing.center_on_items = m_checkCrossProbeCenter->GetValue();
cfg->m_CrossProbing.zoom_to_fit = m_checkCrossProbeZoom->GetValue();
cfg->m_CrossProbing.auto_highlight = m_checkCrossProbeAutoHighlight->GetValue();
}
m_galOptsPanel->TransferDataFromWindow();

View File

@ -99,9 +99,8 @@ void PANEL_EESCHEMA_EDITING_OPTIONS::loadEEschemaSettings( EESCHEMA_SETTINGS* aC
m_vPitch.SetValue( schIUScale.MilsToIU( aCfg->m_Drawing.default_repeat_offset_y ) );
m_spinLabelRepeatStep->SetValue( aCfg->m_Drawing.repeat_label_increment );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
COLOR_SETTINGS* settings = mgr.GetColorSettings();
COLOR4D schematicBackground = settings->GetColor( LAYER_SCHEMATIC_BACKGROUND );
COLOR_SETTINGS* settings = ::GetColorSettings( DEFAULT_THEME );
COLOR4D schematicBackground = settings->GetColor( LAYER_SCHEMATIC_BACKGROUND );
m_borderColorSwatch->SetSwatchBackground( schematicBackground );
m_borderColorSwatch->SetDefaultColor( settings->GetDefaultColor( LAYER_SHEET ) );
@ -109,8 +108,7 @@ void PANEL_EESCHEMA_EDITING_OPTIONS::loadEEschemaSettings( EESCHEMA_SETTINGS* aC
m_backgroundColorSwatch->SetSwatchBackground( schematicBackground );
m_backgroundColorSwatch->SetDefaultColor( settings->GetDefaultColor( LAYER_SHEET_BACKGROUND ) );
m_backgroundColorSwatch->SetSwatchColor( aCfg->m_Drawing.default_sheet_background_color,
false );
m_backgroundColorSwatch->SetSwatchColor( aCfg->m_Drawing.default_sheet_background_color, false );
m_choiceLineMode->SetSelection( aCfg->m_Drawing.line_mode );
m_choiceArcMode->SetSelection( arcEditModeToComboIndex( aCfg->m_Drawing.arc_edit_mode ) );
@ -132,42 +130,38 @@ void PANEL_EESCHEMA_EDITING_OPTIONS::loadEEschemaSettings( EESCHEMA_SETTINGS* aC
bool PANEL_EESCHEMA_EDITING_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
loadEEschemaSettings( cfg );
loadEEschemaSettings( GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) );
return true;
}
bool PANEL_EESCHEMA_EDITING_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
cfg->m_Drawing.new_power_symbols = static_cast<POWER_SYMBOLS>( m_choicePower->GetSelection() );
cfg->m_Drawing.new_power_symbols = static_cast<POWER_SYMBOLS>( m_choicePower->GetSelection() );
cfg->m_Drawing.default_sheet_border_color = m_borderColorSwatch->GetSwatchColor();
cfg->m_Drawing.default_sheet_background_color = m_backgroundColorSwatch->GetSwatchColor();
cfg->m_Drawing.default_sheet_border_color = m_borderColorSwatch->GetSwatchColor();
cfg->m_Drawing.default_sheet_background_color = m_backgroundColorSwatch->GetSwatchColor();
cfg->m_Drawing.default_repeat_offset_x = schIUScale.IUToMils( m_hPitch.GetIntValue() );
cfg->m_Drawing.default_repeat_offset_y = schIUScale.IUToMils( m_vPitch.GetIntValue() );
cfg->m_Drawing.repeat_label_increment = m_spinLabelRepeatStep->GetValue();
cfg->m_Drawing.default_repeat_offset_x = schIUScale.IUToMils( m_hPitch.GetIntValue() );
cfg->m_Drawing.default_repeat_offset_y = schIUScale.IUToMils( m_vPitch.GetIntValue() );
cfg->m_Drawing.repeat_label_increment = m_spinLabelRepeatStep->GetValue();
cfg->m_Drawing.line_mode = m_choiceLineMode->GetSelection();
cfg->m_Drawing.arc_edit_mode = arcEditModeToEnum( m_choiceArcMode->GetSelection() );
cfg->m_Appearance.footprint_preview = m_footprintPreview->GetValue();
cfg->m_RescueNeverShow = m_neverShowRescue->GetValue();
cfg->m_Drawing.line_mode = m_choiceLineMode->GetSelection();
cfg->m_Drawing.arc_edit_mode = arcEditModeToEnum( m_choiceArcMode->GetSelection() );
cfg->m_Appearance.footprint_preview = m_footprintPreview->GetValue();
cfg->m_RescueNeverShow = m_neverShowRescue->GetValue();
cfg->m_AutoplaceFields.enable = m_checkAutoplaceFields->GetValue();
cfg->m_AutoplaceFields.allow_rejustify = m_checkAutoplaceJustify->GetValue();
cfg->m_AutoplaceFields.align_to_grid = m_checkAutoplaceAlign->GetValue();
cfg->m_AutoplaceFields.enable = m_checkAutoplaceFields->GetValue();
cfg->m_AutoplaceFields.allow_rejustify = m_checkAutoplaceJustify->GetValue();
cfg->m_AutoplaceFields.align_to_grid = m_checkAutoplaceAlign->GetValue();
cfg->m_Input.drag_is_move = !m_mouseDragIsDrag->GetValue();
cfg->m_Input.drag_is_move = !m_mouseDragIsDrag->GetValue();
cfg->m_Drawing.auto_start_wires = m_cbAutoStartWires->GetValue();
cfg->m_Input.esc_clears_net_highlight = m_escClearsNetHighlight->GetValue();
cfg->m_Drawing.auto_start_wires = m_cbAutoStartWires->GetValue();
cfg->m_Input.esc_clears_net_highlight = m_escClearsNetHighlight->GetValue();
}
return true;
}

View File

@ -86,16 +86,17 @@ bool PANEL_SIMULATOR_PREFERENCES::TransferDataFromWindow()
return static_cast<SIM_MOUSE_WHEEL_ACTION>( aChoice->GetSelection() );
};
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
SIM_MOUSE_WHEEL_ACTION_SET& actions = cfg->m_Simulator.preferences.mouse_wheel_actions;
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
SIM_MOUSE_WHEEL_ACTION_SET& actions = cfg->m_Simulator.preferences.mouse_wheel_actions;
actions.vertical_unmodified = toAction( m_choiceVScrollUnmodified );
actions.vertical_with_ctrl = toAction( m_choiceVScrollCtrl );
actions.vertical_with_shift = toAction( m_choiceVScrollShift );
actions.vertical_with_alt = toAction( m_choiceVScrollAlt );
actions.vertical_unmodified = toAction( m_choiceVScrollUnmodified );
actions.vertical_with_ctrl = toAction( m_choiceVScrollCtrl );
actions.vertical_with_shift = toAction( m_choiceVScrollShift );
actions.vertical_with_alt = toAction( m_choiceVScrollAlt );
actions.horizontal = horizontalScrollSelectionToAction( m_choiceHScroll->GetSelection() );
actions.horizontal = horizontalScrollSelectionToAction( m_choiceHScroll->GetSelection() );
}
return true;
}
@ -103,10 +104,9 @@ bool PANEL_SIMULATOR_PREFERENCES::TransferDataFromWindow()
bool PANEL_SIMULATOR_PREFERENCES::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
applyMouseScrollActionsToPanel( cfg->m_Simulator.preferences.mouse_wheel_actions );
applyMouseScrollActionsToPanel( cfg->m_Simulator.preferences.mouse_wheel_actions );
return true;
}

View File

@ -35,15 +35,14 @@ PANEL_SYM_COLOR_SETTINGS::PANEL_SYM_COLOR_SETTINGS( wxWindow* aWindow ) :
bool PANEL_SYM_COLOR_SETTINGS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
if( cfg->m_UseEeschemaColorSettings )
if( cfg && cfg->m_UseEeschemaColorSettings )
m_eeschemaRB->SetValue( true );
else
m_themeRB->SetValue( true );
COLOR_SETTINGS* current = mgr.GetColorSettings( cfg->m_ColorTheme );
COLOR_SETTINGS* current = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
int width = 0;
int height = 0;
@ -51,7 +50,7 @@ bool PANEL_SYM_COLOR_SETTINGS::TransferDataToWindow()
m_themes->Clear();
for( COLOR_SETTINGS* settings : mgr.GetColorSettingsList() )
for( COLOR_SETTINGS* settings : Pgm().GetSettingsManager().GetColorSettingsList() )
{
int pos = m_themes->Append( settings->GetName(), static_cast<void*>( settings ) );
@ -72,17 +71,17 @@ bool PANEL_SYM_COLOR_SETTINGS::TransferDataToWindow()
bool PANEL_SYM_COLOR_SETTINGS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
cfg->m_UseEeschemaColorSettings = m_eeschemaRB->GetValue();
if( !cfg->m_UseEeschemaColorSettings )
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
int sel = m_themes->GetSelection();
COLOR_SETTINGS* colors = static_cast<COLOR_SETTINGS*>( m_themes->GetClientData( sel ) );
cfg->m_UseEeschemaColorSettings = m_eeschemaRB->GetValue();
cfg->m_ColorTheme = colors->GetFilename();
if( !cfg->m_UseEeschemaColorSettings )
{
int sel = m_themes->GetSelection();
COLOR_SETTINGS* colors = static_cast<COLOR_SETTINGS*>( m_themes->GetClientData( sel ) );
cfg->m_ColorTheme = colors->GetFilename();
}
}
return true;

View File

@ -50,10 +50,7 @@ void PANEL_SYM_DISPLAY_OPTIONS::loadSymEditorSettings( SYMBOL_EDITOR_SETTINGS* c
bool PANEL_SYM_DISPLAY_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
loadSymEditorSettings( cfg );
loadSymEditorSettings( GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) );
m_galOptsPanel->TransferDataToWindow();
@ -63,14 +60,14 @@ bool PANEL_SYM_DISPLAY_OPTIONS::TransferDataToWindow()
bool PANEL_SYM_DISPLAY_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
cfg->m_ShowHiddenPins = m_checkShowHiddenPins->GetValue();
cfg->m_ShowHiddenFields = m_checkShowHiddenFields->GetValue();
cfg->m_ShowPinElectricalType = m_showPinElectricalTypes->GetValue();
cfg->m_ShowPinAltIcons = m_checkShowPinAltModeIcons->GetValue();
m_galOptsPanel->TransferDataFromWindow();
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
cfg->m_ShowHiddenPins = m_checkShowHiddenPins->GetValue();
cfg->m_ShowHiddenFields = m_checkShowHiddenFields->GetValue();
cfg->m_ShowPinElectricalType = m_showPinElectricalTypes->GetValue();
cfg->m_ShowPinAltIcons = m_checkShowPinAltModeIcons->GetValue();
m_galOptsPanel->TransferDataFromWindow();
}
return true;
}

View File

@ -66,31 +66,27 @@ void PANEL_SYM_EDITING_OPTIONS::loadSymEditorSettings( SYMBOL_EDITOR_SETTINGS* a
bool PANEL_SYM_EDITING_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
loadSymEditorSettings( cfg );
loadSymEditorSettings( GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) );
return true;
}
bool PANEL_SYM_EDITING_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
cfg->m_Defaults.line_width = schIUScale.IUToMils( m_lineWidth.GetIntValue() );
cfg->m_Defaults.text_size = schIUScale.IUToMils( m_textSize.GetIntValue() );
cfg->m_Defaults.pin_length = schIUScale.IUToMils( m_pinLength.GetIntValue() );
cfg->m_Defaults.pin_num_size = schIUScale.IUToMils( m_pinNumberSize.GetIntValue() );
cfg->m_Defaults.pin_name_size = schIUScale.IUToMils( m_pinNameSize.GetIntValue() );
cfg->m_Repeat.label_delta = m_spinRepeatLabel->GetValue();
cfg->m_Repeat.pin_step = schIUScale.IUToMils( m_pinPitch.GetIntValue() );
cfg->m_dragPinsAlongWithEdges = m_dragPinsWithEdges->GetValue();
cfg->m_Defaults.line_width = schIUScale.IUToMils( m_lineWidth.GetIntValue() );
cfg->m_Defaults.text_size = schIUScale.IUToMils( m_textSize.GetIntValue() );
cfg->m_Defaults.pin_length = schIUScale.IUToMils( m_pinLength.GetIntValue() );
cfg->m_Defaults.pin_num_size = schIUScale.IUToMils( m_pinNumberSize.GetIntValue() );
cfg->m_Defaults.pin_name_size = schIUScale.IUToMils( m_pinNameSize.GetIntValue() );
cfg->m_Repeat.label_delta = m_spinRepeatLabel->GetValue();
cfg->m_Repeat.pin_step = schIUScale.IUToMils( m_pinPitch.GetIntValue() );
cfg->m_dragPinsAlongWithEdges = m_dragPinsWithEdges->GetValue();
// Force pin_step to a grid multiple
cfg->m_Repeat.pin_step = KiROUND( double( cfg->m_Repeat.pin_step ) / MIN_GRID ) * MIN_GRID;
// Force pin_step to a grid multiple
cfg->m_Repeat.pin_step = KiROUND( double( cfg->m_Repeat.pin_step ) / MIN_GRID ) * MIN_GRID;
}
return true;
}

View File

@ -241,16 +241,13 @@ protected:
void PANEL_SYM_LIB_TABLE::setupGrid( WX_GRID* aGrid )
{
auto autoSizeCol =
[&]( WX_GRID* aCurrGrid, int aCol )
{
int prevWidth = aCurrGrid->GetColSize( aCol );
[&]( WX_GRID* aCurrGrid, int aCol )
{
int prevWidth = aCurrGrid->GetColSize( aCol );
aCurrGrid->AutoSizeColumn( aCol, false );
aCurrGrid->SetColSize( aCol, std::max( prevWidth, aCurrGrid->GetColSize( aCol ) ) );
};
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
aCurrGrid->AutoSizeColumn( aCol, false );
aCurrGrid->SetColSize( aCol, std::max( prevWidth, aCurrGrid->GetColSize( aCol ) ) );
};
// Give a bit more room for combobox editors
for( int ii = 0; ii < aGrid->GetNumberRows(); ++ii )
@ -262,33 +259,34 @@ void PANEL_SYM_LIB_TABLE::setupGrid( WX_GRID* aGrid )
aGrid->SetSelectionMode( wxGrid::wxGridSelectRows );
// Set special attributes
wxGridCellAttr* attr;
attr = new wxGridCellAttr;
wxGridCellAttr* attr = new wxGridCellAttr;
wxString fileFiltersStr;
wxString allWildcardsStr;
attr->SetEditor( new GRID_CELL_PATH_EDITOR( m_parent, aGrid,
&cfg->m_lastSymbolLibDir,
true, m_project->GetProjectPath(),
[]( WX_GRID* grid, int row ) -> wxString
{
auto* libTable = static_cast<SYMBOL_LIB_TABLE_GRID*>( grid->GetTable() );
auto* tableRow = static_cast<SYMBOL_LIB_TABLE_ROW*>( libTable->at( row ) );
IO_RELEASER<SCH_IO> pi( SCH_IO_MGR::FindPlugin( tableRow->GetFileType() ) );
if( pi )
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
attr->SetEditor( new GRID_CELL_PATH_EDITOR(
m_parent, aGrid, &cfg->m_lastSymbolLibDir, true, m_project->GetProjectPath(),
[]( WX_GRID* grid, int row ) -> wxString
{
const IO_BASE::IO_FILE_DESC& desc = pi->GetLibraryDesc();
auto* libTable = static_cast<SYMBOL_LIB_TABLE_GRID*>( grid->GetTable() );
auto* tableRow = static_cast<SYMBOL_LIB_TABLE_ROW*>( libTable->at( row ) );
if( desc.m_IsFile )
return desc.FileFilter();
}
IO_RELEASER<SCH_IO> pi( SCH_IO_MGR::FindPlugin( tableRow->GetFileType() ) );
if( pi )
{
const IO_BASE::IO_FILE_DESC& desc = pi->GetLibraryDesc();
if( desc.m_IsFile )
return desc.FileFilter();
}
return wxEmptyString;
} ) );
}
return wxEmptyString;
} ) );
aGrid->SetColAttr( COL_URI, attr );
attr = new wxGridCellAttr;
@ -345,15 +343,14 @@ PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE( DIALOG_EDIT_LIBRARY_TABLES* aParent, P
m_pluginChoices.Add( SCH_IO_MGR::ShowType( type ) );
}
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( cfg->m_lastSymbolLibDir.IsEmpty() )
cfg->m_lastSymbolLibDir = PATHS::GetDefaultUserSymbolsPath();
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
if( cfg->m_lastSymbolLibDir.IsEmpty() )
cfg->m_lastSymbolLibDir = PATHS::GetDefaultUserSymbolsPath();
}
m_lastProjectLibDir = m_project->GetProjectPath();
setupGrid( m_global_grid );
if( m_projectTable )
@ -630,34 +627,28 @@ void PANEL_SYM_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event )
fileFiltersStr = _( "All supported formats" ) + wxT( "|" ) + allWildcardsStr + wxT( "|" )
+ fileFiltersStr;
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
wxString openDir = cfg->m_lastSymbolLibDir;
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
wxString dummy;
wxString* lastDir;
if( m_cur_grid == m_project_grid )
openDir = m_lastProjectLibDir;
lastDir = &m_lastProjectLibDir;
else
lastDir = cfg ? &cfg->m_lastSymbolLibDir : &dummy;
wxWindow* topLevelParent = wxGetTopLevelParent( this );
wxFileDialog dlg( topLevelParent, _( "Add Library" ), openDir, wxEmptyString, fileFiltersStr,
wxFileDialog dlg( topLevelParent, _( "Add Library" ), *lastDir, wxEmptyString, fileFiltersStr,
wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE );
if( dlg.ShowModal() == wxID_CANCEL )
return;
if( m_cur_grid == m_global_grid )
cfg->m_lastSymbolLibDir = dlg.GetDirectory();
else
m_lastProjectLibDir = dlg.GetDirectory();
*lastDir = dlg.GetDirectory();
const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
bool addDuplicates = false;
bool applyToAll = false;
wxString warning = _( "Warning: Duplicate Nickname" );
wxString msg = _( "A library nicknamed '%s' already exists." );
wxString detailedMsg = _( "One of the nicknames will need to be changed after "
"adding this library." );
wxArrayString filePathsList;
dlg.GetPaths( filePathsList );
@ -673,9 +664,12 @@ void PANEL_SYM_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event )
if( !applyToAll )
{
// The cancel button adds the library to the table anyway
addDuplicates = OKOrCancelDialog( wxGetTopLevelParent( this ), warning,
wxString::Format( msg, nickname ),
detailedMsg, _( "Skip" ), _( "Add Anyway" ),
addDuplicates = OKOrCancelDialog( wxGetTopLevelParent( this ), _( "Warning: Duplicate Nickname" ),
wxString::Format( _( "A library nicknamed '%s' already exists." ),
nickname ),
_( "One of the nicknames will need to be changed after adding "
"this library." ),
_( "Skip" ), _( "Add Anyway" ),
&applyToAll ) == wxID_CANCEL;
}

View File

@ -52,11 +52,11 @@ PANEL_TEMPLATE_FIELDNAMES::PANEL_TEMPLATE_FIELDNAMES( wxWindow* aWindow,
m_global = true;
m_templateMgr = &m_templateMgrInstance;
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( cfg && !cfg->m_Drawing.field_names.IsEmpty() )
m_templateMgr->AddTemplateFieldNames( cfg->m_Drawing.field_names );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
if( !cfg->m_Drawing.field_names.IsEmpty() )
m_templateMgr->AddTemplateFieldNames( cfg->m_Drawing.field_names );
}
}
m_addFieldButton->SetBitmap( KiBitmapBundle( BITMAPS::small_plus ) );
@ -292,10 +292,7 @@ bool PANEL_TEMPLATE_FIELDNAMES::TransferDataFromWindow()
if( m_global )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( cfg )
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
// Save global fieldname templates
STRING_FORMATTER sf;

View File

@ -163,8 +163,7 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
void OnKifaceEnd() override;
wxWindow* CreateKiWindow( wxWindow* aParent, int aClassId, KIWAY* aKiway,
int aCtlBits = 0 ) override
wxWindow* CreateKiWindow( wxWindow* aParent, int aClassId, KIWAY* aKiway, int aCtlBits = 0 ) override
{
switch( aClassId )
{
@ -184,10 +183,7 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
}
case FRAME_SCH_SYMBOL_EDITOR:
{
SYMBOL_EDIT_FRAME* frame = new SYMBOL_EDIT_FRAME( aKiway, aParent );
return frame;
}
return new SYMBOL_EDIT_FRAME( aKiway, aParent );
case FRAME_SIMULATOR:
{
@ -205,16 +201,10 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
}
case FRAME_SCH_VIEWER:
{
SYMBOL_VIEWER_FRAME* frame = new SYMBOL_VIEWER_FRAME( aKiway, aParent );
return frame;
}
return new SYMBOL_VIEWER_FRAME( aKiway, aParent );
case FRAME_SYMBOL_CHOOSER:
{
SYMBOL_CHOOSER_FRAME* frame = new SYMBOL_CHOOSER_FRAME( aKiway, aParent );
return frame;
}
return new SYMBOL_CHOOSER_FRAME( aKiway, aParent );
case DIALOG_SCH_LIBRARY_TABLE:
InvokeSchEditSymbolLibTable( aKiway, aParent );
@ -227,17 +217,11 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
return nullptr;
case PANEL_SYM_DISP_OPTIONS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
return new PANEL_SYM_DISPLAY_OPTIONS( aParent, cfg );
}
return new PANEL_SYM_DISPLAY_OPTIONS( aParent, GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) );
case PANEL_SYM_EDIT_GRIDS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
APP_SETTINGS_BASE* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
EDA_BASE_FRAME* frame = aKiway->Player( FRAME_SCH_SYMBOL_EDITOR, false );
if( !frame )
@ -270,9 +254,8 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
case PANEL_SYM_TOOLBARS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings<SYMBOL_EDIT_TOOLBAR_SETTINGS>( "symbol_editor-toolbars" );
APP_SETTINGS_BASE* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
TOOLBAR_SETTINGS* tb = GetToolbarSettings<SYMBOL_EDIT_TOOLBAR_SETTINGS>( "symbol_editor-toolbars" );
std::vector<TOOL_ACTION*> actions;
std::vector<ACTION_TOOLBAR_CONTROL*> controls;
@ -290,17 +273,11 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
return new PANEL_SYM_COLOR_SETTINGS( aParent );
case PANEL_SCH_DISP_OPTIONS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
return new PANEL_EESCHEMA_DISPLAY_OPTIONS( aParent, cfg );
}
return new PANEL_EESCHEMA_DISPLAY_OPTIONS( aParent, GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) );
case PANEL_SCH_GRIDS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
EDA_BASE_FRAME* frame = aKiway->Player( FRAME_SCH, false );
if( !frame )
@ -332,17 +309,12 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
}
case PANEL_SCH_ANNO_OPTIONS:
{
EDA_BASE_FRAME* schSettingsProvider = aKiway->Player( FRAME_SCH, false );
return new PANEL_EESCHEMA_ANNOTATION_OPTIONS( aParent, schSettingsProvider );
}
return new PANEL_EESCHEMA_ANNOTATION_OPTIONS( aParent, aKiway->Player( FRAME_SCH, false ) );
case PANEL_SCH_TOOLBARS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings<SCH_EDIT_TOOLBAR_SETTINGS>( "eeschema-toolbars" );
APP_SETTINGS_BASE* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
TOOLBAR_SETTINGS* tb = GetToolbarSettings<SCH_EDIT_TOOLBAR_SETTINGS>( "eeschema-toolbars" );
std::vector<TOOL_ACTION*> actions;
std::vector<ACTION_TOOLBAR_CONTROL*> controls;

View File

@ -52,7 +52,7 @@
/// Helper for all the old plotting/printing code while it still exists
COLOR4D GetLayerColor( SCH_LAYER_ID aLayer )
{
return Pgm().GetSettingsManager().GetColorSettings()->GetColor( aLayer );
return ::GetColorSettings( DEFAULT_THEME )->GetColor( aLayer );
}

View File

@ -205,7 +205,7 @@ void EESCHEMA_JOBS_HANDLER::InitRenderSettings( SCH_RENDER_SETTINGS* aRenderSett
const wxString& aTheme, SCHEMATIC* aSch,
const wxString& aDrawingSheetOverride )
{
COLOR_SETTINGS* cs = Pgm().GetSettingsManager().GetColorSettings( aTheme );
COLOR_SETTINGS* cs = ::GetColorSettings( aTheme );
aRenderSettings->LoadColors( cs );
aRenderSettings->m_ShowHiddenPins = false;
aRenderSettings->m_ShowHiddenFields = false;
@ -282,14 +282,8 @@ int EESCHEMA_JOBS_HANDLER::JobExportPlot( JOB* aJob )
if( font.IsEmpty() )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg =
dynamic_cast<EESCHEMA_SETTINGS*>( mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) );
if( cfg )
font = cfg->m_Appearance.default_font;
else
font = KICAD_FONT_NAME;
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
font = cfg ? cfg->m_Appearance.default_font : KICAD_FONT_NAME;
}
renderSettings->SetDefaultFont( font );
@ -983,7 +977,7 @@ int EESCHEMA_JOBS_HANDLER::JobSymExportSvg( JOB* aJob )
}
SCH_RENDER_SETTINGS renderSettings;
COLOR_SETTINGS* cs = Pgm().GetSettingsManager().GetColorSettings( svgJob->m_colorTheme );
COLOR_SETTINGS* cs = ::GetColorSettings( svgJob->m_colorTheme );
renderSettings.LoadColors( cs );
renderSettings.SetDefaultPenWidth( DEFAULT_LINE_WIDTH_MILS * schIUScale.IU_PER_MILS );
renderSettings.m_ShowHiddenPins = svgJob->m_includeHiddenPins;

View File

@ -544,7 +544,7 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() :
&m_PlotPanel.color, true ) );
m_params.emplace_back( new PARAM<wxString>( "plot.color_theme",
&m_PlotPanel.color_theme, wxT( "user" ) ) );
&m_PlotPanel.color_theme, DEFAULT_THEME ) );
m_params.emplace_back( new PARAM<int>( "plot.format",
&m_PlotPanel.format, 0 ) );
@ -951,12 +951,14 @@ bool EESCHEMA_SETTINGS::MigrateFromLegacy( wxConfigBase* aCfg )
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
COLOR_SETTINGS* cs = mgr.GetMigratedColorSettings();
auto migrateLegacyColor = [&] ( const std::string& aKey, int aLayerId ) {
wxString str;
auto migrateLegacyColor =
[&] ( const std::string& aKey, int aLayerId )
{
wxString str;
if( aCfg->Read( aKey, &str ) )
cs->SetColor( aLayerId, COLOR4D( str ) );
};
if( aCfg->Read( aKey, &str ) )
cs->SetColor( aLayerId, COLOR4D( str ) );
};
migrateLegacyColor( "Color4DBgCanvasEx", LAYER_SCHEMATIC_BACKGROUND );
migrateLegacyColor( "Color4DBodyBgEx", LAYER_DEVICE_BACKGROUND );
@ -995,9 +997,11 @@ bool EESCHEMA_SETTINGS::MigrateFromLegacy( wxConfigBase* aCfg )
// LibEdit settings were stored with eeschema. If eeschema is the first app to run,
// we need to migrate the LibEdit settings here
SYMBOL_EDITOR_SETTINGS* libedit = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
libedit->MigrateFromLegacy( aCfg );
libedit->Load();
if( SYMBOL_EDITOR_SETTINGS* sym_edit_cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
sym_edit_cfg->MigrateFromLegacy( aCfg );
sym_edit_cfg->Load();
}
return ret;
}

View File

@ -131,16 +131,14 @@ void PIN_LAYOUT_CACHE::recomputeExtentsCache( bool aDefinitelyDirty, KIFONT::FON
VECTOR2D fontSize( aSize, aSize );
int penWidth = GetPenSizeForNormal( aSize );
aCache.m_Extents =
aFont->StringBoundaryLimits( aText, fontSize, penWidth, false, false, aFontMetrics );
aCache.m_Extents = aFont->StringBoundaryLimits( aText, fontSize, penWidth, false, false, aFontMetrics );
}
void PIN_LAYOUT_CACHE::recomputeCaches()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
KIFONT::FONT* font = KIFONT::FONT::GetFont( cfg->m_Appearance.default_font );
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
KIFONT::FONT* font = KIFONT::FONT::GetFont( cfg ? cfg->m_Appearance.default_font : wxString( "" ) );
const KIFONT::METRICS& metrics = m_pin.GetFontMetrics();
// Due to the fact a shadow text in position INSIDE or OUTSIDE is drawn left or right aligned,
@ -156,15 +154,13 @@ void PIN_LAYOUT_CACHE::recomputeCaches()
{
const bool dirty = isDirty( DIRTY_FLAGS::NUMBER );
const wxString number = m_pin.GetShownNumber();
recomputeExtentsCache( dirty, font, m_pin.GetNumberTextSize(), number, metrics,
m_numExtentsCache );
recomputeExtentsCache( dirty, font, m_pin.GetNumberTextSize(), number, metrics, m_numExtentsCache );
}
{
const bool dirty = isDirty( DIRTY_FLAGS::NAME );
const wxString name = m_pin.GetShownName();
recomputeExtentsCache( dirty, font, m_pin.GetNameTextSize(), name, metrics,
m_nameExtentsCache );
recomputeExtentsCache( dirty, font, m_pin.GetNameTextSize(), name, metrics, m_nameExtentsCache );
}
{

View File

@ -139,17 +139,18 @@ bool SCH_PRINTOUT::PrintPage( SCH_SCREEN* aScreen, wxDC* aDC, bool aForPrinting
painter->SetSchematic( &m_parent->Schematic() );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = m_parent->eeconfig();
COLOR_SETTINGS* theme = mgr.GetColorSettings( cfg->m_Printing.color_theme );
SCH_SELECTION_TOOL* selTool = m_parent->GetToolManager()->GetTool<SCH_SELECTION_TOOL>();
EESCHEMA_SETTINGS* cfg = m_parent->eeconfig();
COLOR_SETTINGS* cs = ::GetColorSettings( cfg ? cfg->m_Printing.color_theme : DEFAULT_THEME );
SCH_SELECTION_TOOL* selTool = m_parent->GetToolManager()->GetTool<SCH_SELECTION_TOOL>();
// Target paper size
wxRect pageSizePix;
wxSize dcPPI = dc->GetPPI();
if( aForPrinting )
{
pageSizePix = GetLogicalPageRect();
}
else
{
dc->SetUserScale( 1, 1 );
@ -188,17 +189,17 @@ bool SCH_PRINTOUT::PrintPage( SCH_SCREEN* aScreen, wxDC* aDC, bool aForPrinting
// Set the color scheme
dstSettings->LoadColors( m_parent->GetColorSettings( false ) );
if( cfg->m_Printing.use_theme && theme )
dstSettings->LoadColors( theme );
if( cfg && cfg->m_Printing.use_theme )
dstSettings->LoadColors( cs );
bool printDrawingSheet = cfg->m_Printing.title_block;
bool printDrawingSheet = cfg ? cfg->m_Printing.title_block : true;
COLOR4D bgColor = m_parent->GetColorSettings()->GetColor( LAYER_SCHEMATIC_BACKGROUND );
if( cfg->m_Printing.background )
if( cfg && cfg->m_Printing.background )
{
if( cfg->m_Printing.use_theme && theme )
bgColor = theme->GetColor( LAYER_SCHEMATIC_BACKGROUND );
if( cfg->m_Printing.use_theme )
bgColor = cs->GetColor( LAYER_SCHEMATIC_BACKGROUND );
}
else
{
@ -212,9 +213,9 @@ bool SCH_PRINTOUT::PrintPage( SCH_SCREEN* aScreen, wxDC* aDC, bool aForPrinting
dstSettings->SetLayerColor( LAYER_DRAWINGSHEET,
dstSettings->GetLayerColor( LAYER_SCHEMATIC_DRAWINGSHEET ) );
dstSettings->SetDefaultFont( cfg->m_Appearance.default_font );
dstSettings->SetDefaultFont( cfg ? cfg->m_Appearance.default_font : wxString( "" ) );
if( cfg->m_Printing.monochrome )
if( cfg && cfg->m_Printing.monochrome )
{
for( int i = 0; i < LAYER_ID_COUNT; ++i )
dstSettings->SetLayerColor( i, COLOR4D::BLACK );

View File

@ -152,12 +152,12 @@ APP_SETTINGS_BASE* SCH_BASE_FRAME::GetViewerSettingsBase() const
{
case FRAME_SCH:
default:
return Pgm().GetSettingsManager().GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
return GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
case FRAME_SCH_SYMBOL_EDITOR:
case FRAME_SCH_VIEWER:
case FRAME_SYMBOL_CHOOSER:
return Pgm().GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
return GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
}
}
@ -561,22 +561,19 @@ COLOR_SETTINGS* SCH_BASE_FRAME::GetColorSettings( bool aForceRefresh ) const
{
if( !m_colorSettings || aForceRefresh )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
wxString colorTheme = cfg->m_ColorTheme;
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
wxString colorTheme = cfg ? cfg->m_ColorTheme : wxString( "" );
if( IsType( FRAME_SCH_SYMBOL_EDITOR ) )
{
SYMBOL_EDITOR_SETTINGS* symCfg =
mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
if( !symCfg->m_UseEeschemaColorSettings )
colorTheme = symCfg->m_ColorTheme;
if( SYMBOL_EDITOR_SETTINGS* sym_edit_cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
if( !sym_edit_cfg->m_UseEeschemaColorSettings )
colorTheme = sym_edit_cfg->m_ColorTheme;
}
}
COLOR_SETTINGS* colorSettings = mgr.GetColorSettings( colorTheme );
const_cast<SCH_BASE_FRAME*>( this )->m_colorSettings = colorSettings;
const_cast<SCH_BASE_FRAME*>( this )->m_colorSettings = ::GetColorSettings( colorTheme );
}
return m_colorSettings;

View File

@ -63,12 +63,10 @@ SCH_DRAW_PANEL::SCH_DRAW_PANEL( wxWindow* aParentWindow, wxWindowID aWindowId,
m_painter.reset( new KIGFX::SCH_PAINTER( m_gal ) );
COLOR_SETTINGS* cs = nullptr;
COLOR_SETTINGS* cs = ::GetColorSettings( DEFAULT_THEME );
if( auto frame = dynamic_cast<SCH_BASE_FRAME*>( GetParentEDAFrame() ) )
if( SCH_BASE_FRAME* frame = dynamic_cast<SCH_BASE_FRAME*>( GetParentEDAFrame() ) )
cs = frame->GetColorSettings();
else
cs = Pgm().GetSettingsManager().GetColorSettings();
wxASSERT( cs );
m_painter->GetSettings()->LoadColors( cs );

View File

@ -193,7 +193,7 @@ SCH_EDIT_FRAME::SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
setupUIConditions();
ReCreateMenuBar();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<SCH_EDIT_TOOLBAR_SETTINGS>( "eeschema-toolbars" );
m_toolbarSettings = GetToolbarSettings<SCH_EDIT_TOOLBAR_SETTINGS>( "eeschema-toolbars" );
configureToolbars();
RecreateToolbars();
@ -1906,24 +1906,25 @@ void SCH_EDIT_FRAME::CommonSettingsChanged( int aFlags )
ShowAllIntersheetRefs( settings.m_IntersheetRefsShow );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );
GetRenderSettings()->SetDefaultFont( cfg->m_Appearance.default_font );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );
GetRenderSettings()->SetDefaultFont( cfg->m_Appearance.default_font );
KIGFX::VIEW* view = GetCanvas()->GetView();
view->SetLayerVisible( LAYER_ERC_ERR, cfg->m_Appearance.show_erc_errors );
view->SetLayerVisible( LAYER_ERC_WARN, cfg->m_Appearance.show_erc_warnings );
view->SetLayerVisible( LAYER_ERC_EXCLUSION, cfg->m_Appearance.show_erc_exclusions );
view->SetLayerVisible( LAYER_OP_VOLTAGES, cfg->m_Appearance.show_op_voltages );
view->SetLayerVisible( LAYER_OP_CURRENTS, cfg->m_Appearance.show_op_currents );
KIGFX::VIEW* view = GetCanvas()->GetView();
view->SetLayerVisible( LAYER_ERC_ERR, cfg->m_Appearance.show_erc_errors );
view->SetLayerVisible( LAYER_ERC_WARN, cfg->m_Appearance.show_erc_warnings );
view->SetLayerVisible( LAYER_ERC_EXCLUSION, cfg->m_Appearance.show_erc_exclusions );
view->SetLayerVisible( LAYER_OP_VOLTAGES, cfg->m_Appearance.show_op_voltages );
view->SetLayerVisible( LAYER_OP_CURRENTS, cfg->m_Appearance.show_op_currents );
RefreshOperatingPointDisplay();
RefreshOperatingPointDisplay();
settings.m_TemplateFieldNames.DeleteAllFieldNameTemplates( true /* global */ );
settings.m_TemplateFieldNames.DeleteAllFieldNameTemplates( true /* global */ );
if( !cfg->m_Drawing.field_names.IsEmpty() )
settings.m_TemplateFieldNames.AddTemplateFieldNames( cfg->m_Drawing.field_names );
if( !cfg->m_Drawing.field_names.IsEmpty() )
settings.m_TemplateFieldNames.AddTemplateFieldNames( cfg->m_Drawing.field_names );
}
SCH_SCREEN* screen = GetCurrentSheet().LastScreen();

View File

@ -29,19 +29,13 @@
#include <sch_connection.h>
#include <sch_group.h>
#include <sch_rule_area.h>
#include <sch_item.h>
#include <sch_screen.h>
#include <sch_sheet_path.h>
#include <sch_draw_panel.h>
#include <sch_edit_frame.h>
#include <schematic.h>
#include <symbol.h>
#include <connection_graph.h>
#include <trace_helpers.h>
#include <general.h>
#include <netclass.h>
#include <project/project_file.h>
#include <project/net_settings.h>
#include <font/kicad_font_name.h>
// Rendering fonts is expensive (particularly when using outline fonts). At small effective
@ -576,10 +570,11 @@ int SCH_ITEM::compare( const SCH_ITEM& aOther, int aCompareFlags ) const
const wxString& SCH_ITEM::GetDefaultFont() const
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
static wxString defaultName = KICAD_FONT_NAME;
return cfg->m_Appearance.default_font;
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
return cfg ? cfg->m_Appearance.default_font : defaultName;
}

View File

@ -328,8 +328,7 @@ SCH_LAYER_ID SCH_MARKER::GetColorLayer() const
KIGFX::COLOR4D SCH_MARKER::getColor() const
{
COLOR_SETTINGS* colors = Pgm().GetSettingsManager().GetColorSettings();
return colors->GetColor( GetColorLayer() );
return ::GetColorSettings( DEFAULT_THEME )->GetColor( GetColorLayer() );
}

View File

@ -101,32 +101,22 @@ SCH_PIN::SCH_PIN( LIB_SYMBOL* aParentSymbol ) :
SCH_ITEM( aParentSymbol, SCH_PIN_T, 0, 0 ),
m_libPin( nullptr ),
m_position( { 0, 0 } ),
m_length( schIUScale.MilsToIU( DEFAULT_PIN_LENGTH ) ),
m_orientation( PIN_ORIENTATION::PIN_RIGHT ),
m_shape( GRAPHIC_PINSHAPE::LINE ),
m_type( ELECTRICAL_PINTYPE::PT_UNSPECIFIED ),
m_hidden( false ),
m_numTextSize( schIUScale.MilsToIU( DEFAULT_PINNUM_SIZE ) ),
m_nameTextSize( schIUScale.MilsToIU( DEFAULT_PINNAME_SIZE ) ),
m_isDangling( true ),
m_layoutCache( std::make_unique<PIN_LAYOUT_CACHE>( *this ) )
{
// Use the application settings for pin sizes if exists.
// pgm can be nullptr when running a shared lib from a script, not from a kicad appl
PGM_BASE* pgm = PgmOrNull();
if( pgm )
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
SETTINGS_MANAGER& mgr = pgm->GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
m_length = schIUScale.MilsToIU( cfg->m_Defaults.pin_length );
m_numTextSize = schIUScale.MilsToIU( cfg->m_Defaults.pin_num_size );
m_nameTextSize = schIUScale.MilsToIU( cfg->m_Defaults.pin_name_size );
}
else // Use hardcoded eeschema defaults: symbol_editor settings are not existing.
{
m_length = schIUScale.MilsToIU( DEFAULT_PIN_LENGTH );
m_numTextSize = schIUScale.MilsToIU( DEFAULT_PINNUM_SIZE );
m_nameTextSize = schIUScale.MilsToIU( DEFAULT_PINNAME_SIZE );
}
m_layer = LAYER_DEVICE;
}

View File

@ -881,9 +881,7 @@ wxFileName SCH_PLOTTER::createPlotFileName( const SCH_PLOT_OPTS& aPlotOpts,
void SCH_PLOTTER::Plot( PLOT_FORMAT aPlotFormat, const SCH_PLOT_OPTS& aPlotOpts,
SCH_RENDER_SETTINGS* aRenderSettings, REPORTER* aReporter )
{
SETTINGS_MANAGER& settingsMgr = Pgm().GetSettingsManager();
m_colorSettings = settingsMgr.GetColorSettings( aPlotOpts.m_theme );
m_colorSettings = ::GetColorSettings( aPlotOpts.m_theme );
switch( aPlotFormat )
{

View File

@ -55,7 +55,7 @@ SCH_PREVIEW_PANEL::SCH_PREVIEW_PANEL( wxWindow* aParentWindow, wxWindowID aWindo
m_painter.reset( new KIGFX::SCH_PAINTER( m_gal ) );
SCH_RENDER_SETTINGS* renderSettings = GetRenderSettings();
renderSettings->LoadColors( Pgm().GetSettingsManager().GetColorSettings() );
renderSettings->LoadColors( ::GetColorSettings( DEFAULT_THEME ) );
renderSettings->m_ShowPinsElectricalType = false;
renderSettings->m_ShowPinNumbers = false;
renderSettings->m_TextOffsetRatio = 0.35;

View File

@ -1263,7 +1263,7 @@ void SCH_SHEET::Plot( PLOTTER* aPlotter, bool aBackground, const SCH_PLOT_OPTS&
if( GetDNP() )
{
COLOR_SETTINGS* colors = Pgm().GetSettingsManager().GetColorSettings();
COLOR_SETTINGS* colors = ::GetColorSettings( DEFAULT_THEME );
BOX2I bbox = GetBodyBoundingBox();
BOX2I pins = GetBoundingBox();
VECTOR2D margins( std::max( bbox.GetX() - pins.GetX(),

View File

@ -67,8 +67,7 @@ SCHEMATIC_SETTINGS::SCHEMATIC_SETTINGS( JSON_SETTINGS* aParent, const std::strin
m_MaxError( ARC_LOW_DEF_MM * schIUScale.IU_PER_MM ),
m_NgspiceSettings( nullptr )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
int defaultLineThickness = cfg ? cfg->m_Drawing.default_line_thickness : DEFAULT_LINE_WIDTH_MILS;
int defaultTextSize = cfg ? cfg->m_Drawing.default_text_size : DEFAULT_TEXT_SIZE;
@ -186,12 +185,11 @@ SCHEMATIC_SETTINGS::SCHEMATIC_SETTINGS( JSON_SETTINGS* aParent, const std::strin
}
// Read global fieldname templates
SETTINGS_MANAGER& curr_mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* curr_cfg =
curr_mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( curr_cfg && !curr_cfg->m_Drawing.field_names.IsEmpty() )
m_TemplateFieldNames.AddTemplateFieldNames( curr_cfg->m_Drawing.field_names );
if( EESCHEMA_SETTINGS* curr_cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
if( !curr_cfg->m_Drawing.field_names.IsEmpty() )
m_TemplateFieldNames.AddTemplateFieldNames( curr_cfg->m_Drawing.field_names );
}
}, {} ) );
m_params.emplace_back( new PARAM<wxString>( "bom_export_filename",

View File

@ -172,7 +172,7 @@ SIMULATOR_FRAME::SIMULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
// was created.
m_tbTopMain->SetToolManager( m_toolManager );
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<SIMULATOR_TOOLBAR_SETTINGS>( "sim-toolbars" );
m_toolbarSettings = GetToolbarSettings<SIMULATOR_TOOLBAR_SETTINGS>( "sim-toolbars" );
configureToolbars();
RecreateToolbars();
ReCreateMenuBar();
@ -290,18 +290,17 @@ void SIMULATOR_FRAME::CommonSettingsChanged( int aFlags )
{
KIWAY_PLAYER::CommonSettingsChanged( aFlags );
auto* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( m_toolManager->GetSettings() );
wxASSERT( cfg != nullptr );
m_ui->ApplyPreferences( cfg->m_Simulator.preferences );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
m_ui->ApplyPreferences( cfg->m_Simulator.preferences );
}
WINDOW_SETTINGS* SIMULATOR_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg )
{
EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
wxASSERT( cfg );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
return &cfg->m_Simulator.window;
return cfg ? &cfg->m_Simulator.window : nullptr;
return nullptr;
}

View File

@ -138,7 +138,7 @@ SYMBOL_EDIT_FRAME::SYMBOL_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
SetIcons( icon_bundle );
m_settings = Pgm().GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
m_settings = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
LoadSettings( m_settings );
m_libMgr = new LIB_SYMBOL_LIBRARY_MANAGER( *this );
@ -181,7 +181,7 @@ SYMBOL_EDIT_FRAME::SYMBOL_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
ReCreateMenuBar();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<SYMBOL_EDIT_TOOLBAR_SETTINGS>( "symbol_editor-toolbars" );
m_toolbarSettings = GetToolbarSettings<SYMBOL_EDIT_TOOLBAR_SETTINGS>( "symbol_editor-toolbars" );
configureToolbars();
RecreateToolbars();
@ -304,11 +304,8 @@ SYMBOL_EDIT_FRAME::~SYMBOL_EDIT_FRAME()
// current screen is destroyed in EDA_DRAW_FRAME
SetScreen( m_dummyScreen );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
if( cfg )
mgr.Save( cfg );
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
Pgm().GetSettingsManager().Save( cfg );
delete m_libMgr;
}
@ -362,12 +359,12 @@ APP_SETTINGS_BASE* SYMBOL_EDIT_FRAME::config() const
COLOR_SETTINGS* SYMBOL_EDIT_FRAME::GetColorSettings( bool aForceRefresh ) const
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = GetSettings();
if( GetSettings()->m_UseEeschemaColorSettings )
return mgr.GetColorSettings( mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" )->m_ColorTheme );
else
return mgr.GetColorSettings( GetSettings()->m_ColorTheme );
if( cfg && static_cast<SYMBOL_EDITOR_SETTINGS*>( cfg )->m_UseEeschemaColorSettings )
cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
}
@ -1367,15 +1364,15 @@ void SYMBOL_EDIT_FRAME::CommonSettingsChanged( int aFlags )
{
SCH_BASE_FRAME::CommonSettingsChanged( aFlags );
SETTINGS_MANAGER* mgr = GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr->GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
GetRenderSettings()->m_ShowPinsElectricalType = cfg->m_ShowPinElectricalType;
GetRenderSettings()->m_ShowHiddenPins = cfg->m_ShowHiddenPins;
GetRenderSettings()->m_ShowHiddenFields = cfg->m_ShowHiddenFields;
GetRenderSettings()->m_ShowPinAltIcons = cfg->m_ShowPinAltIcons;
GetRenderSettings()->m_ShowPinsElectricalType = cfg->m_ShowPinElectricalType;
GetRenderSettings()->m_ShowHiddenPins = cfg->m_ShowHiddenPins;
GetRenderSettings()->m_ShowHiddenFields = cfg->m_ShowHiddenFields;
GetRenderSettings()->m_ShowPinAltIcons = cfg->m_ShowPinAltIcons;
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );
}
if( m_symbol )
m_symbol->ClearCaches();

View File

@ -661,18 +661,14 @@ bool SYMBOL_LIB_TABLE::LoadGlobalTable( SYMBOL_LIB_TABLE& aTable )
aTable.Load( fn.GetFullPath() );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* settings = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
wxCHECK( settings, false );
wxString packagesPath;
KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" );
wxString packagesPath;
const ENV_VAR_MAP& vars = Pgm().GetLocalEnvVariables();
if( std::optional<wxString> v = ENV_VAR::GetVersionedEnvVarValue( vars, wxT( "3RD_PARTY" ) ) )
packagesPath = *v;
if( settings->m_PcmLibAutoAdd )
if( cfg && cfg->m_PcmLibAutoAdd )
{
// Scan for libraries in PCM packages directory
wxFileName d( packagesPath, "" );
@ -680,14 +676,14 @@ bool SYMBOL_LIB_TABLE::LoadGlobalTable( SYMBOL_LIB_TABLE& aTable )
if( d.DirExists() )
{
PCM_SYM_LIB_TRAVERSER traverser( packagesPath, aTable, settings->m_PcmLibPrefix );
PCM_SYM_LIB_TRAVERSER traverser( packagesPath, aTable, cfg->m_PcmLibPrefix );
wxDir dir( d.GetPath() );
dir.Traverse( traverser );
}
}
if( settings->m_PcmLibAutoRemove )
if( cfg && cfg->m_PcmLibAutoRemove )
{
// Remove PCM libraries that no longer exist
std::vector<wxString> to_remove;

View File

@ -143,7 +143,7 @@ SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
setupTools();
setupUIConditions();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<SYMBOL_VIEWER_TOOLBAR_SETTINGS>( "symbol_viewer-toolbars" );
m_toolbarSettings = GetToolbarSettings<SYMBOL_VIEWER_TOOLBAR_SETTINGS>( "symbol_viewer-toolbars" );
configureToolbars();
RecreateToolbars();
@ -850,50 +850,50 @@ void SYMBOL_VIEWER_FRAME::DClickOnSymbolList( wxCommandEvent& event )
void SYMBOL_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
SCH_BASE_FRAME::LoadSettings( GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) );
SCH_BASE_FRAME::LoadSettings( cfg );
// Grid shape, etc.
GetGalDisplayOptions().ReadWindowSettings( cfg->m_LibViewPanel.window );
m_libListWidth = cfg->m_LibViewPanel.lib_list_width;
m_symbolListWidth = cfg->m_LibViewPanel.cmp_list_width;
GetRenderSettings()->m_ShowPinsElectricalType = cfg->m_LibViewPanel.show_pin_electrical_type;
GetRenderSettings()->m_ShowPinNumbers = cfg->m_LibViewPanel.show_pin_numbers;
// Set parameters to a reasonable value.
int maxWidth = cfg->m_LibViewPanel.window.state.size_x - 80;
if( m_libListWidth + m_symbolListWidth > maxWidth )
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
m_libListWidth = maxWidth * ( m_libListWidth / ( m_libListWidth + m_symbolListWidth ) );
m_symbolListWidth = maxWidth - m_libListWidth;
// Grid shape, etc.
GetGalDisplayOptions().ReadWindowSettings( cfg->m_LibViewPanel.window );
m_libListWidth = cfg->m_LibViewPanel.lib_list_width;
m_symbolListWidth = cfg->m_LibViewPanel.cmp_list_width;
GetRenderSettings()->m_ShowPinsElectricalType = cfg->m_LibViewPanel.show_pin_electrical_type;
GetRenderSettings()->m_ShowPinNumbers = cfg->m_LibViewPanel.show_pin_numbers;
// Set parameters to a reasonable value.
int maxWidth = cfg->m_LibViewPanel.window.state.size_x - 80;
if( m_libListWidth + m_symbolListWidth > maxWidth )
{
m_libListWidth = maxWidth * ( m_libListWidth / ( m_libListWidth + m_symbolListWidth ) );
m_symbolListWidth = maxWidth - m_libListWidth;
}
}
}
void SYMBOL_VIEWER_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg)
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
SCH_BASE_FRAME::SaveSettings( cfg );
SCH_BASE_FRAME::SaveSettings( GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) );
if( m_libListWidth && m_libList )
m_libListWidth = m_libList->GetSize().x;
m_symbolListWidth = m_symbolList->GetSize().x;
cfg->m_LibViewPanel.lib_list_width = m_libListWidth;
cfg->m_LibViewPanel.cmp_list_width = m_symbolListWidth;
if( SCH_RENDER_SETTINGS* renderSettings = GetRenderSettings() )
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
cfg->m_LibViewPanel.show_pin_electrical_type = renderSettings->m_ShowPinsElectricalType;
cfg->m_LibViewPanel.show_pin_numbers = renderSettings->m_ShowPinNumbers;
cfg->m_LibViewPanel.lib_list_width = m_libListWidth;
cfg->m_LibViewPanel.cmp_list_width = m_symbolListWidth;
if( SCH_RENDER_SETTINGS* renderSettings = GetRenderSettings() )
{
cfg->m_LibViewPanel.show_pin_electrical_type = renderSettings->m_ShowPinsElectricalType;
cfg->m_LibViewPanel.show_pin_numbers = renderSettings->m_ShowPinNumbers;
}
}
}
@ -910,9 +910,8 @@ void SYMBOL_VIEWER_FRAME::CommonSettingsChanged( int aFlags )
{
SCH_BASE_FRAME::CommonSettingsChanged( aFlags );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
GetGalDisplayOptions().ReadWindowSettings( cfg->m_LibViewPanel.window );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
GetGalDisplayOptions().ReadWindowSettings( cfg->m_LibViewPanel.window );
GetCanvas()->GetGAL()->SetAxesColor( m_colorSettings->GetColor( LAYER_SCHEMATIC_GRID_AXES ) );
GetCanvas()->GetGAL()->DrawGrid();

View File

@ -1517,10 +1517,8 @@ int SCH_EDIT_TOOL::RepeatDrawItem( const TOOL_EVENT& aEvent )
for( const std::unique_ptr<SCH_ITEM>& item : sourceItems )
{
SCH_ITEM* newItem = item->Duplicate( IGNORE_PARENT_GROUP );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
bool restore_state = false;
SCH_ITEM* newItem = item->Duplicate( IGNORE_PARENT_GROUP );
bool restore_state = false;
// Ensure newItem has a suitable parent: the current screen, because an item from
// a list of items to repeat must be attached to this current screen
@ -1538,9 +1536,11 @@ int SCH_EDIT_TOOL::RepeatDrawItem( const TOOL_EVENT& aEvent )
if( SCH_LABEL_BASE* label = dynamic_cast<SCH_LABEL_BASE*>( newItem ) )
{
// If incrementing tries to go below zero, tell user why the value is repeated
if( !label->IncrementLabel( cfg->m_Drawing.repeat_label_increment ) )
m_frame->ShowInfoBarWarning( _( "Label value cannot go below zero" ), true );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
if( !label->IncrementLabel( cfg->m_Drawing.repeat_label_increment ) )
m_frame->ShowInfoBarWarning( _( "Label value cannot go below zero" ), true );
}
}
// If cloning a symbol then put into 'move' mode.
@ -1549,7 +1549,7 @@ int SCH_EDIT_TOOL::RepeatDrawItem( const TOOL_EVENT& aEvent )
VECTOR2I cursorPos = getViewControls()->GetCursorPosition( true );
newItem->Move( cursorPos - newItem->GetPosition() );
}
else
else if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
newItem->Move( VECTOR2I( schIUScale.MilsToIU( cfg->m_Drawing.default_repeat_offset_x ),
schIUScale.MilsToIU( cfg->m_Drawing.default_repeat_offset_y ) ) );
@ -1621,7 +1621,6 @@ int SCH_EDIT_TOOL::RepeatDrawItem( const TOOL_EVENT& aEvent )
m_frame->Schematic().CleanUp( &commit );
commit.Push( _( "Repeat Item" ) );
}
}
if( !newItems.Empty() )
@ -2945,8 +2944,6 @@ int SCH_EDIT_TOOL::BreakWire( const TOOL_EVENT& aEvent )
std::vector<SCH_LINE*> lines;
// Save the current orthogonal mode so we can restore it later
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
static enum LINE_MODE lineMode = LINE_MODE::LINE_MODE_90;
static bool lineModeChanged = false;
@ -2964,7 +2961,6 @@ int SCH_EDIT_TOOL::BreakWire( const TOOL_EVENT& aEvent )
}
};
for( EDA_ITEM* item : selection )
{
if( item->Type() == SCH_LINE_T )
@ -3001,11 +2997,14 @@ int SCH_EDIT_TOOL::BreakWire( const TOOL_EVENT& aEvent )
if( !lines.empty() )
{
if( cfg->m_Drawing.line_mode != LINE_MODE::LINE_MODE_FREE )
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
lineMode = (enum LINE_MODE) cfg->m_Drawing.line_mode;
lineModeChanged = true;
m_toolMgr->RunAction( SCH_ACTIONS::lineModeFree );
if( cfg->m_Drawing.line_mode != LINE_MODE::LINE_MODE_FREE )
{
lineMode = (enum LINE_MODE) cfg->m_Drawing.line_mode;
lineModeChanged = true;
m_toolMgr->RunAction( SCH_ACTIONS::lineModeFree );
}
}
m_frame->TestDanglingEnds();

View File

@ -405,11 +405,13 @@ int SCH_MOVE_TOOL::Main( const TOOL_EVENT& aEvent )
bool SCH_MOVE_TOOL::doMoveSelection( const TOOL_EVENT& aEvent, SCH_COMMIT* aCommit, bool aIsSlice )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
KIGFX::VIEW_CONTROLS* controls = getViewControls();
EE_GRID_HELPER grid( m_toolMgr );
bool wasDragging = m_moveInProgress && m_isDrag;
bool isLineModeConstrained = false;
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
isLineModeConstrained = cfg->m_Drawing.line_mode != LINE_MODE::LINE_MODE_FREE;
m_anchorPos.reset();
@ -800,10 +802,8 @@ bool SCH_MOVE_TOOL::doMoveSelection( const TOOL_EVENT& aEvent, SCH_COMMIT* aComm
// Only partially selected drag lines in orthogonal line mode need special
// handling
if( m_isDrag
&& cfg->m_Drawing.line_mode != LINE_MODE::LINE_MODE_FREE
&& line
&& line->HasFlag( STARTPOINT ) != line->HasFlag( ENDPOINT ) )
if( m_isDrag && isLineModeConstrained
&& line && line->HasFlag( STARTPOINT ) != line->HasFlag( ENDPOINT ) )
{
orthoLineDrag( aCommit, line, splitDelta, xBendCount, yBendCount, grid );
}

View File

@ -82,11 +82,9 @@ bool SYMBOL_EDITOR_DRAWING_TOOLS::Init()
int SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
{
KICAD_T type = aEvent.Parameter<KICAD_T>();
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
SYMBOL_EDITOR_PIN_TOOL* pinTool = type == SCH_PIN_T
? m_toolMgr->GetTool<SYMBOL_EDITOR_PIN_TOOL>()
: nullptr;
SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
SYMBOL_EDITOR_PIN_TOOL* pinTool = type == SCH_PIN_T ? m_toolMgr->GetTool<SYMBOL_EDITOR_PIN_TOOL>()
: nullptr;
if( m_inTwoClickPlace )
return 0;
@ -236,8 +234,12 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::TwoClickPlace( const TOOL_EVENT& aEvent )
if( m_drawSpecificBodyStyle )
text->SetBodyStyle( m_frame->GetBodyStyle() );
text->SetTextSize( VECTOR2I( schIUScale.MilsToIU( cfg->m_Defaults.text_size ),
schIUScale.MilsToIU( cfg->m_Defaults.text_size ) ) );
if( cfg )
{
text->SetTextSize( VECTOR2I( schIUScale.MilsToIU( cfg->m_Defaults.text_size ),
schIUScale.MilsToIU( cfg->m_Defaults.text_size ) ) );
}
text->SetTextAngle( m_lastTextAngle );
DIALOG_TEXT_PROPERTIES dlg( m_frame, text );
@ -367,8 +369,7 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::doDrawShape( const TOOL_EVENT& aEvent, std::opt
SHAPE_T toolType = aDrawingShape.value_or( SHAPE_T::SEGMENT );
KIGFX::VIEW_CONTROLS* controls = getViewControls();
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
EE_GRID_HELPER grid( m_toolMgr );
VECTOR2I cursorPos;
SHAPE_T shapeType = toolType == SHAPE_T::SEGMENT ? SHAPE_T::POLY : toolType;
@ -469,15 +470,19 @@ int SYMBOL_EDITOR_DRAWING_TOOLS::doDrawShape( const TOOL_EVENT& aEvent, std::opt
m_toolMgr->RunAction( ACTIONS::selectionClear );
int lineWidth = schIUScale.MilsToIU( cfg->m_Defaults.line_width );
int lineWidth = schIUScale.MilsToIU( cfg ? cfg->m_Defaults.line_width : DEFAULT_LINE_WIDTH_MILS );
if( isTextBox )
{
SCH_TEXTBOX* textbox = new SCH_TEXTBOX( LAYER_DEVICE, lineWidth, m_lastFillStyle );
textbox->SetParent( symbol );
textbox->SetTextSize( VECTOR2I( schIUScale.MilsToIU( cfg->m_Defaults.text_size ),
schIUScale.MilsToIU( cfg->m_Defaults.text_size ) ) );
if( cfg )
{
textbox->SetTextSize( VECTOR2I( schIUScale.MilsToIU( cfg->m_Defaults.text_size ),
schIUScale.MilsToIU( cfg->m_Defaults.text_size ) ) );
}
// Must be after SetTextSize()
textbox->SetBold( m_lastTextBold );

View File

@ -51,10 +51,8 @@ static int GetLastPinLength()
{
if( g_LastPinLength == -1 )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
g_LastPinLength = schIUScale.MilsToIU( cfg->m_Defaults.pin_length );
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
g_LastPinLength = schIUScale.MilsToIU( cfg->m_Defaults.pin_length );
}
return g_LastPinLength;
@ -64,10 +62,8 @@ static int GetLastPinNameSize()
{
if( g_LastPinNameSize == -1 )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
g_LastPinNameSize = schIUScale.MilsToIU( cfg->m_Defaults.pin_name_size );
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
g_LastPinNameSize = schIUScale.MilsToIU( cfg->m_Defaults.pin_name_size );
}
return g_LastPinNameSize;
@ -77,10 +73,8 @@ static int GetLastPinNumSize()
{
if( g_LastPinNumSize == -1 )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
g_LastPinNumSize = schIUScale.MilsToIU( cfg->m_Defaults.pin_num_size );
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
g_LastPinNumSize = schIUScale.MilsToIU( cfg->m_Defaults.pin_num_size );
}
return g_LastPinNumSize;
@ -423,33 +417,34 @@ SCH_PIN* SYMBOL_EDITOR_PIN_TOOL::RepeatPin( const SCH_PIN* aSourcePin )
commit.Modify( symbol );
SCH_PIN* pin = static_cast<SCH_PIN*>( aSourcePin->Duplicate( true, &commit ) );
VECTOR2I step;
pin->ClearFlags();
pin->SetFlags( IS_NEW );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
switch( pin->GetOrientation() )
if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" ) )
{
default:
case PIN_ORIENTATION::PIN_RIGHT: step.y = schIUScale.MilsToIU( cfg->m_Repeat.pin_step ); break;
case PIN_ORIENTATION::PIN_UP: step.x = schIUScale.MilsToIU( cfg->m_Repeat.pin_step ); break;
case PIN_ORIENTATION::PIN_DOWN: step.x = schIUScale.MilsToIU( cfg->m_Repeat.pin_step) ; break;
case PIN_ORIENTATION::PIN_LEFT: step.y = schIUScale.MilsToIU( cfg->m_Repeat.pin_step ); break;
VECTOR2I step;
switch( pin->GetOrientation() )
{
default:
case PIN_ORIENTATION::PIN_RIGHT: step.y = schIUScale.MilsToIU( cfg->m_Repeat.pin_step ); break;
case PIN_ORIENTATION::PIN_UP: step.x = schIUScale.MilsToIU( cfg->m_Repeat.pin_step ); break;
case PIN_ORIENTATION::PIN_DOWN: step.x = schIUScale.MilsToIU( cfg->m_Repeat.pin_step) ; break;
case PIN_ORIENTATION::PIN_LEFT: step.y = schIUScale.MilsToIU( cfg->m_Repeat.pin_step ); break;
}
pin->Move( step );
wxString nextName = pin->GetName();
IncrementString( nextName, cfg->m_Repeat.label_delta );
pin->SetName( nextName );
wxString nextNumber = pin->GetNumber();
IncrementString( nextNumber, cfg->m_Repeat.label_delta );
pin->SetNumber( nextNumber );
}
pin->Move( step );
wxString nextName = pin->GetName();
IncrementString( nextName, cfg->m_Repeat.label_delta );
pin->SetName( nextName );
wxString nextNumber = pin->GetNumber();
IncrementString( nextNumber, cfg->m_Repeat.label_delta );
pin->SetNumber( nextNumber );
if( m_frame->SynchronizePins() )
pin->SetFlags( IS_LINKED );

View File

@ -79,8 +79,8 @@ PANEL_SYMBOL_CHOOSER::PANEL_SYMBOL_CHOOSER( SCH_BASE_FRAME* aFrame, wxWindow* aP
PROJECT_FILE& project = m_frame->Prj().GetProjectFile();
// Make sure settings are loaded before we start running multi-threaded symbol loaders
Pgm().GetSettingsManager().GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
Pgm().GetSettingsManager().GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
GetAppSettings<SYMBOL_EDITOR_SETTINGS>( "symbol_editor" );
m_adapter = SYMBOL_TREE_MODEL_ADAPTER::Create( m_frame, libs );
SYMBOL_TREE_MODEL_ADAPTER* adapter = static_cast<SYMBOL_TREE_MODEL_ADAPTER*>( m_adapter.get() );
@ -388,19 +388,12 @@ void PANEL_SYMBOL_CHOOSER::OnChar( wxKeyEvent& aEvent )
wxPanel* PANEL_SYMBOL_CHOOSER::constructRightPanel( wxWindow* aParent )
{
EDA_DRAW_PANEL_GAL::GAL_TYPE backend;
EDA_DRAW_PANEL_GAL::GAL_TYPE backend = EDA_DRAW_PANEL_GAL::GAL_TYPE::GAL_TYPE_OPENGL;
if( m_frame->GetCanvas() )
{
backend = m_frame->GetCanvas()->GetBackend();
}
else
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
else if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
backend = (EDA_DRAW_PANEL_GAL::GAL_TYPE) cfg->m_Graphics.canvas_type;
}
wxPanel* panel = new wxPanel( aParent );
wxBoxSizer* sizer = new wxBoxSizer( wxVERTICAL );

View File

@ -50,11 +50,10 @@ SCH_DESIGN_BLOCK_PREVIEW_WIDGET::SCH_DESIGN_BLOCK_PREVIEW_WIDGET( wxWindow* aPar
m_statusSizer( nullptr ),
m_previewItem( nullptr )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
EESCHEMA_SETTINGS* app_settings = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
m_galDisplayOptions.ReadConfig( *common_settings, app_settings->m_Window, this );
m_galDisplayOptions.ReadConfig( *common_settings, cfg->m_Window, this );
m_galDisplayOptions.m_forceDisplayCursor = false;
EDA_DRAW_PANEL_GAL::GAL_TYPE canvasType = aCanvasType;
@ -82,8 +81,8 @@ SCH_DESIGN_BLOCK_PREVIEW_WIDGET::SCH_DESIGN_BLOCK_PREVIEW_WIDGET( wxWindow* aPar
KIGFX::VIEW* view = m_preview->GetView();
auto settings = static_cast<SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
if( auto* theme = Pgm().GetSettingsManager().GetColorSettings( app_settings->m_ColorTheme ) )
settings->LoadColors( theme );
if( COLOR_SETTINGS* cs = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME ) )
settings->LoadColors( cs );
const COLOR4D& backgroundColor = settings->GetBackgroundColor();
const COLOR4D& foregroundColor = settings->GetCursorColor();

View File

@ -45,9 +45,8 @@ SYMBOL_PREVIEW_WIDGET::SYMBOL_PREVIEW_WIDGET( wxWindow* aParent, KIWAY* aKiway,
m_statusSizer( nullptr ),
m_previewItem( nullptr )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings();
EESCHEMA_SETTINGS* app_settings = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
EESCHEMA_SETTINGS* app_settings = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
m_galDisplayOptions.ReadConfig( *common_settings, app_settings->m_Window, this );
m_galDisplayOptions.m_forceDisplayCursor = false;
@ -55,11 +54,8 @@ SYMBOL_PREVIEW_WIDGET::SYMBOL_PREVIEW_WIDGET( wxWindow* aParent, KIWAY* aKiway,
EDA_DRAW_PANEL_GAL::GAL_TYPE canvasType = aCanvasType;
// Allows only a CAIRO or OPENGL canvas:
if( canvasType != EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL
&& canvasType != EDA_DRAW_PANEL_GAL::GAL_FALLBACK )
{
if( canvasType != EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL && canvasType != EDA_DRAW_PANEL_GAL::GAL_FALLBACK )
canvasType = EDA_DRAW_PANEL_GAL::GAL_TYPE_OPENGL;
}
m_preview = new SCH_PREVIEW_PANEL( this, wxID_ANY, wxDefaultPosition, wxSize( -1, -1 ),
m_galDisplayOptions, canvasType );
@ -78,8 +74,8 @@ SYMBOL_PREVIEW_WIDGET::SYMBOL_PREVIEW_WIDGET( wxWindow* aParent, KIWAY* aKiway,
KIGFX::VIEW* view = m_preview->GetView();
auto settings = static_cast<SCH_RENDER_SETTINGS*>( view->GetPainter()->GetSettings() );
if( auto* theme = Pgm().GetSettingsManager().GetColorSettings( app_settings->m_ColorTheme ) )
settings->LoadColors( theme );
if( COLOR_SETTINGS* cs = ::GetColorSettings( app_settings ? app_settings->m_ColorTheme : DEFAULT_THEME ) )
settings->LoadColors( cs );
const COLOR4D& backgroundColor = settings->GetBackgroundColor();
const COLOR4D& foregroundColor = settings->GetCursorColor();
@ -233,11 +229,11 @@ void SYMBOL_PREVIEW_WIDGET::DisplaySymbol( const LIB_ID& aSymbolID, int aUnit, i
m_previewItem->SetPreviewUnit( settings->m_ShowUnit );
m_previewItem->SetPreviewBodyStyle( settings->m_ShowBodyStyle );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( cfg->m_AutoplaceFields.enable )
m_previewItem->AutoplaceFields( nullptr, AUTOPLACE_AUTO );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
if( cfg->m_AutoplaceFields.enable )
m_previewItem->AutoplaceFields( nullptr, AUTOPLACE_AUTO );
}
view->Add( m_previewItem );
@ -291,11 +287,11 @@ void SYMBOL_PREVIEW_WIDGET::DisplayPart( LIB_SYMBOL* aSymbol, int aUnit, int aBo
m_previewItem->SetPreviewUnit( settings->m_ShowUnit );
m_previewItem->SetPreviewBodyStyle( settings->m_ShowBodyStyle );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" );
if( cfg->m_AutoplaceFields.enable )
m_previewItem->AutoplaceFields( nullptr, AUTOPLACE_AUTO );
if( EESCHEMA_SETTINGS* cfg = GetAppSettings<EESCHEMA_SETTINGS>( "eeschema" ) )
{
if( cfg->m_AutoplaceFields.enable )
m_previewItem->AutoplaceFields( nullptr, AUTOPLACE_AUTO );
}
view->Add( m_previewItem );

View File

@ -31,30 +31,23 @@ PANEL_GERBVIEW_COLOR_SETTINGS::PANEL_GERBVIEW_COLOR_SETTINGS( wxWindow* aParent
{
m_colorNamespace = "gerbview";
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* app_settings = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
COLOR_SETTINGS* current = mgr.GetColorSettings( app_settings->m_ColorTheme );
GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
COLOR_SETTINGS* current = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
// Colors can also be modified from the LayersManager, so collect last settings if exist
// (They can be no yet saved on disk)
GERBVIEW_FRAME* gbr_mainframe = dynamic_cast<GERBVIEW_FRAME*>(
wxWindow::FindWindowByName( GERBVIEW_FRAME_NAME ) );
if( gbr_mainframe )
{
gbr_mainframe->m_LayersManager->CollectCurrentColorSettings( current );
}
if( GERBVIEW_FRAME* frame = dynamic_cast<GERBVIEW_FRAME*>( wxWindow::FindWindowByName( GERBVIEW_FRAME_NAME ) ) )
frame->m_LayersManager->CollectCurrentColorSettings( current );
// Saved theme doesn't exist? Reset to default
if( current->GetFilename() != app_settings->m_ColorTheme )
app_settings->m_ColorTheme = current->GetFilename();
createThemeList( app_settings->m_ColorTheme );
if( cfg && current->GetFilename() != cfg->m_ColorTheme )
cfg->m_ColorTheme = current->GetFilename();
createThemeList( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
// Currently this only applies to eeschema
m_optOverrideColors->Hide();
m_currentSettings = new COLOR_SETTINGS( *current );
for( int i = GERBVIEW_LAYER_ID_START; i < GERBVIEW_LAYER_ID_START + GERBER_DRAWLAYERS_COUNT; i++ )
@ -75,10 +68,8 @@ PANEL_GERBVIEW_COLOR_SETTINGS::~PANEL_GERBVIEW_COLOR_SETTINGS()
bool PANEL_GERBVIEW_COLOR_SETTINGS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
cfg->m_ColorTheme = m_currentSettings->GetFilename();
if( GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" ) )
cfg->m_ColorTheme = m_currentSettings->GetFilename();
return true;
}

View File

@ -29,8 +29,7 @@
PANEL_GERBVIEW_DISPLAY_OPTIONS::PANEL_GERBVIEW_DISPLAY_OPTIONS( wxWindow* aParent ) :
PANEL_GERBVIEW_DISPLAY_OPTIONS_BASE( aParent, wxID_ANY )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
m_galOptsPanel = new GAL_OPTIONS_PANEL( this, cfg );
m_galOptionsSizer->Add( m_galOptsPanel, 0, wxEXPAND|wxRIGHT, 15 );
@ -71,10 +70,7 @@ bool PANEL_GERBVIEW_DISPLAY_OPTIONS::TransferDataToWindow()
{
m_galOptsPanel->TransferDataToWindow();
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
loadSettings( cfg );
loadSettings( GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" ) );
return true;
}
@ -82,33 +78,28 @@ bool PANEL_GERBVIEW_DISPLAY_OPTIONS::TransferDataToWindow()
bool PANEL_GERBVIEW_DISPLAY_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
m_galOptsPanel->TransferDataFromWindow();
cfg->m_Display.m_DisplayLinesFill = !m_OptDisplayLines->GetValue();
cfg->m_Display.m_DisplayFlashedItemsFill = !m_OptDisplayFlashedItems->GetValue();
cfg->m_Display.m_DisplayPolygonsFill = !m_OptDisplayPolygons->GetValue();
cfg->m_Appearance.show_dcodes = m_OptDisplayDCodes->GetValue();
if( GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" ) )
{
cfg->m_Display.m_DisplayLinesFill = !m_OptDisplayLines->GetValue();
cfg->m_Display.m_DisplayFlashedItemsFill = !m_OptDisplayFlashedItems->GetValue();
cfg->m_Display.m_DisplayPolygonsFill = !m_OptDisplayPolygons->GetValue();
cfg->m_Appearance.show_dcodes = m_OptDisplayDCodes->GetValue();
if( m_pageSizeA4->GetValue() )
cfg->m_Appearance.page_type = wxT( "A4" );
else if( m_pageSizeA3->GetValue() )
cfg->m_Appearance.page_type = wxT( "A3" );
else if( m_pageSizeA2->GetValue() )
cfg->m_Appearance.page_type = wxT( "A2" );
else if( m_pageSizeA->GetValue() )
cfg->m_Appearance.page_type = wxT( "A" );
else if( m_pageSizeB->GetValue() )
cfg->m_Appearance.page_type = wxT( "B" );
else if( m_pageSizeC->GetValue() )
cfg->m_Appearance.page_type = wxT( "C" );
else
cfg->m_Appearance.page_type = wxT( "GERBER" );
// clang-format off
if( m_pageSizeA4->GetValue() ) cfg->m_Appearance.page_type = wxT( "A4" );
else if( m_pageSizeA3->GetValue() ) cfg->m_Appearance.page_type = wxT( "A3" );
else if( m_pageSizeA2->GetValue() ) cfg->m_Appearance.page_type = wxT( "A2" );
else if( m_pageSizeA->GetValue() ) cfg->m_Appearance.page_type = wxT( "A" );
else if( m_pageSizeB->GetValue() ) cfg->m_Appearance.page_type = wxT( "B" );
else if( m_pageSizeC->GetValue() ) cfg->m_Appearance.page_type = wxT( "C" );
else cfg->m_Appearance.page_type = wxT( "GERBER" );
// clang-format on
cfg->m_Display.m_DisplayPageLimits = m_ShowPageLimitsOpt->GetValue();
cfg->m_Display.m_OpacityModeAlphaValue = m_spOpacityCtrl->GetValue();
cfg->m_Display.m_DisplayPageLimits = m_ShowPageLimitsOpt->GetValue();
cfg->m_Display.m_OpacityModeAlphaValue = m_spOpacityCtrl->GetValue();
}
return true;
}

View File

@ -39,13 +39,13 @@ PANEL_GERBVIEW_EXCELLON_SETTINGS::PANEL_GERBVIEW_EXCELLON_SETTINGS( wxWindow* aP
bool PANEL_GERBVIEW_EXCELLON_SETTINGS::TransferDataToWindow( )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
EXCELLON_DEFAULTS curr_settings;
if( GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" ) )
{
EXCELLON_DEFAULTS curr_settings;
cfg->GetExcellonDefaults( curr_settings );
applySettingsToPanel( curr_settings );
cfg->GetExcellonDefaults( curr_settings );
applySettingsToPanel( curr_settings );
}
return true;
}
@ -53,17 +53,17 @@ bool PANEL_GERBVIEW_EXCELLON_SETTINGS::TransferDataToWindow( )
bool PANEL_GERBVIEW_EXCELLON_SETTINGS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
cfg->m_ExcellonDefaults.m_UnitsMM = m_rbMM->GetValue();
cfg->m_ExcellonDefaults.m_LeadingZero = m_rbLZ->GetValue();
// The first value of these param is 2, not 0
#define FIRST_VALUE 2
cfg->m_ExcellonDefaults.m_MmIntegerLen = m_choiceIntegerMM->GetSelection()+FIRST_VALUE;
cfg->m_ExcellonDefaults.m_MmMantissaLen = m_choiceMantissaMM->GetSelection()+FIRST_VALUE;
cfg->m_ExcellonDefaults.m_InchIntegerLen = m_choiceIntegerInch->GetSelection()+FIRST_VALUE;
cfg->m_ExcellonDefaults.m_InchMantissaLen = m_choiceMantissaInch->GetSelection()+FIRST_VALUE;
if( GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" ) )
{
cfg->m_ExcellonDefaults.m_UnitsMM = m_rbMM->GetValue();
cfg->m_ExcellonDefaults.m_LeadingZero = m_rbLZ->GetValue();
// The first value of these param is 2, not 0
#define FIRST_VALUE 2
cfg->m_ExcellonDefaults.m_MmIntegerLen = m_choiceIntegerMM->GetSelection()+FIRST_VALUE;
cfg->m_ExcellonDefaults.m_MmMantissaLen = m_choiceMantissaMM->GetSelection()+FIRST_VALUE;
cfg->m_ExcellonDefaults.m_InchIntegerLen = m_choiceIntegerInch->GetSelection()+FIRST_VALUE;
cfg->m_ExcellonDefaults.m_InchMantissaLen = m_choiceMantissaInch->GetSelection()+FIRST_VALUE;
}
return true;
}

View File

@ -81,8 +81,7 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
case PANEL_GBR_GRIDS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
EDA_BASE_FRAME* frame = aKiway->Player( FRAME_GERBER, false );
if( frame )
@ -96,9 +95,8 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
case PANEL_GBR_TOOLBARS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings<GERBVIEW_TOOLBAR_SETTINGS>( "gerbview-toolbars" );
GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
TOOLBAR_SETTINGS* tb = GetToolbarSettings<GERBVIEW_TOOLBAR_SETTINGS>( "gerbview-toolbars" );
std::vector<TOOL_ACTION*> actions;
std::vector<ACTION_TOOLBAR_CONTROL*> controls;

View File

@ -58,16 +58,13 @@ EDA_DRAW_PANEL_GAL( aParentWindow, aWindowId, aPosition, aSize, aOptions, aGalTy
setDefaultLayerDeps();
COLOR_SETTINGS* color_settings;
COLOR_SETTINGS* cs = ::GetColorSettings( DEFAULT_THEME );
if( auto frame = dynamic_cast<GERBVIEW_FRAME*>( GetParentEDAFrame() ) )
color_settings = frame->GetColorSettings();
else
color_settings = Pgm().GetSettingsManager().GetColorSettings();
if( GERBVIEW_FRAME* frame = dynamic_cast<GERBVIEW_FRAME*>( GetParentEDAFrame() ) )
cs = frame->GetColorSettings();
wxASSERT( color_settings );
auto renderSettings = static_cast<KIGFX::GERBVIEW_RENDER_SETTINGS*>( m_painter->GetSettings() );
renderSettings->LoadColors( color_settings );
renderSettings->LoadColors( cs );
}

View File

@ -150,22 +150,19 @@ GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
setupUIConditions();
ReCreateMenuBar();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<GERBVIEW_TOOLBAR_SETTINGS>( "gerbview-toolbars" );
m_toolbarSettings = GetToolbarSettings<GERBVIEW_TOOLBAR_SETTINGS>( "gerbview-toolbars" );
configureToolbars();
RecreateToolbars();
m_auimgr.SetManagedWindow( this );
m_auimgr.AddPane( m_tbTopMain, EDA_PANE().HToolbar().Name( "TopMainToolbar" ).Top().Layer( 6 ) );
m_auimgr.AddPane( m_tbTopAux, EDA_PANE().HToolbar().Name( "TopAuxToolbar" ).Top()
.Layer(4) );
m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( "MsgPanel" ).Bottom()
.Layer( 6 ) );
m_auimgr.AddPane( m_tbLeft, EDA_PANE().VToolbar().Name( "LeftToolbar" ).Left()
.Layer( 3 ) );
m_auimgr.AddPane( m_LayersManager, EDA_PANE().Palette().Name( "LayersManager" ).Right()
.Layer( 3 ).Caption( _( "Layers Manager" ) ).PaneBorder( false )
.MinSize( 80, -1 ).BestSize( m_LayersManager->GetBestSize() ) );
m_auimgr.AddPane( m_tbTopAux, EDA_PANE().HToolbar().Name( "TopAuxToolbar" ).Top().Layer(4) );
m_auimgr.AddPane( m_messagePanel, EDA_PANE().Messages().Name( "MsgPanel" ).Bottom().Layer( 6 ) );
m_auimgr.AddPane( m_tbLeft, EDA_PANE().VToolbar().Name( "LeftToolbar" ).Left().Layer( 3 ) );
m_auimgr.AddPane( m_LayersManager, EDA_PANE().Palette().Name( "LayersManager" ).Right().Layer( 3 )
.Caption( _( "Layers Manager" ) ).PaneBorder( false )
.MinSize( 80, -1 ).BestSize( m_LayersManager->GetBestSize() ) );
m_auimgr.AddPane( GetCanvas(), EDA_PANE().Canvas().Name( "DrawFrame" ).Center() );
@ -376,26 +373,23 @@ void GERBVIEW_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
{
EDA_DRAW_FRAME::SaveSettings( aCfg );
GERBVIEW_SETTINGS* cfg = dynamic_cast<GERBVIEW_SETTINGS*>( aCfg );
wxCHECK( cfg, /*void*/ );
if( GERBVIEW_SETTINGS* cfg = dynamic_cast<GERBVIEW_SETTINGS*>( aCfg ) )
{
cfg->m_Appearance.page_type = GetPageSettings().GetType();
cfg->m_Appearance.page_type = GetPageSettings().GetType();
m_drillFileHistory.Save( &cfg->m_DrillFileHistory );
m_zipFileHistory.Save( &cfg->m_ZipFileHistory );
m_jobFileHistory.Save( &cfg->m_JobFileHistory );
}
m_drillFileHistory.Save( &cfg->m_DrillFileHistory );
m_zipFileHistory.Save( &cfg->m_ZipFileHistory );
m_jobFileHistory.Save( &cfg->m_JobFileHistory );
COLOR_SETTINGS* cs = Pgm().GetSettingsManager().GetColorSettings();
Pgm().GetSettingsManager().SaveColorSettings( cs, "gerbview" );
Pgm().GetSettingsManager().SaveColorSettings( ::GetColorSettings( DEFAULT_THEME ), "gerbview" );
}
COLOR_SETTINGS* GERBVIEW_FRAME::GetColorSettings( bool aForceRefresh ) const
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
wxString currentTheme = cfg->m_ColorTheme;
return mgr.GetColorSettings( currentTheme );
GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
}
@ -1219,17 +1213,16 @@ void GERBVIEW_FRAME::CommonSettingsChanged( int aFlags )
EDA_DRAW_FRAME::CommonSettingsChanged( aFlags );
// Update gal display options like cursor shape, grid options:
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
GERBVIEW_SETTINGS* cfg = mgr.GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" );
if( GERBVIEW_SETTINGS* cfg = GetAppSettings<GERBVIEW_SETTINGS>( "gerbview" ) )
{
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );
SetPageSettings( PAGE_INFO( gvconfig()->m_Appearance.page_type ) );
SetPageSettings( PAGE_INFO( cfg->m_Appearance.page_type ) );
SetElementVisibility( LAYER_DCODES, cfg->m_Appearance.show_dcodes );
}
UpdateXORLayers();
SetElementVisibility( LAYER_DCODES, gvconfig()->m_Appearance.show_dcodes );
GetCanvas()->GetView()->MarkTargetDirty( KIGFX::TARGET_NONCACHED );
GetCanvas()->GetView()->UpdateAllItems( KIGFX::REPAINT );
GetCanvas()->ForceRefresh();

View File

@ -26,6 +26,7 @@
#include <typeinfo>
#include <core/wx_stl_compat.h> // for wxString hash
#include <settings/color_settings.h>
#include <pgm_base.h>
class COLOR_SETTINGS;
class COMMON_SETTINGS;
@ -41,6 +42,8 @@ class LOCKFILE;
/// Project settings path will be <projectname> + this
#define PROJECT_BACKUPS_DIR_SUFFIX wxT( "-backups" )
#define DEFAULT_THEME wxString( wxT( "user" ) )
class KICOMMON_API SETTINGS_MANAGER
{
@ -136,7 +139,7 @@ public:
}
else
{
throw std::runtime_error( "Tried to GetAppSettings before registering" );
wxFAIL_MSG( "Tried to GetAppSettings before registering" );
}
m_app_settings_cache[typeHash] = ret;
@ -197,7 +200,7 @@ public:
* @param aName is the name of the color scheme to load.
* @return a loaded COLOR_SETTINGS object.
*/
COLOR_SETTINGS* GetColorSettings( const wxString& aName = "user" );
COLOR_SETTINGS* GetColorSettings( const wxString& aName );
std::vector<COLOR_SETTINGS*> GetColorSettingsList()
{
@ -534,4 +537,30 @@ private:
static wxString backupDateTimeFormat;
};
template<typename T>
T* GetAppSettings( const char* aFilename )
{
if( PGM_BASE* pgm = PgmOrNull() )
return pgm->GetSettingsManager().GetAppSettings<T>( aFilename );
return nullptr;
}
template<typename T>
T* GetToolbarSettings( const wxString& aFilename )
{
if( PGM_BASE* pgm = PgmOrNull() )
return pgm->GetSettingsManager().GetToolbarSettings<T>( aFilename );
return nullptr;
}
inline COLOR_SETTINGS* GetColorSettings( const wxString& aName )
{
return Pgm().GetSettingsManager().GetColorSettings( aName );
}
#endif

View File

@ -40,13 +40,13 @@ DIALOG_UPDATE_CHECK_PROMPT::DIALOG_UPDATE_CHECK_PROMPT( wxWindow* aWindow ) :
bool DIALOG_UPDATE_CHECK_PROMPT::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* settings = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
settings->m_PcmUpdateCheck = m_cbPCMUpdates->GetValue();
if( KICAD_SETTINGS* settings = GetAppSettings<KICAD_SETTINGS>( "kicad" ) )
{
settings->m_PcmUpdateCheck = m_cbPCMUpdates->GetValue();
#ifndef KICAD_UPDATE_CHECK
settings->m_KiCadUpdateCheck = m_cbKiCadUpdates->GetValue();
settings->m_KiCadUpdateCheck = m_cbKiCadUpdates->GetValue();
#endif
}
return true;
}

View File

@ -206,7 +206,7 @@ KICAD_MANAGER_FRAME::KICAD_MANAGER_FRAME( wxWindow* parent, const wxString& titl
setupTools();
setupUIConditions();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<KICAD_MANAGER_TOOLBAR_SETTINGS>( "kicad-toolbars" );
m_toolbarSettings = GetToolbarSettings<KICAD_MANAGER_TOOLBAR_SETTINGS>( "kicad-toolbars" );
configureToolbars();
RecreateToolbars();
ReCreateMenuBar();
@ -214,8 +214,7 @@ KICAD_MANAGER_FRAME::KICAD_MANAGER_FRAME( wxWindow* parent, const wxString& titl
m_auimgr.SetManagedWindow( this );
m_auimgr.SetFlags( wxAUI_MGR_LIVE_RESIZE );
m_auimgr.AddPane( m_tbLeft,
EDA_PANE().VToolbar().Name( "TopMainToolbar" ).Left().Layer( 2 ) );
m_auimgr.AddPane( m_tbLeft, EDA_PANE().VToolbar().Name( "TopMainToolbar" ).Left().Layer( 2 ) );
// BestSize() does not always set the actual pane size of m_leftWin to the required value.
// It happens when m_leftWin is too large (roughly > 1/3 of the kicad manager frame width.
@ -232,10 +231,8 @@ KICAD_MANAGER_FRAME::KICAD_MANAGER_FRAME( wxWindow* parent, const wxString& titl
wxAUI_NB_TOP | wxAUI_NB_CLOSE_ON_ALL_TABS | wxAUI_NB_TAB_MOVE
| wxAUI_NB_SCROLL_BUTTONS | wxNO_BORDER );
m_notebook->Bind( wxEVT_AUINOTEBOOK_PAGE_CLOSE,
&KICAD_MANAGER_FRAME::onNotebookPageCloseRequest, this );
m_notebook->Bind( wxEVT_AUINOTEBOOK_PAGE_CLOSED,
&KICAD_MANAGER_FRAME::onNotebookPageCountChanged, this );
m_notebook->Bind( wxEVT_AUINOTEBOOK_PAGE_CLOSE, &KICAD_MANAGER_FRAME::onNotebookPageCloseRequest, this );
m_notebook->Bind( wxEVT_AUINOTEBOOK_PAGE_CLOSED, &KICAD_MANAGER_FRAME::onNotebookPageCountChanged, this );
m_launcher = new PANEL_KICAD_LAUNCHER( m_notebook );
m_notebook->Freeze();
@ -244,9 +241,8 @@ KICAD_MANAGER_FRAME::KICAD_MANAGER_FRAME( wxWindow* parent, const wxString& titl
m_notebook->SetTabCtrlHeight( 0 );
m_notebook->Thaw();
m_auimgr.AddPane( m_notebook,
EDA_PANE().Canvas().Name( "Editors" ).Center().Caption( EDITORS_CAPTION )
.PaneBorder( false ).MinSize( m_notebook->GetBestSize() ) );
m_auimgr.AddPane( m_notebook, EDA_PANE().Canvas().Name( "Editors" ).Center().Caption( EDITORS_CAPTION )
.PaneBorder( false ).MinSize( m_notebook->GetBestSize() ) );
m_auimgr.Update();

View File

@ -246,10 +246,8 @@ void DIALOG_PCM::OnManageRepositoriesClicked( wxCommandEvent& event )
dialog_data = dialog->GetData();
m_pcm->SetRepositoryList( dialog_data );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* cfg = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
cfg->m_PcmRepositories = std::move( dialog_data );
if( KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" ) )
cfg->m_PcmRepositories = std::move( dialog_data );
setRepositoryListFromPcm();
}

View File

@ -522,9 +522,7 @@ void PANEL_PACKAGES_VIEW::OnDownloadVersionClicked( wxCommandEvent& event )
}
const wxString& url = *ver_it->download_url;
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* cfg = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" );
wxWindow* topLevelParent = wxGetTopLevelParent( this );
wxFileDialog dialog( topLevelParent, _( "Save Package" ), cfg->m_PcmLastDownloadDir,

View File

@ -235,11 +235,9 @@ int KICAD_MANAGER_CONTROL::NewJobsetFile( const TOOL_EVENT& aEvent )
int KICAD_MANAGER_CONTROL::NewFromTemplate( const TOOL_EVENT& aEvent )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* settings = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
KICAD_SETTINGS* settings = GetAppSettings<KICAD_SETTINGS>( "kicad" );
std::map<wxString, wxFileName> titleDirMap;
wxFileName templatePath;
wxFileName templatePath;
// KiCad system template path.
std::optional<wxString> v = ENV_VAR::GetVersionedEnvVarValue( Pgm().GetLocalEnvVariables(),
@ -986,8 +984,7 @@ int KICAD_MANAGER_CONTROL::ShowPluginManager( const TOOL_EVENT& aEvent )
m_frame->Kiway().ExpressMail( FRAME_PCB_EDITOR, MAIL_RELOAD_PLUGINS, payload );
}
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* settings = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
KICAD_SETTINGS* settings = GetAppSettings<KICAD_SETTINGS>( "kicad" );
if( changed.count( PCM_PACKAGE_TYPE::PT_LIBRARY )
&& ( settings->m_PcmLibAutoAdd || settings->m_PcmLibAutoRemove ) )

View File

@ -216,8 +216,7 @@ void UPDATE_MANAGER::CheckForUpdate( wxWindow* aNoticeParent )
requestContent.current_version = verString;
requestContent.lang = Pgm().GetLanguageTag();
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* settings = mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
KICAD_SETTINGS* settings = GetAppSettings<KICAD_SETTINGS>( "kicad" );
requestContent.last_check = settings->m_lastUpdateCheckTime;
@ -255,17 +254,15 @@ void UPDATE_MANAGER::CheckForUpdate( wxWindow* aNoticeParent )
{
// basically saving the last received update prevents us from
// prompting again
SETTINGS_MANAGER& set_mgr = Pgm().GetSettingsManager();
KICAD_SETTINGS* cfg = set_mgr.GetAppSettings<KICAD_SETTINGS>( "kicad" );
cfg->m_lastReceivedUpdate = response.version;
if( KICAD_SETTINGS* cfg = GetAppSettings<KICAD_SETTINGS>( "kicad" ) )
cfg->m_lastReceivedUpdate = response.version;
}
} );
}
}
catch( const std::exception& e )
{
wxLogError( wxString::Format( _( "Unable to parse update response: %s" ),
e.what() ) );
wxLogError( wxString::Format( _( "Unable to parse update response: %s" ), e.what() ) );
}
}

View File

@ -31,9 +31,8 @@ PANEL_PL_EDITOR_COLOR_SETTINGS::PANEL_PL_EDITOR_COLOR_SETTINGS( wxWindow* aParen
bool PANEL_PL_EDITOR_COLOR_SETTINGS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
COLOR_SETTINGS* current = Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme );
PL_EDITOR_SETTINGS* cfg = GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
COLOR_SETTINGS* current = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
int width = 0;
int height = 0;
@ -66,11 +65,11 @@ bool PANEL_PL_EDITOR_COLOR_SETTINGS::TransferDataFromWindow()
if( sel >= 0 )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
COLOR_SETTINGS* colors = static_cast<COLOR_SETTINGS*>( m_themes->GetClientData( sel ) );
cfg->m_ColorTheme = colors->GetFilename();
if( PL_EDITOR_SETTINGS* cfg = GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" ) )
{
COLOR_SETTINGS* colors = static_cast<COLOR_SETTINGS*>( m_themes->GetClientData( sel ) );
cfg->m_ColorTheme = colors->GetFilename();
}
}
return true;

View File

@ -54,10 +54,9 @@ PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL( wxWindow* aParentWindow, wxWindowID aWindo
m_painter = std::make_unique<KIGFX::DS_PAINTER>( m_gal );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
PL_EDITOR_SETTINGS* cfg = GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
m_painter->GetSettings()->LoadColors( mgr.GetColorSettings( cfg->m_ColorTheme ) );
m_painter->GetSettings()->LoadColors( ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME ) );
m_view->SetPainter( m_painter.get() );
// This fixes the zoom in and zoom out limits

View File

@ -66,17 +66,11 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
return new PL_EDITOR_FRAME( aKiway, aParent );
case PANEL_DS_DISPLAY_OPTIONS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
return new PANEL_PL_EDITOR_DISPLAY_OPTIONS( aParent, cfg );
}
return new PANEL_PL_EDITOR_DISPLAY_OPTIONS( aParent, GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" ) );
case PANEL_DS_GRIDS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
APP_SETTINGS_BASE* cfg = GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
EDA_BASE_FRAME* frame = aKiway->Player( FRAME_PL_EDITOR, false );
if( frame )
@ -90,9 +84,8 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
case PANEL_DS_TOOLBARS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings<PL_EDITOR_TOOLBAR_SETTINGS>( "pl_editor-toolbars" );
APP_SETTINGS_BASE* cfg = GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
TOOLBAR_SETTINGS* tb = GetToolbarSettings<PL_EDITOR_TOOLBAR_SETTINGS>( "pl_editor-toolbars" );
std::vector<TOOL_ACTION*> actions;
std::vector<ACTION_TOOLBAR_CONTROL*> controls;

View File

@ -136,7 +136,7 @@ PL_EDITOR_FRAME::PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
setupUIConditions();
ReCreateMenuBar();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<PL_EDITOR_TOOLBAR_SETTINGS>( "pl_editor-toolbars" );
m_toolbarSettings = GetToolbarSettings<PL_EDITOR_TOOLBAR_SETTINGS>( "pl_editor-toolbars" );
configureToolbars();
RecreateToolbars();
@ -643,9 +643,8 @@ void PL_EDITOR_FRAME::CommonSettingsChanged( int aFlags )
{
EDA_DRAW_FRAME::CommonSettingsChanged( aFlags );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
COLOR_SETTINGS* colors = mgr.GetColorSettings( cfg->m_ColorTheme );
PL_EDITOR_SETTINGS* cfg = GetAppSettings<PL_EDITOR_SETTINGS>( "pl_editor" );
COLOR_SETTINGS* colors = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
// Update gal display options like cursor shape, grid options:
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );

View File

@ -509,13 +509,14 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags )
frame->HideSolderMask();
}
PCBNEW_SETTINGS* settings = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( !staleRuleAreas.empty() && ( settings->m_Display.m_TrackClearance == SHOW_WITH_VIA_ALWAYS
|| settings->m_Display.m_PadClearance ) )
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
if( view )
view->UpdateCollidingItems( staleRuleAreas, { PCB_TRACE_T, PCB_ARC_T, PCB_VIA_T, PCB_PAD_T } );
if( !staleRuleAreas.empty() && ( cfg->m_Display.m_TrackClearance == SHOW_WITH_VIA_ALWAYS
|| cfg->m_Display.m_PadClearance ) )
{
if( view )
view->UpdateCollidingItems( staleRuleAreas, { PCB_TRACE_T, PCB_ARC_T, PCB_VIA_T, PCB_PAD_T } );
}
}
if( !staleTeardropPadsAndVias.empty() || !staleTeardropTracks.empty() )

View File

@ -244,13 +244,9 @@ void DIALOG_EXPORT_2581::onDistPNChange( wxCommandEvent& event )
bool DIALOG_EXPORT_2581::Init()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
std::set<wxString> options;
BOARD* board = m_parent->GetBoard();
for( FOOTPRINT* fp : board->Footprints() )
for( FOOTPRINT* fp : m_parent->GetBoard()->Footprints() )
{
for( PCB_FIELD* field : fp->GetFields() )
options.insert( field->GetName() );
@ -258,10 +254,13 @@ bool DIALOG_EXPORT_2581::Init()
if( !m_job )
{
m_choiceUnits->SetSelection( cfg->m_Export2581.units );
m_precision->SetValue( cfg->m_Export2581.precision );
m_versionChoice->SetSelection( cfg->m_Export2581.version );
m_cbCompress->SetValue( cfg->m_Export2581.compress );
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
m_choiceUnits->SetSelection( cfg->m_Export2581.units );
m_precision->SetValue( cfg->m_Export2581.precision );
m_versionChoice->SetSelection( cfg->m_Export2581.version );
m_cbCompress->SetValue( cfg->m_Export2581.compress );
}
}
else
{
@ -359,13 +358,13 @@ bool DIALOG_EXPORT_2581::TransferDataFromWindow()
{
if( !m_job )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
cfg->m_Export2581.units = m_choiceUnits->GetSelection();
cfg->m_Export2581.precision = m_precision->GetValue();
cfg->m_Export2581.version = m_versionChoice->GetSelection();
cfg->m_Export2581.compress = m_cbCompress->GetValue();
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
cfg->m_Export2581.units = m_choiceUnits->GetSelection();
cfg->m_Export2581.precision = m_precision->GetValue();
cfg->m_Export2581.version = m_versionChoice->GetSelection();
cfg->m_Export2581.compress = m_cbCompress->GetValue();
}
PROJECT_FILE& prj = Prj().GetProjectFile();
wxString empty;

View File

@ -234,15 +234,15 @@ void DIALOG_EXPORT_ODBPP::onOKClick( wxCommandEvent& event )
bool DIALOG_EXPORT_ODBPP::Init()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( !m_job )
{
m_choiceUnits->SetSelection( cfg->m_ExportODBPP.units );
m_precision->SetValue( cfg->m_ExportODBPP.precision );
m_choiceCompress->SetSelection( cfg->m_ExportODBPP.compressFormat );
OnFmtChoiceOptionChanged();
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
m_choiceUnits->SetSelection( cfg->m_ExportODBPP.units );
m_precision->SetValue( cfg->m_ExportODBPP.precision );
m_choiceCompress->SetSelection( cfg->m_ExportODBPP.compressFormat );
OnFmtChoiceOptionChanged();
}
}
else
{
@ -266,22 +266,20 @@ bool DIALOG_EXPORT_ODBPP::TransferDataFromWindow()
{
if( !m_job )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
cfg->m_ExportODBPP.units = m_choiceUnits->GetSelection();
cfg->m_ExportODBPP.precision = m_precision->GetValue();
cfg->m_ExportODBPP.compressFormat = m_choiceCompress->GetSelection();
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
cfg->m_ExportODBPP.units = m_choiceUnits->GetSelection();
cfg->m_ExportODBPP.precision = m_precision->GetValue();
cfg->m_ExportODBPP.compressFormat = m_choiceCompress->GetSelection();
}
}
else
{
m_job->SetConfiguredOutputPath( m_outputFileName->GetValue() );
m_job->m_precision = m_precision->GetValue();
m_job->m_units =
static_cast<JOB_EXPORT_PCB_ODB::ODB_UNITS>( m_choiceUnits->GetSelection() );
m_job->m_compressionMode = static_cast<JOB_EXPORT_PCB_ODB::ODB_COMPRESSION>(
m_choiceCompress->GetSelection() );
m_job->m_units = static_cast<JOB_EXPORT_PCB_ODB::ODB_UNITS>( m_choiceUnits->GetSelection() );
m_job->m_compressionMode = static_cast<JOB_EXPORT_PCB_ODB::ODB_COMPRESSION>( m_choiceCompress->GetSelection() );
}
return true;

View File

@ -47,18 +47,13 @@ enum FPGeneratorRowNames
};
DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST( wxWindow* aParent )
: DIALOG_FOOTPRINT_WIZARD_LIST_BASE( aParent )
DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST( wxWindow* aParent ) :
DIALOG_FOOTPRINT_WIZARD_LIST_BASE( aParent )
{
initLists();
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
wxSize size;
size.x = cfg->m_FootprintWizardList.width;
size.y = cfg->m_FootprintWizardList.height;
SetSize( size );
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
SetSize( wxSize( cfg->m_FootprintWizardList.width, cfg->m_FootprintWizardList.height ) );
SetupStandardButtons();
finishDialogSettings();
@ -69,14 +64,13 @@ DIALOG_FOOTPRINT_WIZARD_LIST::DIALOG_FOOTPRINT_WIZARD_LIST( wxWindow* aParent )
DIALOG_FOOTPRINT_WIZARD_LIST::~DIALOG_FOOTPRINT_WIZARD_LIST()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( cfg && !IsIconized() )
if( !IsIconized() )
{
cfg->m_FootprintWizardList.width = GetSize().x;
cfg->m_FootprintWizardList.height = GetSize().y;
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
cfg->m_FootprintWizardList.width = GetSize().x;
cfg->m_FootprintWizardList.height = GetSize().y;
}
}
}

View File

@ -1209,10 +1209,9 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event )
applyPlotSettings();
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
m_plotOpts.SetColorSettings( mgr.GetColorSettings( cfg->m_ColorTheme ) );
m_plotOpts.SetColorSettings( ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME ) );
m_plotOpts.SetSketchPadLineWidth( board->GetDesignSettings().GetLineThickness( F_Fab ) );

View File

@ -57,9 +57,7 @@ DIALOG_RENDER_JOB::DIALOG_RENDER_JOB( wxWindow* aParent, JOB_PCB_RENDER* aJob )
for( const auto& [k, name] : sideMap )
m_choiceSide->Append( wxGetTranslation( name ) );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
if( EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
for( const LAYER_PRESET_3D& preset : cfg->m_LayerPresets )
m_presetCtrl->Append( preset.name );

View File

@ -246,20 +246,10 @@ bool PANEL_DISPLAY_OPTIONS::Show( bool aShow )
bool PANEL_DISPLAY_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
if( m_isPCBEdit )
{
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
loadPCBSettings( cfg );
}
loadPCBSettings( GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) );
else
{
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
loadFPSettings( cfg );
}
loadFPSettings( GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) );
m_galOptsPanel->TransferDataToWindow();
@ -377,40 +367,40 @@ bool PANEL_DISPLAY_OPTIONS::TransferDataFromWindow()
m_galOptsPanel->TransferDataFromWindow();
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
if( m_isPCBEdit )
{
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
int i = m_OptDisplayTracksClearance->GetSelection();
cfg->m_Display.m_TrackClearance = UTIL::GetValFromConfig( clearanceModeMap, i );
int i = m_OptDisplayTracksClearance->GetSelection();
cfg->m_Display.m_TrackClearance = UTIL::GetValFromConfig( clearanceModeMap, i );
cfg->m_Display.m_PadClearance = m_OptDisplayPadClearence->GetValue();
cfg->m_ViewersDisplay.m_DisplayPadNumbers = m_OptDisplayPadNumber->GetValue();
cfg->m_Display.m_NetNames = m_ShowNetNamesOption->GetSelection();
cfg->m_Display.m_ForceShowFieldsWhenFPSelected = m_checkForceShowFieldsWhenFPSelected->GetValue();
cfg->m_Display.m_Live3DRefresh = m_live3Drefresh->GetValue();
cfg->m_CrossProbing.on_selection = m_checkCrossProbeOnSelection->GetValue();
cfg->m_CrossProbing.center_on_items = m_checkCrossProbeCenter->GetValue();
cfg->m_CrossProbing.zoom_to_fit = m_checkCrossProbeZoom->GetValue();
cfg->m_CrossProbing.auto_highlight = m_checkCrossProbeAutoHighlight->GetValue();
cfg->m_Display.m_PadClearance = m_OptDisplayPadClearence->GetValue();
cfg->m_ViewersDisplay.m_DisplayPadNumbers = m_OptDisplayPadNumber->GetValue();
cfg->m_Display.m_NetNames = m_ShowNetNamesOption->GetSelection();
cfg->m_Display.m_ForceShowFieldsWhenFPSelected = m_checkForceShowFieldsWhenFPSelected->GetValue();
cfg->m_Display.m_Live3DRefresh = m_live3Drefresh->GetValue();
cfg->m_CrossProbing.on_selection = m_checkCrossProbeOnSelection->GetValue();
cfg->m_CrossProbing.center_on_items = m_checkCrossProbeCenter->GetValue();
cfg->m_CrossProbing.zoom_to_fit = m_checkCrossProbeZoom->GetValue();
cfg->m_CrossProbing.auto_highlight = m_checkCrossProbeAutoHighlight->GetValue();
}
}
else
{
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
cfg->m_DesignSettings.m_UserLayerNames.clear();
wxGridTableBase* table = m_layerNameitemsGrid->GetTable();
for( int i = 0; i < m_layerNameitemsGrid->GetNumberRows(); ++i )
if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) )
{
PCB_LAYER_ID layer = static_cast<PCB_LAYER_ID>( table->GetValueAsLong( i, 0 ) );
wxString orig_name = LSET::Name( static_cast<PCB_LAYER_ID>( layer ) );
wxString name = table->GetValue( i, 1 );
cfg->m_DesignSettings.m_UserLayerNames.clear();
wxGridTableBase* table = m_layerNameitemsGrid->GetTable();
if( layer >= 0 && IsUserLayer( layer ) && !name.IsEmpty() )
cfg->m_DesignSettings.m_UserLayerNames.emplace( orig_name.ToStdString(), name );
for( int i = 0; i < m_layerNameitemsGrid->GetNumberRows(); ++i )
{
PCB_LAYER_ID layer = static_cast<PCB_LAYER_ID>( table->GetValueAsLong( i, 0 ) );
wxString orig_name = LSET::Name( static_cast<PCB_LAYER_ID>( layer ) );
wxString name = table->GetValue( i, 1 );
if( layer >= 0 && IsUserLayer( layer ) && !name.IsEmpty() )
cfg->m_DesignSettings.m_UserLayerNames.emplace( orig_name.ToStdString(), name );
}
}
}

View File

@ -157,20 +157,10 @@ void PANEL_EDIT_OPTIONS::loadFPSettings( FOOTPRINT_EDITOR_SETTINGS* aCfg )
bool PANEL_EDIT_OPTIONS::TransferDataToWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
if( m_isFootprintEditor )
{
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
loadFPSettings( cfg );
}
loadFPSettings( GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) );
else
{
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
loadPCBSettings( cfg );
}
loadPCBSettings( GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) );
return true;
}
@ -178,54 +168,54 @@ bool PANEL_EDIT_OPTIONS::TransferDataToWindow()
bool PANEL_EDIT_OPTIONS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
if( m_isFootprintEditor )
{
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) )
{
cfg->m_RotationAngle = m_rotationAngle.GetAngleValue();
cfg->m_RotationAngle = m_rotationAngle.GetAngleValue();
cfg->m_MagneticItems.pads = m_magneticPads->GetValue() ? MAGNETIC_OPTIONS::CAPTURE_ALWAYS
: MAGNETIC_OPTIONS::NO_EFFECT;
cfg->m_MagneticItems.graphics = m_magneticGraphics->GetValue();
cfg->m_MagneticItems.pads = m_magneticPads->GetValue() ? MAGNETIC_OPTIONS::CAPTURE_ALWAYS
: MAGNETIC_OPTIONS::NO_EFFECT;
cfg->m_MagneticItems.graphics = m_magneticGraphics->GetValue();
cfg->m_Use45Limit = m_cbConstrainHV45Mode->GetValue();
cfg->m_ArcEditMode = arcEditModeToEnum( m_arcEditMode->GetSelection() );
cfg->m_Use45Limit = m_cbConstrainHV45Mode->GetValue();
cfg->m_ArcEditMode = arcEditModeToEnum( m_arcEditMode->GetSelection() );
}
}
else
{
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
cfg->m_Display.m_DisplayRatsnestLinesCurved = m_OptDisplayCurvedRatsnestLines->GetValue();
cfg->m_Display.m_ShowModuleRatsnest = m_showSelectedRatsnest->GetValue();
cfg->m_Display.m_RatsnestThickness = m_ratsnestThickness->GetValue();
cfg->m_Display.m_DisplayRatsnestLinesCurved = m_OptDisplayCurvedRatsnestLines->GetValue();
cfg->m_Display.m_ShowModuleRatsnest = m_showSelectedRatsnest->GetValue();
cfg->m_Display.m_RatsnestThickness = m_ratsnestThickness->GetValue();
cfg->m_Use45DegreeLimit = m_cbConstrainHV45Mode->GetValue();
cfg->m_RotationAngle = m_rotationAngle.GetAngleValue();
cfg->m_ArcEditMode = arcEditModeToEnum( m_arcEditMode->GetSelection() );
cfg->m_TrackDragAction = (TRACK_DRAG_ACTION) m_trackMouseDragCtrl->GetSelection();
cfg->m_Use45DegreeLimit = m_cbConstrainHV45Mode->GetValue();
cfg->m_RotationAngle = m_rotationAngle.GetAngleValue();
cfg->m_ArcEditMode = arcEditModeToEnum( m_arcEditMode->GetSelection() );
cfg->m_TrackDragAction = (TRACK_DRAG_ACTION) m_trackMouseDragCtrl->GetSelection();
cfg->m_FlipDirection = m_rbFlipLeftRight->GetValue() ? FLIP_DIRECTION::LEFT_RIGHT
: FLIP_DIRECTION::TOP_BOTTOM;
cfg->m_FlipDirection = m_rbFlipLeftRight->GetValue() ? FLIP_DIRECTION::LEFT_RIGHT
: FLIP_DIRECTION::TOP_BOTTOM;
cfg->m_AllowFreePads = m_allowFreePads->GetValue();
cfg->m_LockingOptions.m_sessionSkipPrompts = m_overrideLocks->GetValue();
cfg->m_AutoRefillZones = m_autoRefillZones->GetValue();
cfg->m_AllowFreePads = m_allowFreePads->GetValue();
cfg->m_LockingOptions.m_sessionSkipPrompts = m_overrideLocks->GetValue();
cfg->m_AutoRefillZones = m_autoRefillZones->GetValue();
cfg->m_MagneticItems.pads = static_cast<MAGNETIC_OPTIONS>( m_magneticPadChoice->GetSelection() );
cfg->m_MagneticItems.tracks = static_cast<MAGNETIC_OPTIONS>( m_magneticTrackChoice->GetSelection() );
cfg->m_MagneticItems.graphics = !m_magneticGraphicsChoice->GetSelection();
cfg->m_MagneticItems.pads = static_cast<MAGNETIC_OPTIONS>( m_magneticPadChoice->GetSelection() );
cfg->m_MagneticItems.tracks = static_cast<MAGNETIC_OPTIONS>( m_magneticTrackChoice->GetSelection() );
cfg->m_MagneticItems.graphics = !m_magneticGraphicsChoice->GetSelection();
cfg->m_ESCClearsNetHighlight = m_escClearsNetHighlight->GetValue();
cfg->m_ShowPageLimits = m_showPageLimits->GetValue();
cfg->m_ShowCourtyardCollisions = m_cbCourtyardCollisions->GetValue();
cfg->m_ESCClearsNetHighlight = m_escClearsNetHighlight->GetValue();
cfg->m_ShowPageLimits = m_showPageLimits->GetValue();
cfg->m_ShowCourtyardCollisions = m_cbCourtyardCollisions->GetValue();
#ifdef __WXOSX_MAC__
cfg->m_CtrlClickHighlight = m_rbHighlightNetMac->GetValue();
cfg->m_CtrlClickHighlight = m_rbHighlightNetMac->GetValue();
#else
cfg->m_CtrlClickHighlight = m_rbHighlightNet->GetValue();
cfg->m_CtrlClickHighlight = m_rbHighlightNet->GetValue();
#endif
}
}
return true;

View File

@ -33,20 +33,19 @@ PANEL_FP_EDITOR_COLOR_SETTINGS::PANEL_FP_EDITOR_COLOR_SETTINGS( wxWindow* aParen
m_colorNamespace = "board";
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
COLOR_SETTINGS* current = mgr.GetColorSettings( cfg->m_ColorTheme );
FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
COLOR_SETTINGS* current = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
// Store the current settings before reloading below
current->Store();
mgr.SaveColorSettings( current, "board" );
Pgm().GetSettingsManager().SaveColorSettings( current, "board" );
m_optOverrideColors->SetValue( current->GetOverrideSchItemColors() );
m_currentSettings = new COLOR_SETTINGS( *current );
mgr.ReloadColorSettings();
createThemeList( cfg->m_ColorTheme );
Pgm().GetSettingsManager().ReloadColorSettings();
createThemeList( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
m_validLayers.push_back( F_Cu );
m_validLayers.push_back( In1_Cu ); // "Internal Layers"
@ -78,10 +77,8 @@ PANEL_FP_EDITOR_COLOR_SETTINGS::~PANEL_FP_EDITOR_COLOR_SETTINGS()
bool PANEL_FP_EDITOR_COLOR_SETTINGS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
cfg->m_ColorTheme = m_currentSettings->GetFilename();
if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) )
cfg->m_ColorTheme = m_currentSettings->GetFilename();
return true;
}

View File

@ -169,8 +169,7 @@ public:
static FOOTPRINT_EDITOR_SETTINGS& GetPgmSettings()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
return *mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return *GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
}

View File

@ -60,8 +60,7 @@ enum
static FOOTPRINT_EDITOR_SETTINGS& GetPgmSettings()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
return *mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return *GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
}

View File

@ -317,16 +317,14 @@ protected:
void PANEL_FP_LIB_TABLE::setupGrid( WX_GRID* aGrid )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
auto autoSizeCol =
[&]( WX_GRID* aLocGrid, int aCol )
{
int prevWidth = aLocGrid->GetColSize( aCol );
auto autoSizeCol = [&]( WX_GRID* aLocGrid, int aCol )
{
int prevWidth = aLocGrid->GetColSize( aCol );
aLocGrid->AutoSizeColumn( aCol, false );
aLocGrid->SetColSize( aCol, std::max( prevWidth, aLocGrid->GetColSize( aCol ) ) );
};
aLocGrid->AutoSizeColumn( aCol, false );
aLocGrid->SetColSize( aCol, std::max( prevWidth, aLocGrid->GetColSize( aCol ) ) );
};
// Give a bit more room for wxChoice editors
for( int ii = 0; ii < aGrid->GetNumberRows(); ++ii )
@ -340,20 +338,25 @@ void PANEL_FP_LIB_TABLE::setupGrid( WX_GRID* aGrid )
wxGridCellAttr* attr;
attr = new wxGridCellAttr;
attr->SetEditor( new GRID_CELL_PATH_EDITOR(
m_parent, aGrid, &cfg->m_lastFootprintLibDir, true, m_projectBasePath,
[this]( WX_GRID* grid, int row ) -> wxString
{
auto* libTable = static_cast<FP_LIB_TABLE_GRID*>( grid->GetTable() );
auto* tableRow = static_cast<FP_LIB_TABLE_ROW*>( libTable->at( row ) );
PCB_IO_MGR::PCB_FILE_T fileType = tableRow->GetFileType();
const IO_BASE::IO_FILE_DESC& pluginDesc = m_supportedFpFiles.at( fileType );
if( pluginDesc.m_IsFile )
return pluginDesc.FileFilter();
else
return wxEmptyString;
} ) );
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
attr->SetEditor( new GRID_CELL_PATH_EDITOR(
m_parent, aGrid, &cfg->m_lastFootprintLibDir, true, m_projectBasePath,
[this]( WX_GRID* grid, int row ) -> wxString
{
auto* libTable = static_cast<FP_LIB_TABLE_GRID*>( grid->GetTable() );
auto* tableRow = static_cast<FP_LIB_TABLE_ROW*>( libTable->at( row ) );
PCB_IO_MGR::PCB_FILE_T fileType = tableRow->GetFileType();
const IO_BASE::IO_FILE_DESC& pluginDesc = m_supportedFpFiles.at( fileType );
if( pluginDesc.m_IsFile )
return pluginDesc.FileFilter();
else
return wxEmptyString;
} ) );
}
aGrid->SetColAttr( COL_URI, attr );
attr = new wxGridCellAttr;
@ -408,12 +411,11 @@ PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE( DIALOG_EDIT_LIBRARY_TABLES* aParent, PRO
for( auto& [fileType, desc] : m_supportedFpFiles )
m_pluginChoices.Add( PCB_IO_MGR::ShowType( fileType ) );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( cfg->m_lastFootprintLibDir.IsEmpty() )
cfg->m_lastFootprintLibDir = PATHS::GetDefaultUserFootprintsPath();
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
if( cfg->m_lastFootprintLibDir.IsEmpty() )
cfg->m_lastFootprintLibDir = PATHS::GetDefaultUserFootprintsPath();
}
m_lastProjectLibDir = m_projectBasePath;
@ -509,11 +511,10 @@ PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE( DIALOG_EDIT_LIBRARY_TABLES* aParent, PRO
PANEL_FP_LIB_TABLE::~PANEL_FP_LIB_TABLE()
{
wxMenu* browseMenu = m_browseButton->GetSplitButtonMenu();
for( auto& [type, desc] : m_supportedFpFiles )
{
browseMenu->Unbind( wxEVT_COMMAND_MENU_SELECTED,
&PANEL_FP_LIB_TABLE::browseLibrariesHandler, this, type );
}
browseMenu->Unbind( wxEVT_COMMAND_MENU_SELECTED, &PANEL_FP_LIB_TABLE::browseLibrariesHandler, this, type );
m_browseButton->Unbind( wxEVT_BUTTON, &PANEL_FP_LIB_TABLE::browseLibrariesHandler, this );
// Delete the GRID_TRICKS.
@ -947,14 +948,16 @@ void PANEL_FP_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event )
}
const IO_BASE::IO_FILE_DESC& fileDesc = m_supportedFpFiles.at( fileType );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
wxString title = wxString::Format( _( "Select %s Library" ), PCB_IO_MGR::ShowType( fileType ) );
wxString openDir = cfg->m_lastFootprintLibDir;
wxString title = wxString::Format( _( "Select %s Library" ), PCB_IO_MGR::ShowType( fileType ) );
wxString dummy;
wxString* lastDir;
if( m_cur_grid == m_project_grid )
openDir = m_lastProjectLibDir;
lastDir = &m_lastProjectLibDir;
else
lastDir = cfg ? &cfg->m_lastFootprintLibDir : &dummy;
wxArrayString files;
@ -962,29 +965,21 @@ void PANEL_FP_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event )
if( fileDesc.m_IsFile )
{
wxFileDialog dlg( topLevelParent, title, openDir, wxEmptyString, fileDesc.FileFilter(),
wxFileDialog dlg( topLevelParent, title, *lastDir, wxEmptyString, fileDesc.FileFilter(),
wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE );
int result = dlg.ShowModal();
if( result == wxID_CANCEL )
if( dlg.ShowModal() == wxID_CANCEL )
return;
dlg.GetPaths( files );
if( m_cur_grid == m_global_grid )
cfg->m_lastFootprintLibDir = dlg.GetDirectory();
else
m_lastProjectLibDir = dlg.GetDirectory();
*lastDir = dlg.GetDirectory();
}
else
{
wxDirDialog dlg( topLevelParent, title, openDir,
wxDirDialog dlg( topLevelParent, title, *lastDir,
wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST | wxDD_MULTIPLE );
int result = dlg.ShowModal();
if( result == wxID_CANCEL )
if( dlg.ShowModal() == wxID_CANCEL )
return;
dlg.GetPaths( files );
@ -992,16 +987,12 @@ void PANEL_FP_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event )
if( !files.IsEmpty() )
{
wxFileName first( files.front() );
if( m_cur_grid == m_global_grid )
cfg->m_lastFootprintLibDir = first.GetPath();
else
m_lastProjectLibDir = first.GetPath();
*lastDir = first.GetPath();
}
}
// Drop the last directory if the path is a .pretty folder
if( cfg->m_lastFootprintLibDir.EndsWith( FILEEXT::KiCadFootprintLibPathExtension ) )
if( cfg && cfg->m_lastFootprintLibDir.EndsWith( FILEEXT::KiCadFootprintLibPathExtension ) )
cfg->m_lastFootprintLibDir = cfg->m_lastFootprintLibDir.BeforeLast( wxFileName::GetPathSeparator() );
const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables();
@ -1020,7 +1011,9 @@ void PANEL_FP_LIB_TABLE::browseLibrariesHandler( wxCommandEvent& event )
if( fileType == PCB_IO_MGR::KICAD_SEXP
&& fn.GetExt() != FILEEXT::KiCadFootprintLibPathExtension )
{
nickname = LIB_ID::FixIllegalChars( fn.GetFullName(), true ).wx_str();
}
if( cur_model()->ContainsNickname( nickname ) )
{

View File

@ -90,10 +90,9 @@ PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL( PCB_BASE_EDIT_FRAME*
m_modelsGrid->PushEventHandler( trick );
// Get the last 3D directory
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( cfg->m_lastFootprint3dDir.IsEmpty() )
if( cfg && cfg->m_lastFootprint3dDir.IsEmpty() )
{
wxGetEnv( ENV_VAR::GetVersionedEnvVarName( wxS( "3DMODEL_DIR" ) ),
&cfg->m_lastFootprint3dDir );
@ -106,9 +105,14 @@ PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL( PCB_BASE_EDIT_FRAME*
// Filename
attr = new wxGridCellAttr;
attr->SetEditor( new GRID_CELL_PATH_EDITOR( m_parentDialog, m_modelsGrid,
&cfg->m_lastFootprint3dDir, wxT( "*.*" ), true,
m_frame->Prj().GetProjectPath() ) );
if( cfg )
{
attr->SetEditor( new GRID_CELL_PATH_EDITOR( m_parentDialog, m_modelsGrid,
&cfg->m_lastFootprint3dDir, wxT( "*.*" ), true,
m_frame->Prj().GetProjectPath() ) );
}
m_modelsGrid->SetColAttr( COL_FILENAME, attr );
// Show checkbox
@ -132,8 +136,7 @@ PANEL_FP_PROPERTIES_3D_MODEL::PANEL_FP_PROPERTIES_3D_MODEL( PCB_BASE_EDIT_FRAME*
m_button3DShapeRemove->SetBitmap( KiBitmapBundle( BITMAPS::small_trash ) );
Bind( wxEVT_SHOW, &PANEL_FP_PROPERTIES_3D_MODEL::onShowEvent, this );
m_parentDialog->Bind( wxEVT_ACTIVATE, &PANEL_FP_PROPERTIES_3D_MODEL::onDialogActivateEvent,
this );
m_parentDialog->Bind( wxEVT_ACTIVATE, &PANEL_FP_PROPERTIES_3D_MODEL::onDialogActivateEvent, this );
}

View File

@ -687,15 +687,14 @@ PANEL_PCBNEW_COLOR_SETTINGS::PANEL_PCBNEW_COLOR_SETTINGS( wxWindow* aParent, BOA
{
m_colorNamespace = "board";
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
COLOR_SETTINGS* current = mgr.GetColorSettings( cfg->m_ColorTheme );
PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
COLOR_SETTINGS* current = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
// Saved theme doesn't exist? Reset to default
if( current->GetFilename() != cfg->m_ColorTheme )
if( cfg && current->GetFilename() != cfg->m_ColorTheme )
cfg->m_ColorTheme = current->GetFilename();
createThemeList( cfg->m_ColorTheme );
createThemeList( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
// Currently this only applies to eeschema
m_optOverrideColors->Hide();
@ -735,10 +734,8 @@ PANEL_PCBNEW_COLOR_SETTINGS::~PANEL_PCBNEW_COLOR_SETTINGS()
bool PANEL_PCBNEW_COLOR_SETTINGS::TransferDataFromWindow()
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
cfg->m_ColorTheme = m_currentSettings->GetFilename();
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
cfg->m_ColorTheme = m_currentSettings->GetFilename();
return true;
}

View File

@ -33,12 +33,11 @@ DRC_TEST_PROVIDER_CLEARANCE_BASE::GetGraphicsHandler( const std::vector<PCB_SHAP
int aLength )
{
// todo: Move this to a board-level object instead of getting it from the DRC Engine
PGM_BASE* pgm = PgmOrNull();
COLOR4D errorColor = COLOR4D( RED );
if( pgm )
if( PgmOrNull() )
{
COLOR_SETTINGS* colorSettings = pgm->GetSettingsManager().GetColorSettings();
COLOR_SETTINGS* colorSettings = ::GetColorSettings( DEFAULT_THEME );
errorColor = colorSettings->GetColor( LAYER_DRC_ERROR );
}

View File

@ -444,12 +444,8 @@ WINDOW_SETTINGS* FOOTPRINT_CHOOSER_FRAME::GetWindowSettings( APP_SETTINGS_BASE*
COLOR_SETTINGS* FOOTPRINT_CHOOSER_FRAME::GetColorSettings( bool aForceRefresh ) const
{
auto* cfg = Pgm().GetSettingsManager().GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
if( cfg )
return Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme );
else
return Pgm().GetSettingsManager().GetColorSettings();
FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
}
@ -670,10 +666,7 @@ void FOOTPRINT_CHOOSER_FRAME::build3DCanvas()
m_boardAdapter.m_IsBoardView = false;
m_boardAdapter.m_IsPreviewer = true; // Force display 3D models, regardless the 3D viewer options
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
m_boardAdapter.m_Cfg = cfg;
m_boardAdapter.m_Cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
// Build the 3D canvas
m_preview3DCanvas = new EDA_3D_CANVAS( m_chooserPanel->m_RightPanel,

View File

@ -165,7 +165,7 @@ FOOTPRINT_EDIT_FRAME::FOOTPRINT_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
initLibraryTree();
m_treePane = new FOOTPRINT_TREE_PANE( this );
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<FOOTPRINT_EDIT_TOOLBAR_SETTINGS>( "fpedit-toolbars" );
m_toolbarSettings = GetToolbarSettings<FOOTPRINT_EDIT_TOOLBAR_SETTINGS>( "fpedit-toolbars" );
configureToolbars();
RecreateToolbars();
ReCreateLayerBox( false );
@ -553,13 +553,13 @@ void FOOTPRINT_EDIT_FRAME::updateEnabledLayers()
}
// Enable any layers that the user has gone to the trouble to name
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
for( const PCB_LAYER_ID& user : LSET::UserDefinedLayersMask() )
if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) )
{
if( cfg->m_DesignSettings.m_UserLayerNames.contains( LSET::Name( user ).ToStdString() ) )
enabledLayers.set( user );
for( const PCB_LAYER_ID& user : LSET::UserDefinedLayersMask() )
{
if( cfg->m_DesignSettings.m_UserLayerNames.contains( LSET::Name( user ).ToStdString() ) )
enabledLayers.set( user );
}
}
GetBoard()->SetEnabledLayers( enabledLayers );
@ -692,11 +692,7 @@ void FOOTPRINT_EDIT_FRAME::SetPlotSettings( const PCB_PLOT_PARAMS& aSettings )
FOOTPRINT_EDITOR_SETTINGS* FOOTPRINT_EDIT_FRAME::GetSettings()
{
if( !m_editorSettings )
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
m_editorSettings = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
}
m_editorSettings = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return m_editorSettings;
}
@ -808,8 +804,8 @@ EDA_ANGLE FOOTPRINT_EDIT_FRAME::GetRotationAngle() const
COLOR_SETTINGS* FOOTPRINT_EDIT_FRAME::GetColorSettings( bool aForceRefresh ) const
{
wxString currentTheme = GetFootprintEditorSettings()->m_ColorTheme;
return Pgm().GetSettingsManager().GetColorSettings( currentTheme );
FOOTPRINT_EDITOR_SETTINGS* cfg = GetFootprintEditorSettings();
return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
}
@ -1468,13 +1464,13 @@ void FOOTPRINT_EDIT_FRAME::CommonSettingsChanged( int aFlags )
{
PCB_BASE_EDIT_FRAME::CommonSettingsChanged( aFlags );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) )
{
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );
GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window );
GetBoard()->GetDesignSettings() = cfg->m_DesignSettings;
updateEnabledLayers();
GetBoard()->GetDesignSettings() = cfg->m_DesignSettings;
updateEnabledLayers();
}
GetCanvas()->GetView()->UpdateAllLayersColor();
GetCanvas()->GetView()->MarkTargetDirty( KIGFX::TARGET_NONCACHED );

View File

@ -220,7 +220,7 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent
setupUIConditions();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<FOOTPRINT_VIEWER_TOOLBAR_SETTINGS>( "fpviewer-toolbars" );
m_toolbarSettings = GetToolbarSettings<FOOTPRINT_VIEWER_TOOLBAR_SETTINGS>( "fpviewer-toolbars" );
configureToolbars();
RecreateToolbars();
ReCreateMenuBar();
@ -797,31 +797,31 @@ void FOOTPRINT_VIEWER_FRAME::AddFootprintToPCB()
void FOOTPRINT_VIEWER_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
{
PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg );
wxCHECK( cfg, /*void*/ );
// We don't allow people to change this right now, so make sure it's on
GetWindowSettings( cfg )->cursor.always_show_cursor = true;
PCB_BASE_FRAME::LoadSettings( aCfg );
// Fetch display and grid settings from Footprint Editor
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* fpedit = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
m_displayOptions = fpedit->m_Display;
GetGalDisplayOptions().ReadWindowSettings( fpedit->m_Window );
m_libListWidth = cfg->m_FootprintViewerLibListWidth;
m_fpListWidth = cfg->m_FootprintViewerFPListWidth;
// Set parameters to a reasonable value.
int maxWidth = cfg->m_FootprintViewer.state.size_x - 80;
if( m_libListWidth + m_fpListWidth > maxWidth )
if( PCBNEW_SETTINGS* cfg = dynamic_cast<PCBNEW_SETTINGS*>( aCfg ) )
{
m_libListWidth = maxWidth * ( m_libListWidth / ( m_libListWidth + m_fpListWidth ) );
m_fpListWidth = maxWidth - m_libListWidth;
// We don't allow people to change this right now, so make sure it's on
GetWindowSettings( cfg )->cursor.always_show_cursor = true;
PCB_BASE_FRAME::LoadSettings( aCfg );
// Fetch display and grid settings from Footprint Editor
if( FOOTPRINT_EDITOR_SETTINGS* fpedit = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) )
{
m_displayOptions = fpedit->m_Display;
GetGalDisplayOptions().ReadWindowSettings( fpedit->m_Window );
}
m_libListWidth = cfg->m_FootprintViewerLibListWidth;
m_fpListWidth = cfg->m_FootprintViewerFPListWidth;
// Set parameters to a reasonable value.
int maxWidth = cfg->m_FootprintViewer.state.size_x - 80;
if( m_libListWidth + m_fpListWidth > maxWidth )
{
m_libListWidth = maxWidth * ( m_libListWidth / ( m_libListWidth + m_fpListWidth ) );
m_fpListWidth = maxWidth - m_libListWidth;
}
}
}
@ -856,13 +856,8 @@ WINDOW_SETTINGS* FOOTPRINT_VIEWER_FRAME::GetWindowSettings( APP_SETTINGS_BASE* a
COLOR_SETTINGS* FOOTPRINT_VIEWER_FRAME::GetColorSettings( bool aForceRefresh ) const
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
if( cfg )
return mgr.GetColorSettings( cfg->m_ColorTheme );
else
return mgr.GetColorSettings();
FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
}

View File

@ -151,7 +151,7 @@ FOOTPRINT_WIZARD_FRAME::FOOTPRINT_WIZARD_FRAME( KIWAY* aKiway, wxWindow* aParent
m_toolManager->InvokeTool( "common.InteractiveSelection" );
// Create the toolbars
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<FOOTPRINT_WIZARD_TOOLBAR_SETTINGS>( "fpwizard-toolbars" );
m_toolbarSettings = GetToolbarSettings<FOOTPRINT_WIZARD_TOOLBAR_SETTINGS>( "fpwizard-toolbars" );
configureToolbars();
RecreateToolbars();
@ -281,9 +281,8 @@ void FOOTPRINT_WIZARD_FRAME::OnSize( wxSizeEvent& SizeEv )
COLOR_SETTINGS* FOOTPRINT_WIZARD_FRAME::GetColorSettings( bool aForceRefresh ) const
{
wxString currentTheme = GetFootprintEditorSettings()->m_ColorTheme;
return Pgm().GetSettingsManager().GetColorSettings( currentTheme );
FOOTPRINT_EDITOR_SETTINGS* cfg = GetFootprintEditorSettings();
return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
}

View File

@ -55,7 +55,12 @@ void GRID_CELL_LAYER_RENDERER::Draw( wxGrid& aGrid, wxGridCellAttr& aAttr, wxDC&
const wxRect& aRect, int aRow, int aCol, bool isSelected )
{
int value = aGrid.GetTable()->GetValueAsLong( aRow, aCol );
COLOR_SETTINGS* cs = nullptr;
COLOR_SETTINGS* cs = ::GetColorSettings( DEFAULT_THEME );
if( m_frame )
cs = m_frame->GetColorSettings();
else if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) )
cs = ::GetColorSettings( cfg->m_ColorTheme );
wxRect rect = aRect;
rect.Inflate( -1 );
@ -63,17 +68,6 @@ void GRID_CELL_LAYER_RENDERER::Draw( wxGrid& aGrid, wxGridCellAttr& aAttr, wxDC&
// erase background
wxGridCellRenderer::Draw( aGrid, aAttr, aDC, aRect, aRow, aCol, isSelected );
if( m_frame )
{
cs = m_frame->GetColorSettings();
}
else
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
cs = mgr.GetColorSettings( cfg->m_ColorTheme );
}
// draw the swatch
#ifdef __WXMAC__
int size = 14;

View File

@ -268,7 +268,8 @@ void PCB_BASE_EDIT_FRAME::SetObjectVisible( GAL_LAYER_ID aLayer, bool aVisible )
COLOR_SETTINGS* PCB_BASE_EDIT_FRAME::GetColorSettings( bool aForceRefresh ) const
{
return Pgm().GetSettingsManager().GetColorSettings( GetPcbNewSettings()->m_ColorTheme );
PCBNEW_SETTINGS* cfg = GetPcbNewSettings();
return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME );
}

View File

@ -454,23 +454,13 @@ void PCB_DRAW_PANEL_GAL::SetDrawingSheet( DS_PROXY_VIEW_ITEM* aDrawingSheet )
void PCB_DRAW_PANEL_GAL::UpdateColors()
{
COLOR_SETTINGS* cs = nullptr;
COLOR_SETTINGS* cs = ::GetColorSettings( DEFAULT_THEME );
PCB_BASE_FRAME* frame = dynamic_cast<PCB_BASE_FRAME*>( GetParentEDAFrame() );
if( frame )
{
cs = frame->GetColorSettings();
}
else
{
auto* app = Pgm().GetSettingsManager().GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( app )
cs = Pgm().GetSettingsManager().GetColorSettings( app->m_ColorTheme );
else
cs = Pgm().GetSettingsManager().GetColorSettings();
}
else if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
cs = ::GetColorSettings( cfg->m_ColorTheme );
wxCHECK_RET( cs, wxT( "null COLOR_SETTINGS" ) );

View File

@ -248,7 +248,7 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
setupTools();
setupUIConditions();
m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings<PCB_EDIT_TOOLBAR_SETTINGS>( "pcbnew-toolbars" );
m_toolbarSettings = GetToolbarSettings<PCB_EDIT_TOOLBAR_SETTINGS>( "pcbnew-toolbars" );
configureToolbars();
RecreateToolbars();
PrepareLayerIndicator( true );

View File

@ -328,8 +328,7 @@ GAL_LAYER_ID PCB_MARKER::GetColorLayer() const
KIGFX::COLOR4D PCB_MARKER::getColor() const
{
COLOR_SETTINGS* colors = Pgm().GetSettingsManager().GetColorSettings();
return colors->GetColor( GetColorLayer() );
return ::GetColorSettings( DEFAULT_THEME )->GetColor( GetColorLayer() );
}

View File

@ -464,17 +464,16 @@ void PCB_PLOTTER::PlotJobToPlotOpts( PCB_PLOT_PARAMS& aOpts, JOB_EXPORT_PCB_PLOT
case JOB_EXPORT_PCB_PLOT::PLOT_FORMAT::PDF: aOpts.SetFormat( PLOT_FORMAT::PDF ); break;
}
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
wxString theme = aJob->m_colorTheme;
wxString theme = aJob->m_colorTheme;
// Theme may be empty when running from a job in GUI context, so use the GUI settings.
if( theme.IsEmpty() )
{
PCBNEW_SETTINGS* pcbSettings = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
theme = pcbSettings->m_ColorTheme;
if( PCBNEW_SETTINGS* pcbSettings = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
theme = pcbSettings->m_ColorTheme;
}
COLOR_SETTINGS* colors = mgr.GetColorSettings( aJob->m_colorTheme );
COLOR_SETTINGS* colors = ::GetColorSettings( aJob->m_colorTheme );
if( colors->GetFilename() != theme && !aOpts.GetBlackAndWhite() )
{

View File

@ -94,8 +94,7 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
void OnKifaceEnd() override;
wxWindow* CreateKiWindow( wxWindow* aParent, int aClassId, KIWAY* aKiway,
int aCtlBits = 0 ) override
wxWindow* CreateKiWindow( wxWindow* aParent, int aClassId, KIWAY* aKiway, int aCtlBits = 0 ) override
{
switch( aClassId )
{
@ -153,17 +152,11 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
return nullptr;
case PANEL_FP_DISPLAY_OPTIONS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return new PANEL_DISPLAY_OPTIONS( aParent, cfg );
}
return new PANEL_DISPLAY_OPTIONS( aParent, GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ) );
case PANEL_FP_GRIDS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
EDA_BASE_FRAME* frame = aKiway->Player( FRAME_FOOTPRINT_EDITOR, false );
if( !frame )
@ -179,12 +172,8 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
}
case PANEL_FP_ORIGINS_AXES:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
return new PANEL_PCBNEW_DISPLAY_ORIGIN( aParent, cfg, FRAME_FOOTPRINT_EDITOR );
}
return new PANEL_PCBNEW_DISPLAY_ORIGIN( aParent, GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ),
FRAME_FOOTPRINT_EDITOR );
case PANEL_FP_EDIT_OPTIONS:
{
@ -236,9 +225,8 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
case PANEL_FP_TOOLBARS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings<FOOTPRINT_EDIT_TOOLBAR_SETTINGS>( "fpedit-toolbars" );
APP_SETTINGS_BASE* cfg = GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" );
TOOLBAR_SETTINGS* tb = GetToolbarSettings<FOOTPRINT_EDIT_TOOLBAR_SETTINGS>( "fpedit-toolbars" );
std::vector<TOOL_ACTION*> actions;
std::vector<ACTION_TOOLBAR_CONTROL*> controls;
@ -256,17 +244,11 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
return new PANEL_FP_EDITOR_COLOR_SETTINGS( aParent );
case PANEL_PCB_DISPLAY_OPTS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
return new PANEL_DISPLAY_OPTIONS( aParent, cfg );
}
return new PANEL_DISPLAY_OPTIONS( aParent, GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) );
case PANEL_PCB_GRIDS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
EDA_BASE_FRAME* frame = aKiway->Player( FRAME_PCB_EDITOR, false );
if( !frame )
@ -282,12 +264,8 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
}
case PANEL_PCB_ORIGINS_AXES:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
return new PANEL_PCBNEW_DISPLAY_ORIGIN( aParent, cfg, FRAME_PCB_EDITOR );
}
return new PANEL_PCBNEW_DISPLAY_ORIGIN( aParent, GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ),
FRAME_PCB_EDITOR );
case PANEL_PCB_EDIT_OPTIONS:
{
@ -318,9 +296,8 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
case PANEL_PCB_TOOLBARS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings<PCB_EDIT_TOOLBAR_SETTINGS>( "pcbnew-toolbars" );
APP_SETTINGS_BASE* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
TOOLBAR_SETTINGS* tb = GetToolbarSettings<PCB_EDIT_TOOLBAR_SETTINGS>( "pcbnew-toolbars" );
std::vector<TOOL_ACTION*> actions;
std::vector<ACTION_TOOLBAR_CONTROL*> controls;
@ -347,22 +324,21 @@ static struct IFACE : public KIFACE_BASE, public UNITS_PROVIDER
return new PANEL_3D_RAYTRACING_OPTIONS( aParent );
case PANEL_3DV_TOOLBARS:
{
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
APP_SETTINGS_BASE* cfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings<EDA_3D_VIEWER_TOOLBAR_SETTINGS>( "3d_viewer-toolbars" );
{
APP_SETTINGS_BASE* cfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" );
TOOLBAR_SETTINGS* tb = GetToolbarSettings<EDA_3D_VIEWER_TOOLBAR_SETTINGS>( "3d_viewer-toolbars" );
std::vector<TOOL_ACTION*> actions;
std::vector<ACTION_TOOLBAR_CONTROL*> controls;
std::vector<TOOL_ACTION*> actions;
std::vector<ACTION_TOOLBAR_CONTROL*> controls;
for( TOOL_ACTION* action : ACTION_MANAGER::GetActionList() )
actions.push_back( action );
for( TOOL_ACTION* action : ACTION_MANAGER::GetActionList() )
actions.push_back( action );
for( ACTION_TOOLBAR_CONTROL* control : ACTION_TOOLBAR::GetCustomControlList() )
controls.push_back( control );
for( ACTION_TOOLBAR_CONTROL* control : ACTION_TOOLBAR::GetCustomControlList() )
controls.push_back( control );
return new PANEL_TOOLBAR_CUSTOMIZATION( aParent, cfg, tb, actions, controls );
}
return new PANEL_TOOLBAR_CUSTOMIZATION( aParent, cfg, tb, actions, controls );
}
default:
return nullptr;
@ -477,10 +453,10 @@ bool IFACE::OnKifaceStart( PGM_BASE* aProgram, int aCtlBits, KIWAY* aKiway )
if( !loadGlobalLibTable() )
{
// we didnt get anywhere deregister the settings
mgr.FlushAndRelease( mgr.GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ), false );
mgr.FlushAndRelease( GetAppSettings<CVPCB_SETTINGS>( "cvpcb" ), false );
mgr.FlushAndRelease( KifaceSettings(), false );
mgr.FlushAndRelease( mgr.GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ), false );
mgr.FlushAndRelease( mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ), false );
mgr.FlushAndRelease( GetAppSettings<FOOTPRINT_EDITOR_SETTINGS>( "fpedit" ), false );
mgr.FlushAndRelease( GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ), false );
return false;
}

View File

@ -617,10 +617,9 @@ int PCBNEW_JOBS_HANDLER::JobExportRender( JOB* aJob )
if( aRenderJob->m_appearancePreset.empty() )
boardAdapter.m_IsPreviewer = true; // Force display 3D models, regardless of 3D viewer options
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
EDA_3D_VIEWER_SETTINGS cfg;
if( EDA_3D_VIEWER_SETTINGS* userCfg = mgr.GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
if( EDA_3D_VIEWER_SETTINGS* userCfg = GetAppSettings<EDA_3D_VIEWER_SETTINGS>( "3d_viewer" ) )
{
cfg.m_Render = userCfg->m_Render;
cfg.m_Camera = userCfg->m_Camera;

View File

@ -54,10 +54,7 @@ void PCBNEW_PRINTOUT_SETTINGS::Load( APP_SETTINGS_BASE* aConfig )
{
BOARD_PRINTOUT_SETTINGS::Load( aConfig );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( cfg )
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
m_DrillMarks = static_cast<DRILL_MARKS>( cfg->m_Plot.pads_drill_mode );
m_Pagination = static_cast<PAGINATION_T>( cfg->m_Plot.all_layers_on_one_page );
@ -72,10 +69,7 @@ void PCBNEW_PRINTOUT_SETTINGS::Save( APP_SETTINGS_BASE* aConfig )
{
BOARD_PRINTOUT_SETTINGS::Save( aConfig );
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
PCBNEW_SETTINGS* cfg = mgr.GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" );
if( cfg )
if( PCBNEW_SETTINGS* cfg = GetAppSettings<PCBNEW_SETTINGS>( "pcbnew" ) )
{
cfg->m_Plot.pads_drill_mode = (int)m_DrillMarks;
cfg->m_Plot.all_layers_on_one_page = m_Pagination;

Some files were not shown because too many files have changed in this diff Show More