diff --git a/3d-viewer/3d_canvas/board_adapter.cpp b/3d-viewer/3d_canvas/board_adapter.cpp index 5462a51c80..dc451aee13 100644 --- a/3d-viewer/3d_canvas/board_adapter.cpp +++ b/3d-viewer/3d_canvas/board_adapter.cpp @@ -227,17 +227,11 @@ BOARD_ADAPTER::~BOARD_ADAPTER() void BOARD_ADAPTER::ReloadColorSettings() noexcept { - wxCHECK( PgmOrNull(), /* void */ ); + PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ); + COLOR_SETTINGS* cs = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME ); - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - PCBNEW_SETTINGS* cfg = mgr.GetAppSettings( "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 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 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 BOARD_ADAPTER::GetLayerColors() const void BOARD_ADAPTER::SetLayerColors( const std::map& aColors ) { - COLOR_SETTINGS* settings = Pgm().GetSettingsManager().GetColorSettings(); + COLOR_SETTINGS* settings = ::GetColorSettings( DEFAULT_THEME ); for( const auto& [ layer, color ] : aColors ) { diff --git a/3d-viewer/3d_canvas/eda_3d_canvas.cpp b/3d-viewer/3d_canvas/eda_3d_canvas.cpp index 06448bd0e9..8269b3a59b 100644 --- a/3d-viewer/3d_canvas/eda_3d_canvas.cpp +++ b/3d-viewer/3d_canvas/eda_3d_canvas.cpp @@ -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( "3d_viewer" ); - - switch( cfg->m_Render.engine ) + if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings( "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 ) diff --git a/3d-viewer/3d_viewer/eda_3d_viewer_frame.cpp b/3d-viewer/3d_viewer/eda_3d_viewer_frame.cpp index a6aecdc307..1d1195cdb6 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer_frame.cpp +++ b/3d-viewer/3d_viewer/eda_3d_viewer_frame.cpp @@ -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( "3d_viewer" ); - ANTIALIASING_MODE aaMode = static_cast( cfg->m_Render.opengl_AA_mode ); + ANTIALIASING_MODE aaMode = ANTIALIASING_MODE::AA_NONE; + EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings( "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( 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( "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( "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() ) - 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( "3d_viewer" ); - m_boardAdapter.SetLayerColors( m_boardAdapter.GetDefaultColors() ); - cfg->ResetToDefaults(); - LoadSettings( cfg ); + if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings( "3d_viewer" ) ) + cfg->ResetToDefaults(); + + LoadSettings( GetAppSettings( "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( "3d_viewer" ); + EDA_BASE_FRAME::SaveSettings( GetAppSettings( "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( "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( "3d_viewer" ) ); + applySettings( GetAppSettings( "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( "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( "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(); + } } } diff --git a/3d-viewer/dialogs/panel_3D_display_options.cpp b/3d-viewer/dialogs/panel_3D_display_options.cpp index 1dd5d19958..6af13cc92f 100644 --- a/3d-viewer/dialogs/panel_3D_display_options.cpp +++ b/3d-viewer/dialogs/panel_3D_display_options.cpp @@ -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( "3d_viewer" ); - - loadViewSettings( cfg ); - + loadViewSettings( GetAppSettings( "3d_viewer" ) ); return true; } bool PANEL_3D_DISPLAY_OPTIONS::TransferDataFromWindow() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings( "3d_viewer" ); + if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings( "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( m_materialProperties->GetSelection() ); - cfg->m_Render.material_mode = static_cast( 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; } diff --git a/3d-viewer/dialogs/panel_3D_opengl_options.cpp b/3d-viewer/dialogs/panel_3D_opengl_options.cpp index 11c5d4fd92..cb03fef2eb 100644 --- a/3d-viewer/dialogs/panel_3D_opengl_options.cpp +++ b/3d-viewer/dialogs/panel_3D_opengl_options.cpp @@ -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( "3d_viewer" ); - - loadSettings( cfg ); - + loadSettings( GetAppSettings( "3d_viewer" ) ); return true; } bool PANEL_3D_OPENGL_OPTIONS::TransferDataFromWindow() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings( "3d_viewer" ); + if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings( "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( m_choiceAntiAliasing->GetSelection() ); + cfg->m_Render.opengl_selection_color = m_selectionColorSwatch->GetSwatchColor(); - cfg->m_Render.opengl_AA_mode = - static_cast( 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; } diff --git a/3d-viewer/dialogs/panel_3D_raytracing_options.cpp b/3d-viewer/dialogs/panel_3D_raytracing_options.cpp index 8934c9bbcb..0ec55d73eb 100644 --- a/3d-viewer/dialogs/panel_3D_raytracing_options.cpp +++ b/3d-viewer/dialogs/panel_3D_raytracing_options.cpp @@ -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( "3d_viewer" ); - - loadSettings( cfg ); - + loadSettings( GetAppSettings( "3d_viewer" ) ); return true; } bool PANEL_3D_RAYTRACING_OPTIONS::TransferDataFromWindow() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EDA_3D_VIEWER_SETTINGS* cfg = mgr.GetAppSettings( "3d_viewer" ); + if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings( "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; } diff --git a/3d-viewer/dialogs/panel_preview_3d_model.cpp b/3d-viewer/dialogs/panel_preview_3d_model.cpp index 56ad6b41ed..9de8d3737b 100644 --- a/3d-viewer/dialogs/panel_preview_3d_model.cpp +++ b/3d-viewer/dialogs/panel_preview_3d_model.cpp @@ -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( "3d_viewer" ); - - if( cfg ) + if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings( "3d_viewer" ) ) { // Save the 3D viewer render settings, to restore it after closing the preview m_initialRender = cfg->m_Render; diff --git a/common/design_block_lib_table.cpp b/common/design_block_lib_table.cpp index 9b51c22791..2f06a5d4da 100644 --- a/common/design_block_lib_table.cpp +++ b/common/design_block_lib_table.cpp @@ -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" ); - + KICAD_SETTINGS* cfg = GetAppSettings( "kicad" ); const ENV_VAR_MAP& env = Pgm().GetLocalEnvVariables(); wxString packagesPath; if( std::optional 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 to_remove; diff --git a/common/dialogs/panel_color_settings.cpp b/common/dialogs/panel_color_settings.cpp index a0c0f29c66..874d451b6c 100644 --- a/common/dialogs/panel_color_settings.cpp +++ b/common/dialogs/panel_color_settings.cpp @@ -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; } diff --git a/common/dialogs/panel_design_block_lib_table.cpp b/common/dialogs/panel_design_block_lib_table.cpp index 28904ed141..77a543a7bf 100644 --- a/common/dialogs/panel_design_block_lib_table.cpp +++ b/common/dialogs/panel_design_block_lib_table.cpp @@ -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" ); + KICAD_SETTINGS* cfg = GetAppSettings( "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( grid->GetTable() ); - auto* tableRow = - static_cast( 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( grid->GetTable() ); + auto* tableRow = static_cast( 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> props( - LIB_TABLE::ParseOptions( options.ToStdString() ) ); + wxString options = m_cur_grid->GetCellValue( row, COL_OPTIONS ); + std::unique_ptr> 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" ); + KICAD_SETTINGS* cfg = GetAppSettings( "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 ) ) diff --git a/common/dialogs/panel_packages_and_updates.cpp b/common/dialogs/panel_packages_and_updates.cpp index d5ed3cd030..04857c1644 100644 --- a/common/dialogs/panel_packages_and_updates.cpp +++ b/common/dialogs/panel_packages_and_updates.cpp @@ -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" ); - - 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" ) ) + { + 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" ); - - 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" ) ) + { + 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; } diff --git a/common/eda_draw_frame.cpp b/common/eda_draw_frame.cpp index 8b41eb7ee1..27df64fd3a 100644 --- a/common/eda_draw_frame.cpp +++ b/common/eda_draw_frame.cpp @@ -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( this )->m_colorSettings = colorSettings; } diff --git a/common/fp_lib_table.cpp b/common/fp_lib_table.cpp index 8c7e0a1f98..1120d18683 100644 --- a/common/fp_lib_table.cpp +++ b/common/fp_lib_table.cpp @@ -601,8 +601,7 @@ bool FP_LIB_TABLE::LoadGlobalTable( FP_LIB_TABLE& aTable ) SystemDirsAppend( &ss ); const ENV_VAR_MAP& envVars = Pgm().GetLocalEnvVariables(); - std::optional v = ENV_VAR::GetVersionedEnvVarValue( envVars, - wxT( "TEMPLATE_DIR" ) ); + std::optional 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" ); - + KICAD_SETTINGS* cfg = GetAppSettings( "kicad" ); const ENV_VAR_MAP& env = Pgm().GetLocalEnvVariables(); - wxString packagesPath; + wxString packagesPath; if( std::optional 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 to_remove; diff --git a/common/settings/settings_manager.cpp b/common/settings/settings_manager.cpp index f7c0119ae8..a41ddb4356 100644 --- a/common/settings/settings_manager.cpp +++ b/common/settings/settings_manager.cpp @@ -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 ); } diff --git a/cvpcb/display_footprints_frame.cpp b/cvpcb/display_footprints_frame.cpp index de47f0e435..b96524a5c1 100644 --- a/cvpcb/display_footprints_frame.cpp +++ b/cvpcb/display_footprints_frame.cpp @@ -116,7 +116,7 @@ DISPLAY_FOOTPRINTS_FRAME::DISPLAY_FOOTPRINTS_FRAME( KIWAY* aKiway, wxWindow* aPa setupUIConditions(); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "display_footprints-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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( 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( 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( 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" ); - return &cfg->m_FootprintViewer; + static WINDOW_SETTINGS defaultCfg; + + CVPCB_SETTINGS* cfg = GetAppSettings( "cvpcb" ); + return cfg ? &cfg->m_FootprintViewer : &defaultCfg; } PCB_VIEWERS_SETTINGS_BASE* DISPLAY_FOOTPRINTS_FRAME::GetViewerSettingsBase() const { - return Pgm().GetSettingsManager().GetAppSettings( "cvpcb" ); + return GetAppSettings( "cvpcb" ); } MAGNETIC_SETTINGS* DISPLAY_FOOTPRINTS_FRAME::GetMagneticItemsSettings() { - CVPCB_SETTINGS* cfg = Pgm().GetSettingsManager().GetAppSettings( "cvpcb" ); - return &cfg->m_FootprintViewerMagneticSettings; + static MAGNETIC_SETTINGS defaultCfg; + + CVPCB_SETTINGS* cfg = GetAppSettings( "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( "fpedit" ); - - if( cfg ) - return Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme ); - else - return Pgm().GetSettingsManager().GetColorSettings(); + FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "fpedit" ); + return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME ); } diff --git a/eeschema/dialogs/dialog_lib_edit_pin_table.cpp b/eeschema/dialogs/dialog_lib_edit_pin_table.cpp index 08364c5e43..3b2d592965 100644 --- a/eeschema/dialogs/dialog_lib_edit_pin_table.cpp +++ b/eeschema/dialogs/dialog_lib_edit_pin_table.cpp @@ -544,18 +544,17 @@ public: VECTOR2I pos = last->GetPosition(); - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - SYMBOL_EDITOR_SETTINGS* cfg = - mgr.GetAppSettings( "symbol_editor" ); - - if( last->GetOrientation() == PIN_ORIENTATION::PIN_LEFT - || last->GetOrientation() == PIN_ORIENTATION::PIN_RIGHT ) + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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 ); diff --git a/eeschema/dialogs/dialog_lib_symbol_properties.cpp b/eeschema/dialogs/dialog_lib_symbol_properties.cpp index 6ed7d4e322..8075667774 100644 --- a/eeschema/dialogs/dialog_lib_symbol_properties.cpp +++ b/eeschema/dialogs/dialog_lib_symbol_properties.cpp @@ -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" ); - - if( cfg ) + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) { TEMPLATES templateMgr; diff --git a/eeschema/dialogs/dialog_plot_schematic.cpp b/eeschema/dialogs/dialog_plot_schematic.cpp index c13c1bad1d..be29101d15 100644 --- a/eeschema/dialogs/dialog_plot_schematic.cpp +++ b/eeschema/dialogs/dialog_plot_schematic.cpp @@ -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( m_colorTheme->GetClientData( selection ) ); } diff --git a/eeschema/dialogs/panel_eeschema_annotation_options.cpp b/eeschema/dialogs/panel_eeschema_annotation_options.cpp index d23e9e9fdb..829b4290fd 100644 --- a/eeschema/dialogs/panel_eeschema_annotation_options.cpp +++ b/eeschema/dialogs/panel_eeschema_annotation_options.cpp @@ -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" ); - - loadEEschemaSettings( cfg ); - + loadEEschemaSettings( GetAppSettings( "eeschema" ) ); return true; } bool PANEL_EESCHEMA_ANNOTATION_OPTIONS::TransferDataFromWindow() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings( "eeschema" ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "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( m_schSettingsProvider ); - - if( schFrame ) + if( SCH_EDIT_FRAME* schFrame = dynamic_cast( 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; diff --git a/eeschema/dialogs/panel_eeschema_color_settings.cpp b/eeschema/dialogs/panel_eeschema_color_settings.cpp index a7c228d1c1..c5603600e0 100644 --- a/eeschema/dialogs/panel_eeschema_color_settings.cpp +++ b/eeschema/dialogs/panel_eeschema_color_settings.cpp @@ -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" ); - COLOR_SETTINGS* current = mgr.GetColorSettings( app_settings->m_ColorTheme ); + EESCHEMA_SETTINGS* app_settings = GetAppSettings( "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" ); - - cfg->m_ColorTheme = m_currentSettings->GetFilename(); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) + cfg->m_ColorTheme = m_currentSettings->GetFilename(); return true; } diff --git a/eeschema/dialogs/panel_eeschema_display_options.cpp b/eeschema/dialogs/panel_eeschema_display_options.cpp index 3d22ed8d79..e23bb63645 100644 --- a/eeschema/dialogs/panel_eeschema_display_options.cpp +++ b/eeschema/dialogs/panel_eeschema_display_options.cpp @@ -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" ); - - loadEEschemaSettings( cfg ); - + loadEEschemaSettings( GetAppSettings( "eeschema" ) ); m_galOptsPanel->TransferDataToWindow(); - return true; } bool PANEL_EESCHEMA_DISPLAY_OPTIONS::TransferDataFromWindow() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings( "eeschema" ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "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(); diff --git a/eeschema/dialogs/panel_eeschema_editing_options.cpp b/eeschema/dialogs/panel_eeschema_editing_options.cpp index 20943b0d28..052ca6a5e8 100644 --- a/eeschema/dialogs/panel_eeschema_editing_options.cpp +++ b/eeschema/dialogs/panel_eeschema_editing_options.cpp @@ -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" ); - - loadEEschemaSettings( cfg ); - + loadEEschemaSettings( GetAppSettings( "eeschema" ) ); return true; } bool PANEL_EESCHEMA_EDITING_OPTIONS::TransferDataFromWindow() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings( "eeschema" ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) + { + cfg->m_Drawing.new_power_symbols = static_cast( m_choicePower->GetSelection() ); - cfg->m_Drawing.new_power_symbols = static_cast( 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; } diff --git a/eeschema/dialogs/panel_simulator_preferences.cpp b/eeschema/dialogs/panel_simulator_preferences.cpp index 4bd3cfa18d..46b28a35dc 100644 --- a/eeschema/dialogs/panel_simulator_preferences.cpp +++ b/eeschema/dialogs/panel_simulator_preferences.cpp @@ -86,16 +86,17 @@ bool PANEL_SIMULATOR_PREFERENCES::TransferDataFromWindow() return static_cast( aChoice->GetSelection() ); }; - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings( "eeschema" ); - SIM_MOUSE_WHEEL_ACTION_SET& actions = cfg->m_Simulator.preferences.mouse_wheel_actions; + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "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" ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) + applyMouseScrollActionsToPanel( cfg->m_Simulator.preferences.mouse_wheel_actions ); - applyMouseScrollActionsToPanel( cfg->m_Simulator.preferences.mouse_wheel_actions ); return true; } diff --git a/eeschema/dialogs/panel_sym_color_settings.cpp b/eeschema/dialogs/panel_sym_color_settings.cpp index e841e34d62..9324cadd07 100644 --- a/eeschema/dialogs/panel_sym_color_settings.cpp +++ b/eeschema/dialogs/panel_sym_color_settings.cpp @@ -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" ); + SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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( 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" ); - - cfg->m_UseEeschemaColorSettings = m_eeschemaRB->GetValue(); - - if( !cfg->m_UseEeschemaColorSettings ) + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "symbol_editor" ) ) { - int sel = m_themes->GetSelection(); - COLOR_SETTINGS* colors = static_cast( 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( m_themes->GetClientData( sel ) ); + + cfg->m_ColorTheme = colors->GetFilename(); + } } return true; diff --git a/eeschema/dialogs/panel_sym_display_options.cpp b/eeschema/dialogs/panel_sym_display_options.cpp index fe2bd50059..b743f0986b 100644 --- a/eeschema/dialogs/panel_sym_display_options.cpp +++ b/eeschema/dialogs/panel_sym_display_options.cpp @@ -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" ); - - loadSymEditorSettings( cfg ); + loadSymEditorSettings( GetAppSettings( "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" ); - - 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" ) ) + { + 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; } diff --git a/eeschema/dialogs/panel_sym_editing_options.cpp b/eeschema/dialogs/panel_sym_editing_options.cpp index a9ad30fb22..66fbc207e0 100644 --- a/eeschema/dialogs/panel_sym_editing_options.cpp +++ b/eeschema/dialogs/panel_sym_editing_options.cpp @@ -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" ); - - loadSymEditorSettings( cfg ); - + loadSymEditorSettings( GetAppSettings( "symbol_editor" ) ); return true; } bool PANEL_SYM_EDITING_OPTIONS::TransferDataFromWindow() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "symbol_editor" ); + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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; } diff --git a/eeschema/dialogs/panel_sym_lib_table.cpp b/eeschema/dialogs/panel_sym_lib_table.cpp index 25e13d6665..98cb8d7a4a 100644 --- a/eeschema/dialogs/panel_sym_lib_table.cpp +++ b/eeschema/dialogs/panel_sym_lib_table.cpp @@ -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" ); + 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( grid->GetTable() ); - auto* tableRow = static_cast( libTable->at( row ) ); - - IO_RELEASER pi( SCH_IO_MGR::FindPlugin( tableRow->GetFileType() ) ); - - if( pi ) + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "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( grid->GetTable() ); + auto* tableRow = static_cast( libTable->at( row ) ); - if( desc.m_IsFile ) - return desc.FileFilter(); - } + IO_RELEASER 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" ); - - if( cfg->m_lastSymbolLibDir.IsEmpty() ) - cfg->m_lastSymbolLibDir = PATHS::GetDefaultUserSymbolsPath(); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "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" ); - - wxString openDir = cfg->m_lastSymbolLibDir; + EESCHEMA_SETTINGS* cfg = GetAppSettings( "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; } diff --git a/eeschema/dialogs/panel_template_fieldnames.cpp b/eeschema/dialogs/panel_template_fieldnames.cpp index 7ab9b35b03..0cdb53dd4e 100644 --- a/eeschema/dialogs/panel_template_fieldnames.cpp +++ b/eeschema/dialogs/panel_template_fieldnames.cpp @@ -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" ); - - if( cfg && !cfg->m_Drawing.field_names.IsEmpty() ) - m_templateMgr->AddTemplateFieldNames( cfg->m_Drawing.field_names ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "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" ); - - if( cfg ) + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) { // Save global fieldname templates STRING_FORMATTER sf; diff --git a/eeschema/eeschema.cpp b/eeschema/eeschema.cpp index 02bbf99951..2cfad06c37 100644 --- a/eeschema/eeschema.cpp +++ b/eeschema/eeschema.cpp @@ -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" ); - - return new PANEL_SYM_DISPLAY_OPTIONS( aParent, cfg ); - } + return new PANEL_SYM_DISPLAY_OPTIONS( aParent, GetAppSettings( "symbol_editor" ) ); case PANEL_SYM_EDIT_GRIDS: { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - APP_SETTINGS_BASE* cfg = mgr.GetAppSettings( "symbol_editor" ); + APP_SETTINGS_BASE* cfg = GetAppSettings( "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" ); - TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings( "symbol_editor-toolbars" ); + APP_SETTINGS_BASE* cfg = GetAppSettings( "symbol_editor" ); + TOOLBAR_SETTINGS* tb = GetToolbarSettings( "symbol_editor-toolbars" ); std::vector actions; std::vector 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" ); - - return new PANEL_EESCHEMA_DISPLAY_OPTIONS( aParent, cfg ); - } + return new PANEL_EESCHEMA_DISPLAY_OPTIONS( aParent, GetAppSettings( "eeschema" ) ); case PANEL_SCH_GRIDS: { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings( "eeschema" ); + EESCHEMA_SETTINGS* cfg = GetAppSettings( "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" ); - TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings( "eeschema-toolbars" ); + APP_SETTINGS_BASE* cfg = GetAppSettings( "eeschema" ); + TOOLBAR_SETTINGS* tb = GetToolbarSettings( "eeschema-toolbars" ); std::vector actions; std::vector controls; diff --git a/eeschema/eeschema_config.cpp b/eeschema/eeschema_config.cpp index 6cc0fe90c2..b1aa50bf19 100644 --- a/eeschema/eeschema_config.cpp +++ b/eeschema/eeschema_config.cpp @@ -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 ); } diff --git a/eeschema/eeschema_jobs_handler.cpp b/eeschema/eeschema_jobs_handler.cpp index 3cc97f1cef..49ff07047d 100644 --- a/eeschema/eeschema_jobs_handler.cpp +++ b/eeschema/eeschema_jobs_handler.cpp @@ -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( mgr.GetAppSettings( "eeschema" ) ); - - if( cfg ) - font = cfg->m_Appearance.default_font; - else - font = KICAD_FONT_NAME; + EESCHEMA_SETTINGS* cfg = GetAppSettings( "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; diff --git a/eeschema/eeschema_settings.cpp b/eeschema/eeschema_settings.cpp index 75312a3101..82a7bc8bdd 100644 --- a/eeschema/eeschema_settings.cpp +++ b/eeschema/eeschema_settings.cpp @@ -544,7 +544,7 @@ EESCHEMA_SETTINGS::EESCHEMA_SETTINGS() : &m_PlotPanel.color, true ) ); m_params.emplace_back( new PARAM( "plot.color_theme", - &m_PlotPanel.color_theme, wxT( "user" ) ) ); + &m_PlotPanel.color_theme, DEFAULT_THEME ) ); m_params.emplace_back( new PARAM( "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" ); - libedit->MigrateFromLegacy( aCfg ); - libedit->Load(); + if( SYMBOL_EDITOR_SETTINGS* sym_edit_cfg = GetAppSettings( "symbol_editor" ) ) + { + sym_edit_cfg->MigrateFromLegacy( aCfg ); + sym_edit_cfg->Load(); + } return ret; } diff --git a/eeschema/pin_layout_cache.cpp b/eeschema/pin_layout_cache.cpp index d8304f2a6d..253f1eb3bf 100644 --- a/eeschema/pin_layout_cache.cpp +++ b/eeschema/pin_layout_cache.cpp @@ -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" ); - KIFONT::FONT* font = KIFONT::FONT::GetFont( cfg->m_Appearance.default_font ); + EESCHEMA_SETTINGS* cfg = GetAppSettings( "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 ); } { diff --git a/eeschema/printing/sch_printout.cpp b/eeschema/printing/sch_printout.cpp index 104f7be97b..02834d8979 100644 --- a/eeschema/printing/sch_printout.cpp +++ b/eeschema/printing/sch_printout.cpp @@ -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(); + 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(); // 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 ); diff --git a/eeschema/sch_base_frame.cpp b/eeschema/sch_base_frame.cpp index 991fe49d08..3ecf28e01f 100644 --- a/eeschema/sch_base_frame.cpp +++ b/eeschema/sch_base_frame.cpp @@ -152,12 +152,12 @@ APP_SETTINGS_BASE* SCH_BASE_FRAME::GetViewerSettingsBase() const { case FRAME_SCH: default: - return Pgm().GetSettingsManager().GetAppSettings( "eeschema" ); + return GetAppSettings( "eeschema" ); case FRAME_SCH_SYMBOL_EDITOR: case FRAME_SCH_VIEWER: case FRAME_SYMBOL_CHOOSER: - return Pgm().GetSettingsManager().GetAppSettings( "symbol_editor" ); + return GetAppSettings( "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" ); - wxString colorTheme = cfg->m_ColorTheme; + EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ); + wxString colorTheme = cfg ? cfg->m_ColorTheme : wxString( "" ); if( IsType( FRAME_SCH_SYMBOL_EDITOR ) ) { - SYMBOL_EDITOR_SETTINGS* symCfg = - mgr.GetAppSettings( "symbol_editor" ); - - if( !symCfg->m_UseEeschemaColorSettings ) - colorTheme = symCfg->m_ColorTheme; + if( SYMBOL_EDITOR_SETTINGS* sym_edit_cfg = GetAppSettings( "symbol_editor" ) ) + { + if( !sym_edit_cfg->m_UseEeschemaColorSettings ) + colorTheme = sym_edit_cfg->m_ColorTheme; + } } - COLOR_SETTINGS* colorSettings = mgr.GetColorSettings( colorTheme ); - - const_cast( this )->m_colorSettings = colorSettings; + const_cast( this )->m_colorSettings = ::GetColorSettings( colorTheme ); } return m_colorSettings; diff --git a/eeschema/sch_draw_panel.cpp b/eeschema/sch_draw_panel.cpp index 5c34d28f1f..dad46f9ed7 100644 --- a/eeschema/sch_draw_panel.cpp +++ b/eeschema/sch_draw_panel.cpp @@ -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( GetParentEDAFrame() ) ) + if( SCH_BASE_FRAME* frame = dynamic_cast( GetParentEDAFrame() ) ) cs = frame->GetColorSettings(); - else - cs = Pgm().GetSettingsManager().GetColorSettings(); wxASSERT( cs ); m_painter->GetSettings()->LoadColors( cs ); diff --git a/eeschema/sch_edit_frame.cpp b/eeschema/sch_edit_frame.cpp index 4ed0d53632..2781f59edc 100644 --- a/eeschema/sch_edit_frame.cpp +++ b/eeschema/sch_edit_frame.cpp @@ -193,7 +193,7 @@ SCH_EDIT_FRAME::SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) : setupUIConditions(); ReCreateMenuBar(); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "eeschema-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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" ); - GetGalDisplayOptions().ReadWindowSettings( cfg->m_Window ); - GetRenderSettings()->SetDefaultFont( cfg->m_Appearance.default_font ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "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(); diff --git a/eeschema/sch_item.cpp b/eeschema/sch_item.cpp index 7844236a37..067ea9690e 100644 --- a/eeschema/sch_item.cpp +++ b/eeschema/sch_item.cpp @@ -29,19 +29,13 @@ #include #include #include -#include -#include -#include #include #include -#include -#include #include -#include -#include #include #include #include +#include // 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" ); + static wxString defaultName = KICAD_FONT_NAME; - return cfg->m_Appearance.default_font; + EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ); + + return cfg ? cfg->m_Appearance.default_font : defaultName; } diff --git a/eeschema/sch_marker.cpp b/eeschema/sch_marker.cpp index b4f75413df..ead22b1c8f 100644 --- a/eeschema/sch_marker.cpp +++ b/eeschema/sch_marker.cpp @@ -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() ); } diff --git a/eeschema/sch_pin.cpp b/eeschema/sch_pin.cpp index f8ab2ff074..5290f0596a 100644 --- a/eeschema/sch_pin.cpp +++ b/eeschema/sch_pin.cpp @@ -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( *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_MANAGER& mgr = pgm->GetSettingsManager(); - SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "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; } diff --git a/eeschema/sch_plotter.cpp b/eeschema/sch_plotter.cpp index aed6828695..505d2e97ca 100644 --- a/eeschema/sch_plotter.cpp +++ b/eeschema/sch_plotter.cpp @@ -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 ) { diff --git a/eeschema/sch_preview_panel.cpp b/eeschema/sch_preview_panel.cpp index a380875a0c..34cc84127f 100644 --- a/eeschema/sch_preview_panel.cpp +++ b/eeschema/sch_preview_panel.cpp @@ -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; diff --git a/eeschema/sch_sheet.cpp b/eeschema/sch_sheet.cpp index b84ee032cf..67fcf6e942 100644 --- a/eeschema/sch_sheet.cpp +++ b/eeschema/sch_sheet.cpp @@ -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(), diff --git a/eeschema/schematic_settings.cpp b/eeschema/schematic_settings.cpp index b757c60b99..1d935566f2 100644 --- a/eeschema/schematic_settings.cpp +++ b/eeschema/schematic_settings.cpp @@ -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" ); + EESCHEMA_SETTINGS* cfg = GetAppSettings( "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" ); - - 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" ) ) + { + if( !curr_cfg->m_Drawing.field_names.IsEmpty() ) + m_TemplateFieldNames.AddTemplateFieldNames( curr_cfg->m_Drawing.field_names ); + } }, {} ) ); m_params.emplace_back( new PARAM( "bom_export_filename", diff --git a/eeschema/sim/simulator_frame.cpp b/eeschema/sim/simulator_frame.cpp index a0a376012d..928b79ecab 100644 --- a/eeschema/sim/simulator_frame.cpp +++ b/eeschema/sim/simulator_frame.cpp @@ -172,7 +172,7 @@ SIMULATOR_FRAME::SIMULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) : // was created. m_tbTopMain->SetToolManager( m_toolManager ); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "sim-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "sim-toolbars" ); configureToolbars(); RecreateToolbars(); ReCreateMenuBar(); @@ -290,18 +290,17 @@ void SIMULATOR_FRAME::CommonSettingsChanged( int aFlags ) { KIWAY_PLAYER::CommonSettingsChanged( aFlags ); - auto* cfg = dynamic_cast( m_toolManager->GetSettings() ); - wxASSERT( cfg != nullptr ); - m_ui->ApplyPreferences( cfg->m_Simulator.preferences ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) + m_ui->ApplyPreferences( cfg->m_Simulator.preferences ); } WINDOW_SETTINGS* SIMULATOR_FRAME::GetWindowSettings( APP_SETTINGS_BASE* aCfg ) { - EESCHEMA_SETTINGS* cfg = dynamic_cast( aCfg ); - wxASSERT( cfg ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) + return &cfg->m_Simulator.window; - return cfg ? &cfg->m_Simulator.window : nullptr; + return nullptr; } diff --git a/eeschema/symbol_editor/symbol_edit_frame.cpp b/eeschema/symbol_editor/symbol_edit_frame.cpp index 7c5edfdc85..764e17ead2 100644 --- a/eeschema/symbol_editor/symbol_edit_frame.cpp +++ b/eeschema/symbol_editor/symbol_edit_frame.cpp @@ -138,7 +138,7 @@ SYMBOL_EDIT_FRAME::SYMBOL_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) : SetIcons( icon_bundle ); - m_settings = Pgm().GetSettingsManager().GetAppSettings( "symbol_editor" ); + m_settings = GetAppSettings( "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_editor-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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" ); - - if( cfg ) - mgr.Save( cfg ); + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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" )->m_ColorTheme ); - else - return mgr.GetColorSettings( GetSettings()->m_ColorTheme ); + if( cfg && static_cast( cfg )->m_UseEeschemaColorSettings ) + cfg = GetAppSettings( "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" ); + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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(); diff --git a/eeschema/symbol_lib_table.cpp b/eeschema/symbol_lib_table.cpp index 9728bb7251..47ce4fed76 100644 --- a/eeschema/symbol_lib_table.cpp +++ b/eeschema/symbol_lib_table.cpp @@ -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" ); - - wxCHECK( settings, false ); - - wxString packagesPath; + KICAD_SETTINGS* cfg = GetAppSettings( "kicad" ); + wxString packagesPath; const ENV_VAR_MAP& vars = Pgm().GetLocalEnvVariables(); if( std::optional 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 to_remove; diff --git a/eeschema/symbol_viewer_frame.cpp b/eeschema/symbol_viewer_frame.cpp index ff56e9da49..8bdbad7c4b 100644 --- a/eeschema/symbol_viewer_frame.cpp +++ b/eeschema/symbol_viewer_frame.cpp @@ -143,7 +143,7 @@ SYMBOL_VIEWER_FRAME::SYMBOL_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent ) : setupTools(); setupUIConditions(); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "symbol_viewer-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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" ); + SCH_BASE_FRAME::LoadSettings( GetAppSettings( "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" ) ) { - 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" ); - - SCH_BASE_FRAME::SaveSettings( cfg ); + SCH_BASE_FRAME::SaveSettings( GetAppSettings( "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" ) ) { - 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" ); - GetGalDisplayOptions().ReadWindowSettings( cfg->m_LibViewPanel.window ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) + GetGalDisplayOptions().ReadWindowSettings( cfg->m_LibViewPanel.window ); GetCanvas()->GetGAL()->SetAxesColor( m_colorSettings->GetColor( LAYER_SCHEMATIC_GRID_AXES ) ); GetCanvas()->GetGAL()->DrawGrid(); diff --git a/eeschema/tools/sch_edit_tool.cpp b/eeschema/tools/sch_edit_tool.cpp index 31dbe84fec..f32cde2780 100644 --- a/eeschema/tools/sch_edit_tool.cpp +++ b/eeschema/tools/sch_edit_tool.cpp @@ -1517,10 +1517,8 @@ int SCH_EDIT_TOOL::RepeatDrawItem( const TOOL_EVENT& aEvent ) for( const std::unique_ptr& item : sourceItems ) { - SCH_ITEM* newItem = item->Duplicate( IGNORE_PARENT_GROUP ); - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings( "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( 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" ) ) + { + 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" ) ) { 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 lines; // Save the current orthogonal mode so we can restore it later - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - EESCHEMA_SETTINGS* cfg = mgr.GetAppSettings( "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" ) ) { - 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(); diff --git a/eeschema/tools/sch_move_tool.cpp b/eeschema/tools/sch_move_tool.cpp index f685854a12..ed84c175e7 100644 --- a/eeschema/tools/sch_move_tool.cpp +++ b/eeschema/tools/sch_move_tool.cpp @@ -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" ); 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" ) ) + 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 ); } diff --git a/eeschema/tools/symbol_editor_drawing_tools.cpp b/eeschema/tools/symbol_editor_drawing_tools.cpp index f00db08568..2622e2afab 100644 --- a/eeschema/tools/symbol_editor_drawing_tools.cpp +++ b/eeschema/tools/symbol_editor_drawing_tools.cpp @@ -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(); - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "symbol_editor" ); - SYMBOL_EDITOR_PIN_TOOL* pinTool = type == SCH_PIN_T - ? m_toolMgr->GetTool() - : nullptr; + SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "symbol_editor" ); + SYMBOL_EDITOR_PIN_TOOL* pinTool = type == SCH_PIN_T ? m_toolMgr->GetTool() + : 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" ); + SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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 ); diff --git a/eeschema/tools/symbol_editor_pin_tool.cpp b/eeschema/tools/symbol_editor_pin_tool.cpp index 6d02a1e4bf..3f08a1ee26 100644 --- a/eeschema/tools/symbol_editor_pin_tool.cpp +++ b/eeschema/tools/symbol_editor_pin_tool.cpp @@ -51,10 +51,8 @@ static int GetLastPinLength() { if( g_LastPinLength == -1 ) { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - SYMBOL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "symbol_editor" ); - - g_LastPinLength = schIUScale.MilsToIU( cfg->m_Defaults.pin_length ); + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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" ); - - g_LastPinNameSize = schIUScale.MilsToIU( cfg->m_Defaults.pin_name_size ); + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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" ); - - g_LastPinNumSize = schIUScale.MilsToIU( cfg->m_Defaults.pin_num_size ); + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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( 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" ); - - switch( pin->GetOrientation() ) + if( SYMBOL_EDITOR_SETTINGS* cfg = GetAppSettings( "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 ); diff --git a/eeschema/widgets/panel_symbol_chooser.cpp b/eeschema/widgets/panel_symbol_chooser.cpp index 57a68b9f9e..43346509ee 100644 --- a/eeschema/widgets/panel_symbol_chooser.cpp +++ b/eeschema/widgets/panel_symbol_chooser.cpp @@ -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" ); - Pgm().GetSettingsManager().GetAppSettings( "symbol_editor" ); + GetAppSettings( "eeschema" ); + GetAppSettings( "symbol_editor" ); m_adapter = SYMBOL_TREE_MODEL_ADAPTER::Create( m_frame, libs ); SYMBOL_TREE_MODEL_ADAPTER* adapter = static_cast( 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" ); - + else if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) backend = (EDA_DRAW_PANEL_GAL::GAL_TYPE) cfg->m_Graphics.canvas_type; - } wxPanel* panel = new wxPanel( aParent ); wxBoxSizer* sizer = new wxBoxSizer( wxVERTICAL ); diff --git a/eeschema/widgets/sch_design_block_preview_widget.cpp b/eeschema/widgets/sch_design_block_preview_widget.cpp index 8e0c00d660..741d6bc02c 100644 --- a/eeschema/widgets/sch_design_block_preview_widget.cpp +++ b/eeschema/widgets/sch_design_block_preview_widget.cpp @@ -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" ); + EESCHEMA_SETTINGS* cfg = GetAppSettings( "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( 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(); diff --git a/eeschema/widgets/symbol_preview_widget.cpp b/eeschema/widgets/symbol_preview_widget.cpp index 9f0df88b89..1dc5992fff 100644 --- a/eeschema/widgets/symbol_preview_widget.cpp +++ b/eeschema/widgets/symbol_preview_widget.cpp @@ -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" ); + EESCHEMA_SETTINGS* app_settings = GetAppSettings( "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( 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" ); - - if( cfg->m_AutoplaceFields.enable ) - m_previewItem->AutoplaceFields( nullptr, AUTOPLACE_AUTO ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "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" ); - - if( cfg->m_AutoplaceFields.enable ) - m_previewItem->AutoplaceFields( nullptr, AUTOPLACE_AUTO ); + if( EESCHEMA_SETTINGS* cfg = GetAppSettings( "eeschema" ) ) + { + if( cfg->m_AutoplaceFields.enable ) + m_previewItem->AutoplaceFields( nullptr, AUTOPLACE_AUTO ); + } view->Add( m_previewItem ); diff --git a/gerbview/dialogs/panel_gerbview_color_settings.cpp b/gerbview/dialogs/panel_gerbview_color_settings.cpp index 97d932db6a..840a171817 100644 --- a/gerbview/dialogs/panel_gerbview_color_settings.cpp +++ b/gerbview/dialogs/panel_gerbview_color_settings.cpp @@ -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" ); - COLOR_SETTINGS* current = mgr.GetColorSettings( app_settings->m_ColorTheme ); + GERBVIEW_SETTINGS* cfg = GetAppSettings( "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( - wxWindow::FindWindowByName( GERBVIEW_FRAME_NAME ) ); - if( gbr_mainframe ) - { - gbr_mainframe->m_LayersManager->CollectCurrentColorSettings( current ); - } + if( GERBVIEW_FRAME* frame = dynamic_cast( 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" ); - - cfg->m_ColorTheme = m_currentSettings->GetFilename(); + if( GERBVIEW_SETTINGS* cfg = GetAppSettings( "gerbview" ) ) + cfg->m_ColorTheme = m_currentSettings->GetFilename(); return true; } diff --git a/gerbview/dialogs/panel_gerbview_display_options.cpp b/gerbview/dialogs/panel_gerbview_display_options.cpp index ae1b244390..9da2566df3 100644 --- a/gerbview/dialogs/panel_gerbview_display_options.cpp +++ b/gerbview/dialogs/panel_gerbview_display_options.cpp @@ -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" ); + GERBVIEW_SETTINGS* cfg = GetAppSettings( "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" ); - - loadSettings( cfg ); + loadSettings( GetAppSettings( "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" ); - 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" ) ) + { + 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; } diff --git a/gerbview/dialogs/panel_gerbview_excellon_settings.cpp b/gerbview/dialogs/panel_gerbview_excellon_settings.cpp index 50219a70e3..47545c5384 100644 --- a/gerbview/dialogs/panel_gerbview_excellon_settings.cpp +++ b/gerbview/dialogs/panel_gerbview_excellon_settings.cpp @@ -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" ); - EXCELLON_DEFAULTS curr_settings; + if( GERBVIEW_SETTINGS* cfg = GetAppSettings( "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" ); - - 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" ) ) + { + 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; } diff --git a/gerbview/gerbview.cpp b/gerbview/gerbview.cpp index b7d03f224f..d11fbb6ce5 100644 --- a/gerbview/gerbview.cpp +++ b/gerbview/gerbview.cpp @@ -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" ); + GERBVIEW_SETTINGS* cfg = GetAppSettings( "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" ); - TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings( "gerbview-toolbars" ); + GERBVIEW_SETTINGS* cfg = GetAppSettings( "gerbview" ); + TOOLBAR_SETTINGS* tb = GetToolbarSettings( "gerbview-toolbars" ); std::vector actions; std::vector controls; diff --git a/gerbview/gerbview_draw_panel_gal.cpp b/gerbview/gerbview_draw_panel_gal.cpp index 7f2cc25c0b..72ba0b9a21 100644 --- a/gerbview/gerbview_draw_panel_gal.cpp +++ b/gerbview/gerbview_draw_panel_gal.cpp @@ -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( GetParentEDAFrame() ) ) - color_settings = frame->GetColorSettings(); - else - color_settings = Pgm().GetSettingsManager().GetColorSettings(); + if( GERBVIEW_FRAME* frame = dynamic_cast( GetParentEDAFrame() ) ) + cs = frame->GetColorSettings(); - wxASSERT( color_settings ); auto renderSettings = static_cast( m_painter->GetSettings() ); - renderSettings->LoadColors( color_settings ); + renderSettings->LoadColors( cs ); } diff --git a/gerbview/gerbview_frame.cpp b/gerbview/gerbview_frame.cpp index c3d39c57ca..7db3aba93b 100644 --- a/gerbview/gerbview_frame.cpp +++ b/gerbview/gerbview_frame.cpp @@ -150,22 +150,19 @@ GERBVIEW_FRAME::GERBVIEW_FRAME( KIWAY* aKiway, wxWindow* aParent ) : setupUIConditions(); ReCreateMenuBar(); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "gerbview-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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( aCfg ); - wxCHECK( cfg, /*void*/ ); + if( GERBVIEW_SETTINGS* cfg = dynamic_cast( 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" ); - wxString currentTheme = cfg->m_ColorTheme; - return mgr.GetColorSettings( currentTheme ); + GERBVIEW_SETTINGS* cfg = GetAppSettings( "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" ); + if( GERBVIEW_SETTINGS* cfg = GetAppSettings( "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(); diff --git a/include/settings/settings_manager.h b/include/settings/settings_manager.h index cf32ac0b76..506502efc2 100644 --- a/include/settings/settings_manager.h +++ b/include/settings/settings_manager.h @@ -26,6 +26,7 @@ #include #include // for wxString hash #include +#include class COLOR_SETTINGS; class COMMON_SETTINGS; @@ -41,6 +42,8 @@ class LOCKFILE; /// Project settings path will be + 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 GetColorSettingsList() { @@ -534,4 +537,30 @@ private: static wxString backupDateTimeFormat; }; + +template +T* GetAppSettings( const char* aFilename ) +{ + if( PGM_BASE* pgm = PgmOrNull() ) + return pgm->GetSettingsManager().GetAppSettings( aFilename ); + + return nullptr; +} + + +template +T* GetToolbarSettings( const wxString& aFilename ) +{ + if( PGM_BASE* pgm = PgmOrNull() ) + return pgm->GetSettingsManager().GetToolbarSettings( aFilename ); + + return nullptr; +} + + +inline COLOR_SETTINGS* GetColorSettings( const wxString& aName ) +{ + return Pgm().GetSettingsManager().GetColorSettings( aName ); +} + #endif diff --git a/kicad/dialogs/dialog_update_check_prompt.cpp b/kicad/dialogs/dialog_update_check_prompt.cpp index 6f9660e0c8..367cf913d9 100644 --- a/kicad/dialogs/dialog_update_check_prompt.cpp +++ b/kicad/dialogs/dialog_update_check_prompt.cpp @@ -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->m_PcmUpdateCheck = m_cbPCMUpdates->GetValue(); + if( KICAD_SETTINGS* settings = GetAppSettings( "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; } diff --git a/kicad/kicad_manager_frame.cpp b/kicad/kicad_manager_frame.cpp index 5550bba563..d4aea3808d 100644 --- a/kicad/kicad_manager_frame.cpp +++ b/kicad/kicad_manager_frame.cpp @@ -206,7 +206,7 @@ KICAD_MANAGER_FRAME::KICAD_MANAGER_FRAME( wxWindow* parent, const wxString& titl setupTools(); setupUIConditions(); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "kicad-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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(); diff --git a/kicad/pcm/dialogs/dialog_pcm.cpp b/kicad/pcm/dialogs/dialog_pcm.cpp index a4d42bdcd6..ce0e9316da 100644 --- a/kicad/pcm/dialogs/dialog_pcm.cpp +++ b/kicad/pcm/dialogs/dialog_pcm.cpp @@ -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" ); - - cfg->m_PcmRepositories = std::move( dialog_data ); + if( KICAD_SETTINGS* cfg = GetAppSettings( "kicad" ) ) + cfg->m_PcmRepositories = std::move( dialog_data ); setRepositoryListFromPcm(); } diff --git a/kicad/pcm/dialogs/panel_packages_view.cpp b/kicad/pcm/dialogs/panel_packages_view.cpp index 1bf8f9bbb4..3dc87caa42 100644 --- a/kicad/pcm/dialogs/panel_packages_view.cpp +++ b/kicad/pcm/dialogs/panel_packages_view.cpp @@ -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" ); + KICAD_SETTINGS* cfg = GetAppSettings( "kicad" ); wxWindow* topLevelParent = wxGetTopLevelParent( this ); wxFileDialog dialog( topLevelParent, _( "Save Package" ), cfg->m_PcmLastDownloadDir, diff --git a/kicad/tools/kicad_manager_control.cpp b/kicad/tools/kicad_manager_control.cpp index d50e40a80f..bb10b99027 100644 --- a/kicad/tools/kicad_manager_control.cpp +++ b/kicad/tools/kicad_manager_control.cpp @@ -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" ); + KICAD_SETTINGS* settings = GetAppSettings( "kicad" ); std::map titleDirMap; - - wxFileName templatePath; + wxFileName templatePath; // KiCad system template path. std::optional 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" ); + KICAD_SETTINGS* settings = GetAppSettings( "kicad" ); if( changed.count( PCM_PACKAGE_TYPE::PT_LIBRARY ) && ( settings->m_PcmLibAutoAdd || settings->m_PcmLibAutoRemove ) ) diff --git a/kicad/update_manager.cpp b/kicad/update_manager.cpp index 932db293f5..3ad465542f 100644 --- a/kicad/update_manager.cpp +++ b/kicad/update_manager.cpp @@ -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" ); + KICAD_SETTINGS* settings = GetAppSettings( "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" ); - cfg->m_lastReceivedUpdate = response.version; + if( KICAD_SETTINGS* cfg = GetAppSettings( "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() ) ); } } diff --git a/pagelayout_editor/dialogs/panel_pl_editor_color_settings.cpp b/pagelayout_editor/dialogs/panel_pl_editor_color_settings.cpp index 35de79c22f..eb882298d9 100644 --- a/pagelayout_editor/dialogs/panel_pl_editor_color_settings.cpp +++ b/pagelayout_editor/dialogs/panel_pl_editor_color_settings.cpp @@ -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" ); - COLOR_SETTINGS* current = Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme ); + PL_EDITOR_SETTINGS* cfg = GetAppSettings( "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" ); - COLOR_SETTINGS* colors = static_cast( m_themes->GetClientData( sel ) ); - - cfg->m_ColorTheme = colors->GetFilename(); + if( PL_EDITOR_SETTINGS* cfg = GetAppSettings( "pl_editor" ) ) + { + COLOR_SETTINGS* colors = static_cast( m_themes->GetClientData( sel ) ); + cfg->m_ColorTheme = colors->GetFilename(); + } } return true; diff --git a/pagelayout_editor/pl_draw_panel_gal.cpp b/pagelayout_editor/pl_draw_panel_gal.cpp index 2ad3139709..6485f54892 100644 --- a/pagelayout_editor/pl_draw_panel_gal.cpp +++ b/pagelayout_editor/pl_draw_panel_gal.cpp @@ -54,10 +54,9 @@ PL_DRAW_PANEL_GAL::PL_DRAW_PANEL_GAL( wxWindow* aParentWindow, wxWindowID aWindo m_painter = std::make_unique( m_gal ); - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - PL_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "pl_editor" ); + PL_EDITOR_SETTINGS* cfg = GetAppSettings( "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 diff --git a/pagelayout_editor/pl_editor.cpp b/pagelayout_editor/pl_editor.cpp index 0f3f345ebb..62f58384c6 100644 --- a/pagelayout_editor/pl_editor.cpp +++ b/pagelayout_editor/pl_editor.cpp @@ -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" ); - - return new PANEL_PL_EDITOR_DISPLAY_OPTIONS( aParent, cfg ); - } + return new PANEL_PL_EDITOR_DISPLAY_OPTIONS( aParent, GetAppSettings( "pl_editor" ) ); case PANEL_DS_GRIDS: { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - APP_SETTINGS_BASE* cfg = mgr.GetAppSettings( "pl_editor" ); + APP_SETTINGS_BASE* cfg = GetAppSettings( "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" ); - TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings( "pl_editor-toolbars" ); + APP_SETTINGS_BASE* cfg = GetAppSettings( "pl_editor" ); + TOOLBAR_SETTINGS* tb = GetToolbarSettings( "pl_editor-toolbars" ); std::vector actions; std::vector controls; diff --git a/pagelayout_editor/pl_editor_frame.cpp b/pagelayout_editor/pl_editor_frame.cpp index 1e8cec3aea..829d0c087c 100644 --- a/pagelayout_editor/pl_editor_frame.cpp +++ b/pagelayout_editor/pl_editor_frame.cpp @@ -136,7 +136,7 @@ PL_EDITOR_FRAME::PL_EDITOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) : setupUIConditions(); ReCreateMenuBar(); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "pl_editor-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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" ); - COLOR_SETTINGS* colors = mgr.GetColorSettings( cfg->m_ColorTheme ); + PL_EDITOR_SETTINGS* cfg = GetAppSettings( "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 ); diff --git a/pcbnew/board_commit.cpp b/pcbnew/board_commit.cpp index 05851f1330..60fa412190 100644 --- a/pcbnew/board_commit.cpp +++ b/pcbnew/board_commit.cpp @@ -509,13 +509,14 @@ void BOARD_COMMIT::Push( const wxString& aMessage, int aCommitFlags ) frame->HideSolderMask(); } - PCBNEW_SETTINGS* settings = Pgm().GetSettingsManager().GetAppSettings( "pcbnew" ); - - if( !staleRuleAreas.empty() && ( settings->m_Display.m_TrackClearance == SHOW_WITH_VIA_ALWAYS - || settings->m_Display.m_PadClearance ) ) + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "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() ) diff --git a/pcbnew/dialogs/dialog_export_2581.cpp b/pcbnew/dialogs/dialog_export_2581.cpp index 07628961c2..f21eecc423 100644 --- a/pcbnew/dialogs/dialog_export_2581.cpp +++ b/pcbnew/dialogs/dialog_export_2581.cpp @@ -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" ); - std::set 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" ) ) + { + 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" ); - - 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" ) ) + { + 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; diff --git a/pcbnew/dialogs/dialog_export_odbpp.cpp b/pcbnew/dialogs/dialog_export_odbpp.cpp index 22b8e90570..ef3b5c98da 100644 --- a/pcbnew/dialogs/dialog_export_odbpp.cpp +++ b/pcbnew/dialogs/dialog_export_odbpp.cpp @@ -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" ); - 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" ) ) + { + 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" ); - - 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" ) ) + { + 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( m_choiceUnits->GetSelection() ); - m_job->m_compressionMode = static_cast( - m_choiceCompress->GetSelection() ); + m_job->m_units = static_cast( m_choiceUnits->GetSelection() ); + m_job->m_compressionMode = static_cast( m_choiceCompress->GetSelection() ); } return true; diff --git a/pcbnew/dialogs/dialog_footprint_wizard_list.cpp b/pcbnew/dialogs/dialog_footprint_wizard_list.cpp index 8c8a7ad114..9794772e55 100644 --- a/pcbnew/dialogs/dialog_footprint_wizard_list.cpp +++ b/pcbnew/dialogs/dialog_footprint_wizard_list.cpp @@ -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" ); - - wxSize size; - size.x = cfg->m_FootprintWizardList.width; - size.y = cfg->m_FootprintWizardList.height; - SetSize( size ); + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "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" ); - - if( cfg && !IsIconized() ) + if( !IsIconized() ) { - - cfg->m_FootprintWizardList.width = GetSize().x; - cfg->m_FootprintWizardList.height = GetSize().y; + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ) ) + { + cfg->m_FootprintWizardList.width = GetSize().x; + cfg->m_FootprintWizardList.height = GetSize().y; + } } } diff --git a/pcbnew/dialogs/dialog_plot.cpp b/pcbnew/dialogs/dialog_plot.cpp index db05f8b430..aedd29366e 100644 --- a/pcbnew/dialogs/dialog_plot.cpp +++ b/pcbnew/dialogs/dialog_plot.cpp @@ -1209,10 +1209,9 @@ void DIALOG_PLOT::Plot( wxCommandEvent& event ) applyPlotSettings(); - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - PCBNEW_SETTINGS* cfg = mgr.GetAppSettings( "pcbnew" ); + PCBNEW_SETTINGS* cfg = GetAppSettings( "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 ) ); diff --git a/pcbnew/dialogs/dialog_render_job.cpp b/pcbnew/dialogs/dialog_render_job.cpp index 4d46c16e4c..12f94c4e75 100644 --- a/pcbnew/dialogs/dialog_render_job.cpp +++ b/pcbnew/dialogs/dialog_render_job.cpp @@ -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( "3d_viewer" ) ) + if( EDA_3D_VIEWER_SETTINGS* cfg = GetAppSettings( "3d_viewer" ) ) { for( const LAYER_PRESET_3D& preset : cfg->m_LayerPresets ) m_presetCtrl->Append( preset.name ); diff --git a/pcbnew/dialogs/panel_display_options.cpp b/pcbnew/dialogs/panel_display_options.cpp index 31ae46afdc..9f6e206d97 100644 --- a/pcbnew/dialogs/panel_display_options.cpp +++ b/pcbnew/dialogs/panel_display_options.cpp @@ -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" ); - - loadPCBSettings( cfg ); - } + loadPCBSettings( GetAppSettings( "pcbnew" ) ); else - { - FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "fpedit" ); - - loadFPSettings( cfg ); - } + loadFPSettings( GetAppSettings( "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" ); + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "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( "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( "fpedit" ) ) { - PCB_LAYER_ID layer = static_cast( table->GetValueAsLong( i, 0 ) ); - wxString orig_name = LSET::Name( static_cast( 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( table->GetValueAsLong( i, 0 ) ); + wxString orig_name = LSET::Name( static_cast( layer ) ); + wxString name = table->GetValue( i, 1 ); + + if( layer >= 0 && IsUserLayer( layer ) && !name.IsEmpty() ) + cfg->m_DesignSettings.m_UserLayerNames.emplace( orig_name.ToStdString(), name ); + } } } diff --git a/pcbnew/dialogs/panel_edit_options.cpp b/pcbnew/dialogs/panel_edit_options.cpp index 02534589da..a2d33290f2 100644 --- a/pcbnew/dialogs/panel_edit_options.cpp +++ b/pcbnew/dialogs/panel_edit_options.cpp @@ -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( "fpedit" ); - - loadFPSettings( cfg ); - } + loadFPSettings( GetAppSettings( "fpedit" ) ); else - { - PCBNEW_SETTINGS* cfg = mgr.GetAppSettings( "pcbnew" ); - - loadPCBSettings( cfg ); - } + loadPCBSettings( GetAppSettings( "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( "fpedit" ); + if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "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" ); + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "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( m_magneticPadChoice->GetSelection() ); + cfg->m_MagneticItems.tracks = static_cast( m_magneticTrackChoice->GetSelection() ); + cfg->m_MagneticItems.graphics = !m_magneticGraphicsChoice->GetSelection(); - cfg->m_MagneticItems.pads = static_cast( m_magneticPadChoice->GetSelection() ); - cfg->m_MagneticItems.tracks = static_cast( 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; diff --git a/pcbnew/dialogs/panel_fp_editor_color_settings.cpp b/pcbnew/dialogs/panel_fp_editor_color_settings.cpp index e2384d0cfd..58600a8f02 100644 --- a/pcbnew/dialogs/panel_fp_editor_color_settings.cpp +++ b/pcbnew/dialogs/panel_fp_editor_color_settings.cpp @@ -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( "fpedit" ); - COLOR_SETTINGS* current = mgr.GetColorSettings( cfg->m_ColorTheme ); + FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "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( "fpedit" ); - - cfg->m_ColorTheme = m_currentSettings->GetFilename(); + if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "fpedit" ) ) + cfg->m_ColorTheme = m_currentSettings->GetFilename(); return true; } diff --git a/pcbnew/dialogs/panel_fp_editor_field_defaults.cpp b/pcbnew/dialogs/panel_fp_editor_field_defaults.cpp index 06c8f24a12..0135b1b600 100644 --- a/pcbnew/dialogs/panel_fp_editor_field_defaults.cpp +++ b/pcbnew/dialogs/panel_fp_editor_field_defaults.cpp @@ -169,8 +169,7 @@ public: static FOOTPRINT_EDITOR_SETTINGS& GetPgmSettings() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - return *mgr.GetAppSettings( "fpedit" ); + return *GetAppSettings( "fpedit" ); } diff --git a/pcbnew/dialogs/panel_fp_editor_graphics_defaults.cpp b/pcbnew/dialogs/panel_fp_editor_graphics_defaults.cpp index 0b64d08ce1..25d2c1e72a 100644 --- a/pcbnew/dialogs/panel_fp_editor_graphics_defaults.cpp +++ b/pcbnew/dialogs/panel_fp_editor_graphics_defaults.cpp @@ -60,8 +60,7 @@ enum static FOOTPRINT_EDITOR_SETTINGS& GetPgmSettings() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - return *mgr.GetAppSettings( "fpedit" ); + return *GetAppSettings( "fpedit" ); } diff --git a/pcbnew/dialogs/panel_fp_lib_table.cpp b/pcbnew/dialogs/panel_fp_lib_table.cpp index f36b6bf9f9..ed63bc8b03 100644 --- a/pcbnew/dialogs/panel_fp_lib_table.cpp +++ b/pcbnew/dialogs/panel_fp_lib_table.cpp @@ -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" ); + 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( grid->GetTable() ); - auto* tableRow = static_cast( 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" ) ) + { + 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( grid->GetTable() ); + auto* tableRow = static_cast( 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" ); - - if( cfg->m_lastFootprintLibDir.IsEmpty() ) - cfg->m_lastFootprintLibDir = PATHS::GetDefaultUserFootprintsPath(); + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "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" ); + PCBNEW_SETTINGS* cfg = GetAppSettings( "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 ) ) { diff --git a/pcbnew/dialogs/panel_fp_properties_3d_model.cpp b/pcbnew/dialogs/panel_fp_properties_3d_model.cpp index a8991da118..a71a82c72d 100644 --- a/pcbnew/dialogs/panel_fp_properties_3d_model.cpp +++ b/pcbnew/dialogs/panel_fp_properties_3d_model.cpp @@ -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" ); + PCBNEW_SETTINGS* cfg = GetAppSettings( "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 ); } diff --git a/pcbnew/dialogs/panel_pcbnew_color_settings.cpp b/pcbnew/dialogs/panel_pcbnew_color_settings.cpp index e6006d8793..18e66582c4 100644 --- a/pcbnew/dialogs/panel_pcbnew_color_settings.cpp +++ b/pcbnew/dialogs/panel_pcbnew_color_settings.cpp @@ -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" ); - COLOR_SETTINGS* current = mgr.GetColorSettings( cfg->m_ColorTheme ); + PCBNEW_SETTINGS* cfg = GetAppSettings( "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" ); - - cfg->m_ColorTheme = m_currentSettings->GetFilename(); + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ) ) + cfg->m_ColorTheme = m_currentSettings->GetFilename(); return true; } diff --git a/pcbnew/drc/drc_test_provider_clearance_base.cpp b/pcbnew/drc/drc_test_provider_clearance_base.cpp index 71670c7fc2..9254e7a759 100644 --- a/pcbnew/drc/drc_test_provider_clearance_base.cpp +++ b/pcbnew/drc/drc_test_provider_clearance_base.cpp @@ -33,12 +33,11 @@ DRC_TEST_PROVIDER_CLEARANCE_BASE::GetGraphicsHandler( const std::vectorGetSettingsManager().GetColorSettings(); + COLOR_SETTINGS* colorSettings = ::GetColorSettings( DEFAULT_THEME ); errorColor = colorSettings->GetColor( LAYER_DRC_ERROR ); } diff --git a/pcbnew/footprint_chooser_frame.cpp b/pcbnew/footprint_chooser_frame.cpp index e0df79406a..f4a292f9c8 100644 --- a/pcbnew/footprint_chooser_frame.cpp +++ b/pcbnew/footprint_chooser_frame.cpp @@ -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( "fpedit" ); - - if( cfg ) - return Pgm().GetSettingsManager().GetColorSettings( cfg->m_ColorTheme ); - else - return Pgm().GetSettingsManager().GetColorSettings(); + FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "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( "3d_viewer" ); - - m_boardAdapter.m_Cfg = cfg; + m_boardAdapter.m_Cfg = GetAppSettings( "3d_viewer" ); // Build the 3D canvas m_preview3DCanvas = new EDA_3D_CANVAS( m_chooserPanel->m_RightPanel, diff --git a/pcbnew/footprint_edit_frame.cpp b/pcbnew/footprint_edit_frame.cpp index 88b2d66e0f..c7032ecc6f 100644 --- a/pcbnew/footprint_edit_frame.cpp +++ b/pcbnew/footprint_edit_frame.cpp @@ -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( "fpedit-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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( "fpedit" ); - - for( const PCB_LAYER_ID& user : LSET::UserDefinedLayersMask() ) + if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "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( "fpedit" ); - } + m_editorSettings = GetAppSettings( "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( "fpedit" ); + if( FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "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 ); diff --git a/pcbnew/footprint_viewer_frame.cpp b/pcbnew/footprint_viewer_frame.cpp index 2212ccda75..a1d4d9692c 100644 --- a/pcbnew/footprint_viewer_frame.cpp +++ b/pcbnew/footprint_viewer_frame.cpp @@ -220,7 +220,7 @@ FOOTPRINT_VIEWER_FRAME::FOOTPRINT_VIEWER_FRAME( KIWAY* aKiway, wxWindow* aParent setupUIConditions(); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "fpviewer-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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( 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( "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( 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( "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( "fpedit" ); - - if( cfg ) - return mgr.GetColorSettings( cfg->m_ColorTheme ); - else - return mgr.GetColorSettings(); + FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "fpedit" ); + return ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME ); } diff --git a/pcbnew/footprint_wizard_frame.cpp b/pcbnew/footprint_wizard_frame.cpp index b0d91ab6de..01fbbf52df 100644 --- a/pcbnew/footprint_wizard_frame.cpp +++ b/pcbnew/footprint_wizard_frame.cpp @@ -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( "fpwizard-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "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 ); } diff --git a/pcbnew/grid_layer_box_helpers.cpp b/pcbnew/grid_layer_box_helpers.cpp index f249ebd2c2..519287c98b 100644 --- a/pcbnew/grid_layer_box_helpers.cpp +++ b/pcbnew/grid_layer_box_helpers.cpp @@ -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( "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( "fpedit" ); - cs = mgr.GetColorSettings( cfg->m_ColorTheme ); - } - // draw the swatch #ifdef __WXMAC__ int size = 14; diff --git a/pcbnew/pcb_base_edit_frame.cpp b/pcbnew/pcb_base_edit_frame.cpp index 2d189b7aba..95592fbefe 100644 --- a/pcbnew/pcb_base_edit_frame.cpp +++ b/pcbnew/pcb_base_edit_frame.cpp @@ -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 ); } diff --git a/pcbnew/pcb_draw_panel_gal.cpp b/pcbnew/pcb_draw_panel_gal.cpp index bdae3c7be0..6b2234607c 100644 --- a/pcbnew/pcb_draw_panel_gal.cpp +++ b/pcbnew/pcb_draw_panel_gal.cpp @@ -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( GetParentEDAFrame() ); if( frame ) - { cs = frame->GetColorSettings(); - } - else - { - auto* app = Pgm().GetSettingsManager().GetAppSettings( "pcbnew" ); - - if( app ) - cs = Pgm().GetSettingsManager().GetColorSettings( app->m_ColorTheme ); - else - cs = Pgm().GetSettingsManager().GetColorSettings(); - } + else if( PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ) ) + cs = ::GetColorSettings( cfg->m_ColorTheme ); wxCHECK_RET( cs, wxT( "null COLOR_SETTINGS" ) ); diff --git a/pcbnew/pcb_edit_frame.cpp b/pcbnew/pcb_edit_frame.cpp index 412f653ba3..5e6a419ff5 100644 --- a/pcbnew/pcb_edit_frame.cpp +++ b/pcbnew/pcb_edit_frame.cpp @@ -248,7 +248,7 @@ PCB_EDIT_FRAME::PCB_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ) : setupTools(); setupUIConditions(); - m_toolbarSettings = Pgm().GetSettingsManager().GetToolbarSettings( "pcbnew-toolbars" ); + m_toolbarSettings = GetToolbarSettings( "pcbnew-toolbars" ); configureToolbars(); RecreateToolbars(); PrepareLayerIndicator( true ); diff --git a/pcbnew/pcb_marker.cpp b/pcbnew/pcb_marker.cpp index 6e292d95a7..26e299adfc 100644 --- a/pcbnew/pcb_marker.cpp +++ b/pcbnew/pcb_marker.cpp @@ -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() ); } diff --git a/pcbnew/pcb_plotter.cpp b/pcbnew/pcb_plotter.cpp index 976e5b43c6..f0002ff79e 100644 --- a/pcbnew/pcb_plotter.cpp +++ b/pcbnew/pcb_plotter.cpp @@ -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" ); - theme = pcbSettings->m_ColorTheme; + if( PCBNEW_SETTINGS* pcbSettings = GetAppSettings( "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() ) { diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index 9c0fbd983e..492931e85e 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -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( "fpedit" ); - - return new PANEL_DISPLAY_OPTIONS( aParent, cfg ); - } + return new PANEL_DISPLAY_OPTIONS( aParent, GetAppSettings( "fpedit" ) ); case PANEL_FP_GRIDS: { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "fpedit" ); + FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "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( "fpedit" ); - - return new PANEL_PCBNEW_DISPLAY_ORIGIN( aParent, cfg, FRAME_FOOTPRINT_EDITOR ); - } + return new PANEL_PCBNEW_DISPLAY_ORIGIN( aParent, GetAppSettings( "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( "fpedit" ); - TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings( "fpedit-toolbars" ); + APP_SETTINGS_BASE* cfg = GetAppSettings( "fpedit" ); + TOOLBAR_SETTINGS* tb = GetToolbarSettings( "fpedit-toolbars" ); std::vector actions; std::vector 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" ); - - return new PANEL_DISPLAY_OPTIONS( aParent, cfg ); - } + return new PANEL_DISPLAY_OPTIONS( aParent, GetAppSettings( "pcbnew" ) ); case PANEL_PCB_GRIDS: { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - PCBNEW_SETTINGS* cfg = mgr.GetAppSettings( "pcbnew" ); + PCBNEW_SETTINGS* cfg = GetAppSettings( "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" ); - - return new PANEL_PCBNEW_DISPLAY_ORIGIN( aParent, cfg, FRAME_PCB_EDITOR ); - } + return new PANEL_PCBNEW_DISPLAY_ORIGIN( aParent, GetAppSettings( "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" ); - TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings( "pcbnew-toolbars" ); + APP_SETTINGS_BASE* cfg = GetAppSettings( "pcbnew" ); + TOOLBAR_SETTINGS* tb = GetToolbarSettings( "pcbnew-toolbars" ); std::vector actions; std::vector 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( "3d_viewer" ); - TOOLBAR_SETTINGS* tb = mgr.GetToolbarSettings( "3d_viewer-toolbars" ); + { + APP_SETTINGS_BASE* cfg = GetAppSettings( "3d_viewer" ); + TOOLBAR_SETTINGS* tb = GetToolbarSettings( "3d_viewer-toolbars" ); - std::vector actions; - std::vector controls; + std::vector actions; + std::vector 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" ), false ); + mgr.FlushAndRelease( GetAppSettings( "cvpcb" ), false ); mgr.FlushAndRelease( KifaceSettings(), false ); - mgr.FlushAndRelease( mgr.GetAppSettings( "fpedit" ), false ); - mgr.FlushAndRelease( mgr.GetAppSettings( "3d_viewer" ), false ); + mgr.FlushAndRelease( GetAppSettings( "fpedit" ), false ); + mgr.FlushAndRelease( GetAppSettings( "3d_viewer" ), false ); return false; } diff --git a/pcbnew/pcbnew_jobs_handler.cpp b/pcbnew/pcbnew_jobs_handler.cpp index ae31face32..8e0b33f326 100644 --- a/pcbnew/pcbnew_jobs_handler.cpp +++ b/pcbnew/pcbnew_jobs_handler.cpp @@ -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( "3d_viewer" ) ) + if( EDA_3D_VIEWER_SETTINGS* userCfg = GetAppSettings( "3d_viewer" ) ) { cfg.m_Render = userCfg->m_Render; cfg.m_Camera = userCfg->m_Camera; diff --git a/pcbnew/pcbnew_printout.cpp b/pcbnew/pcbnew_printout.cpp index 938519a589..f50d6abb21 100644 --- a/pcbnew/pcbnew_printout.cpp +++ b/pcbnew/pcbnew_printout.cpp @@ -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" ); - - if( cfg ) + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ) ) { m_DrillMarks = static_cast( cfg->m_Plot.pads_drill_mode ); m_Pagination = static_cast( 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" ); - - if( cfg ) + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ) ) { cfg->m_Plot.pads_drill_mode = (int)m_DrillMarks; cfg->m_Plot.all_layers_on_one_page = m_Pagination; diff --git a/pcbnew/pcbnew_settings.cpp b/pcbnew/pcbnew_settings.cpp index c6529d9865..c1d76fea22 100644 --- a/pcbnew/pcbnew_settings.cpp +++ b/pcbnew/pcbnew_settings.cpp @@ -986,12 +986,12 @@ bool PCBNEW_SETTINGS::MigrateFromLegacy( wxConfigBase* aCfg ) } // Footprint editor settings were stored in pcbnew config file. Migrate them here. - FOOTPRINT_EDITOR_SETTINGS* fpedit = mgr.GetAppSettings( "fpedit" ); + FOOTPRINT_EDITOR_SETTINGS* fpedit = GetAppSettings( "fpedit" ); fpedit->MigrateFromLegacy( aCfg ); fpedit->Load(); // Same with 3D viewer - EDA_3D_VIEWER_SETTINGS* viewer3d = mgr.GetAppSettings( "3d_viewer" ); + EDA_3D_VIEWER_SETTINGS* viewer3d = GetAppSettings( "3d_viewer" ); viewer3d->MigrateFromLegacy( aCfg ); viewer3d->Load(); diff --git a/pcbnew/python/scripting/pcbnew_action_plugins.cpp b/pcbnew/python/scripting/pcbnew_action_plugins.cpp index f19ac1306d..abacebfde3 100644 --- a/pcbnew/python/scripting/pcbnew_action_plugins.cpp +++ b/pcbnew/python/scripting/pcbnew_action_plugins.cpp @@ -545,33 +545,34 @@ void PCB_EDIT_FRAME::addActionPluginTools( ACTION_TOOLBAR* aToolbar ) std::vector PCB_EDIT_FRAME::GetOrderedActionPlugins() { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - PCBNEW_SETTINGS* cfg = mgr.GetAppSettings( "pcbnew" ); - - std::vector plugins; + PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ); + std::vector plugins; std::vector orderedPlugins; for( int i = 0; i < ACTION_PLUGINS::GetActionsCount(); i++ ) plugins.push_back( ACTION_PLUGINS::GetAction( i ) ); // First add plugins that have entries in settings - for( const auto& pair : cfg->m_VisibleActionPlugins ) + if( cfg ) { - auto loc = std::find_if( plugins.begin(), plugins.end(), - [pair] ( ACTION_PLUGIN* plugin ) - { - return plugin->GetPluginPath() == pair.first; - } ); - - if( loc != plugins.end() ) + for( const auto& [path, show] : cfg->m_VisibleActionPlugins ) { - orderedPlugins.push_back( *loc ); - plugins.erase( loc ); + auto loc = std::find_if( plugins.begin(), plugins.end(), + [&path] ( ACTION_PLUGIN* plugin ) + { + return plugin->GetPluginPath() == path; + } ); + + if( loc != plugins.end() ) + { + orderedPlugins.push_back( *loc ); + plugins.erase( loc ); + } } } // Now append new plugins that have not been configured yet - for( auto remaining_plugin : plugins ) + for( ACTION_PLUGIN* remaining_plugin : plugins ) orderedPlugins.push_back( remaining_plugin ); // Finally append API plugins @@ -582,22 +583,21 @@ std::vector PCB_EDIT_FRAME::GetOrderedActionPlugins() } -bool PCB_EDIT_FRAME::GetActionPluginButtonVisible( const wxString& aPluginPath, - bool aPluginDefault ) +bool PCB_EDIT_FRAME::GetActionPluginButtonVisible( const wxString& aPluginPath, bool aPluginDefault ) { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - PCBNEW_SETTINGS* cfg = mgr.GetAppSettings( "pcbnew" ); - - for( const auto& [path, visible] : cfg->m_VisibleActionPlugins ) + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ) ) { - if( path == aPluginPath ) - return visible; - } + for( const auto& [path, visible] : cfg->m_VisibleActionPlugins ) + { + if( path == aPluginPath ) + return visible; + } - for( const auto& [identifier, visible] : cfg->m_Plugins.actions ) - { - if( identifier == aPluginPath ) - return visible; + for( const auto& [identifier, visible] : cfg->m_Plugins.actions ) + { + if( identifier == aPluginPath ) + return visible; + } } // Plugin is not in settings, return default. diff --git a/pcbnew/sel_layer.cpp b/pcbnew/sel_layer.cpp index 7e3bdd4b54..7d8b469b2f 100644 --- a/pcbnew/sel_layer.cpp +++ b/pcbnew/sel_layer.cpp @@ -67,9 +67,8 @@ COLOR4D PCB_LAYER_PRESENTATION::getLayerColor( int aLayer ) const } else { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "fpedit" ); - COLOR_SETTINGS* current = mgr.GetColorSettings( cfg->m_ColorTheme ); + FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "fpedit" ); + COLOR_SETTINGS* current = ::GetColorSettings( cfg ? cfg->m_ColorTheme : DEFAULT_THEME ); return current->GetColor( aLayer ); } diff --git a/pcbnew/tools/drawing_tool.cpp b/pcbnew/tools/drawing_tool.cpp index bfc5c836b1..6a3e2b3fe8 100644 --- a/pcbnew/tools/drawing_tool.cpp +++ b/pcbnew/tools/drawing_tool.cpp @@ -333,17 +333,7 @@ DRAWING_TOOL::MODE DRAWING_TOOL::GetDrawingMode() const void DRAWING_TOOL::UpdateStatusBar() const { if( m_frame ) - { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - bool constrained; - - if( m_frame->IsType( FRAME_PCB_EDITOR ) ) - constrained = mgr.GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; - else - constrained = mgr.GetAppSettings( "fpedit" )->m_Use45Limit; - - m_frame->DisplayConstraintsMsg( constrained ? _( "Constrain to H, V, 45" ) : wxString( "" ) ); - } + m_frame->DisplayConstraintsMsg( Is45Limited() ? _( "Constrain to H, V, 45" ) : wxString( "" ) ); } diff --git a/pcbnew/tools/pcb_editor_conditions.cpp b/pcbnew/tools/pcb_editor_conditions.cpp index 53f2d22aef..52a18cc7ee 100644 --- a/pcbnew/tools/pcb_editor_conditions.cpp +++ b/pcbnew/tools/pcb_editor_conditions.cpp @@ -199,12 +199,10 @@ bool PCB_EDITOR_CONDITIONS::zoneDisplayModeFunc( const SELECTION& aSelection, PC bool PCB_EDITOR_CONDITIONS::get45degModeFunc( const SELECTION& aSelection, PCB_BASE_FRAME* aFrame ) { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - if( aFrame->IsType( FRAME_PCB_EDITOR ) ) - return mgr.GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; + return GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; else if( aFrame->IsType( FRAME_FOOTPRINT_EDITOR ) ) - return mgr.GetAppSettings( "fpedit" )->m_Use45Limit; + return GetAppSettings( "fpedit" )->m_Use45Limit; else return aFrame->GetViewerSettingsBase()->m_ViewersDisplay.m_Use45Limit; } diff --git a/pcbnew/tools/pcb_tool_base.cpp b/pcbnew/tools/pcb_tool_base.cpp index 91424e7d1f..f226413bf2 100644 --- a/pcbnew/tools/pcb_tool_base.cpp +++ b/pcbnew/tools/pcb_tool_base.cpp @@ -331,12 +331,10 @@ PCB_SELECTION& PCB_TOOL_BASE::selection() bool PCB_TOOL_BASE::Is45Limited() const { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - if( frame()->IsType( FRAME_PCB_EDITOR ) ) - return mgr.GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; + return GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; else - return mgr.GetAppSettings( "fpedit" )->m_Use45Limit; + return GetAppSettings( "fpedit" )->m_Use45Limit; } diff --git a/pcbnew/tools/pcb_viewer_tools.cpp b/pcbnew/tools/pcb_viewer_tools.cpp index 22019f187a..50c7045d03 100644 --- a/pcbnew/tools/pcb_viewer_tools.cpp +++ b/pcbnew/tools/pcb_viewer_tools.cpp @@ -107,12 +107,10 @@ template void Flip( T& aValue ) int PCB_VIEWER_TOOLS::ToggleHV45Mode( const TOOL_EVENT& toolEvent ) { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - if( frame()->IsType( FRAME_PCB_EDITOR ) ) - Flip( mgr.GetAppSettings( "pcbnew" )->m_Use45DegreeLimit ); + Flip( GetAppSettings( "pcbnew" )->m_Use45DegreeLimit ); else if( frame()->IsType( FRAME_FOOTPRINT_EDITOR ) ) - Flip( mgr.GetAppSettings( "fpedit" )->m_Use45Limit ); + Flip( GetAppSettings( "fpedit" )->m_Use45Limit ); else Flip( frame()->GetViewerSettingsBase()->m_ViewersDisplay.m_Use45Limit ); @@ -342,13 +340,12 @@ int PCB_VIEWER_TOOLS::MeasureTool( const TOOL_EVENT& aEvent ) // move or drag when origin set updates rules else if( originSet && ( evt->IsMotion() || evt->IsDrag( BUT_LEFT ) ) ) { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - bool force45Deg; + bool force45Deg; if( frame()->IsType( FRAME_PCB_EDITOR ) ) - force45Deg = mgr.GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; + force45Deg = GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; else if( frame()->IsType( FRAME_FOOTPRINT_EDITOR ) ) - force45Deg = mgr.GetAppSettings( "fpedit" )->m_Use45Limit; + force45Deg = GetAppSettings( "fpedit" )->m_Use45Limit; else force45Deg = frame()->GetViewerSettingsBase()->m_ViewersDisplay.m_Use45Limit; diff --git a/pcbnew/tools/position_relative_tool.cpp b/pcbnew/tools/position_relative_tool.cpp index eddb5036cd..7323a108bf 100644 --- a/pcbnew/tools/position_relative_tool.cpp +++ b/pcbnew/tools/position_relative_tool.cpp @@ -348,13 +348,12 @@ int POSITION_RELATIVE_TOOL::PositionRelativeInteractively( const TOOL_EVENT& aEv // move or drag when origin set updates rules else if( originSet && ( evt->IsMotion() || evt->IsDrag( BUT_LEFT ) ) ) { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - bool force45Deg; + bool force45Deg; if( frame()->IsType( FRAME_PCB_EDITOR ) ) - force45Deg = mgr.GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; + force45Deg = GetAppSettings( "pcbnew" )->m_Use45DegreeLimit; else - force45Deg = mgr.GetAppSettings( "fpedit" )->m_Use45Limit; + force45Deg = GetAppSettings( "fpedit" )->m_Use45Limit; twoPtMgr.SetAngleSnap( force45Deg ); twoPtMgr.SetEnd( cursorPos ); diff --git a/pcbnew/widgets/appearance_controls.cpp b/pcbnew/widgets/appearance_controls.cpp index 2356561b14..d5644baf61 100644 --- a/pcbnew/widgets/appearance_controls.cpp +++ b/pcbnew/widgets/appearance_controls.cpp @@ -1554,8 +1554,7 @@ void APPEARANCE_CONTROLS::rebuildLayers() COLOR4D bgColor = theme->GetColor( LAYER_PCB_BACKGROUND ); bool readOnly = theme->IsReadOnly(); - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - FOOTPRINT_EDITOR_SETTINGS* cfg = mgr.GetAppSettings( "fpedit" ); + FOOTPRINT_EDITOR_SETTINGS* cfg = GetAppSettings( "fpedit" ); #ifdef __WXMAC__ wxSizerItem* m_windowLayersSizerItem = m_panelLayersSizer->GetItem( m_windowLayers ); @@ -1627,10 +1626,8 @@ void APPEARANCE_CONTROLS::rebuildLayers() onLayerVisibilityToggled( static_cast( layerId ) ); } ); - swatch->Bind( COLOR_SWATCH_CHANGED, &APPEARANCE_CONTROLS::OnColorSwatchChanged, - this ); - swatch->SetReadOnlyCallback( std::bind( &APPEARANCE_CONTROLS::onReadOnlySwatch, - this ) ); + swatch->Bind( COLOR_SWATCH_CHANGED, &APPEARANCE_CONTROLS::OnColorSwatchChanged, this ); + swatch->SetReadOnlyCallback( std::bind( &APPEARANCE_CONTROLS::onReadOnlySwatch, this ) ); swatch->SetReadOnly( readOnly ); panel->Bind( wxEVT_RIGHT_DOWN, &APPEARANCE_CONTROLS::rightClickHandler, this ); diff --git a/pcbnew/widgets/panel_footprint_chooser.cpp b/pcbnew/widgets/panel_footprint_chooser.cpp index 457a468397..27168f2dbc 100644 --- a/pcbnew/widgets/panel_footprint_chooser.cpp +++ b/pcbnew/widgets/panel_footprint_chooser.cpp @@ -222,8 +222,7 @@ PANEL_FOOTPRINT_CHOOSER::~PANEL_FOOTPRINT_CHOOSER() Unbind( EVT_LIBITEM_SELECTED, &PANEL_FOOTPRINT_CHOOSER::onFootprintSelected, this ); Unbind( EVT_LIBITEM_CHOSEN, &PANEL_FOOTPRINT_CHOOSER::onFootprintChosen, this ); - m_details->Disconnect( wxEVT_CHAR_HOOK, - wxKeyEventHandler( PANEL_FOOTPRINT_CHOOSER::OnDetailsCharHook ), + m_details->Disconnect( wxEVT_CHAR_HOOK, wxKeyEventHandler( PANEL_FOOTPRINT_CHOOSER::OnDetailsCharHook ), nullptr, this ); // I am not sure the following two lines are necessary, but they will not hurt anyone @@ -232,17 +231,7 @@ PANEL_FOOTPRINT_CHOOSER::~PANEL_FOOTPRINT_CHOOSER() delete m_dbl_click_timer; delete m_open_libs_timer; - PCBNEW_SETTINGS* cfg = nullptr; - try - { - cfg = Pgm().GetSettingsManager().GetAppSettings( "pcbnew" ); - } - catch( const std::runtime_error& e ) - { - wxFAIL_MSG( e.what() ); - } - - if( cfg ) + if( PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ) ) { // Save any changes to column widths, etc. m_adapter->SaveSettings(); @@ -275,7 +264,7 @@ void PANEL_FOOTPRINT_CHOOSER::onMenuClose( wxMenuEvent& aEvent ) void PANEL_FOOTPRINT_CHOOSER::FinishSetup() { - if( auto* settings = Pgm().GetSettingsManager().GetAppSettings( "pcbnew" ) ) + if( PCBNEW_SETTINGS* settings = GetAppSettings( "pcbnew" ) ) { auto horizPixelsFromDU = [&]( int x ) -> int diff --git a/pcbnew/widgets/pcb_design_block_preview_widget.cpp b/pcbnew/widgets/pcb_design_block_preview_widget.cpp index d5cd56d643..722658ce9c 100644 --- a/pcbnew/widgets/pcb_design_block_preview_widget.cpp +++ b/pcbnew/widgets/pcb_design_block_preview_widget.cpp @@ -48,11 +48,10 @@ PCB_DESIGN_BLOCK_PREVIEW_WIDGET::PCB_DESIGN_BLOCK_PREVIEW_WIDGET( wxWindow* aPar DESIGN_BLOCK_PREVIEW_WIDGET( aParent ), m_preview( nullptr ), m_status( nullptr ), m_statusPanel( nullptr ), m_statusSizer( nullptr ), m_previewItem( nullptr ) { - SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager(); - COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings(); - PCBNEW_SETTINGS* app_settings = mgr.GetAppSettings( "pcbnew" ); + COMMON_SETTINGS* common_settings = Pgm().GetCommonSettings(); + PCBNEW_SETTINGS* cfg = GetAppSettings( "pcbnew" ); - m_galDisplayOptions.ReadConfig( *common_settings, app_settings->m_Window, this ); + m_galDisplayOptions.ReadConfig( *common_settings, cfg->m_Window, this ); m_galDisplayOptions.m_forceDisplayCursor = false; m_preview = FOOTPRINT_PREVIEW_PANEL::New( &aFrame->Kiway(), this, aFrame ); @@ -71,8 +70,8 @@ PCB_DESIGN_BLOCK_PREVIEW_WIDGET::PCB_DESIGN_BLOCK_PREVIEW_WIDGET( wxWindow* aPar KIGFX::VIEW* view = m_preview->GetView(); auto settings = static_cast( 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(); diff --git a/qa/qa_utils/pcb_test_frame.cpp b/qa/qa_utils/pcb_test_frame.cpp index c4820e6f88..8952784dca 100644 --- a/qa/qa_utils/pcb_test_frame.cpp +++ b/qa/qa_utils/pcb_test_frame.cpp @@ -203,7 +203,7 @@ void PCB_TEST_FRAME_BASE::LoadSettings() mgr.RegisterSettings( new PCBNEW_SETTINGS ); mgr.RegisterSettings( new CVPCB_SETTINGS ); - mgr.GetColorSettings()->Load(); + mgr.GetColorSettings( DEFAULT_THEME )->Load(); } void PCB_TEST_FRAME_BASE::SetSelectionHook( std::function aHook )