From f088d4d762e2c00d4e8420eb1a2345601b8112d1 Mon Sep 17 00:00:00 2001 From: Jeff Young Date: Mon, 24 Jun 2019 10:22:49 +0100 Subject: [PATCH] Add env-var setting to CommonSettingsChanged(). Fixes: lp:1804925 * https://bugs.launchpad.net/kicad/+bug/1804925 --- 3d-viewer/3d_viewer/eda_3d_viewer.cpp | 4 ++-- 3d-viewer/3d_viewer/eda_3d_viewer.h | 2 +- common/eda_base_frame.cpp | 4 ++-- common/eda_draw_frame.cpp | 4 ++-- common/kiway.cpp | 6 +++--- eeschema/dialogs/panel_sym_lib_table.cpp | 1 - eeschema/libedit/lib_edit_frame.cpp | 8 ++++++-- eeschema/libedit/lib_edit_frame.h | 2 +- eeschema/sch_edit_frame.cpp | 4 ++-- eeschema/sch_edit_frame.h | 2 +- eeschema/viewlib_frame.cpp | 9 +++++++++ eeschema/viewlib_frame.h | 1 + gerbview/gerbview_frame.cpp | 4 ++-- gerbview/gerbview_frame.h | 2 +- include/eda_base_frame.h | 2 +- include/eda_draw_frame.h | 2 +- include/kiway.h | 2 +- include/pcb_base_frame.h | 2 +- kicad/kicad_manager_frame.cpp | 2 +- kicad/kicad_manager_frame.h | 2 +- pcbnew/footprint_edit_frame.cpp | 7 +++++-- pcbnew/footprint_edit_frame.h | 2 +- pcbnew/footprint_viewer_frame.cpp | 9 +++++++++ pcbnew/footprint_viewer_frame.h | 1 + pcbnew/pcb_base_frame.cpp | 6 +++--- pcbnew/pcb_edit_frame.cpp | 4 ++-- pcbnew/pcb_edit_frame.h | 2 +- pcbnew/pcbnew.cpp | 5 ++++- 28 files changed, 65 insertions(+), 36 deletions(-) diff --git a/3d-viewer/3d_viewer/eda_3d_viewer.cpp b/3d-viewer/3d_viewer/eda_3d_viewer.cpp index f2b6435a59..a86c150ef9 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer.cpp +++ b/3d-viewer/3d_viewer/eda_3d_viewer.cpp @@ -863,12 +863,12 @@ void EDA_3D_VIEWER::SaveSettings( wxConfigBase *aCfg ) } -void EDA_3D_VIEWER::CommonSettingsChanged() +void EDA_3D_VIEWER::CommonSettingsChanged( bool aEnvVarsChanged ) { wxLogTrace( m_logTrace, "EDA_3D_VIEWER::CommonSettingsChanged" ); // Regen menu bars, etc - EDA_BASE_FRAME::CommonSettingsChanged(); + EDA_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged ); // There is no base class that handles toolbars for this frame ReCreateMainToolbar(); diff --git a/3d-viewer/3d_viewer/eda_3d_viewer.h b/3d-viewer/3d_viewer/eda_3d_viewer.h index e9d2b0e3c1..faeabbc317 100644 --- a/3d-viewer/3d_viewer/eda_3d_viewer.h +++ b/3d-viewer/3d_viewer/eda_3d_viewer.h @@ -149,7 +149,7 @@ class EDA_3D_VIEWER : public KIWAY_PLAYER * need to do this manually from the PCB frame because the 3D viewer isn't * updated via the #KIWAY. */ - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; private: /// Called when user press the File->Exit diff --git a/common/eda_base_frame.cpp b/common/eda_base_frame.cpp index 293dc5553a..41f438ad8c 100644 --- a/common/eda_base_frame.cpp +++ b/common/eda_base_frame.cpp @@ -317,7 +317,7 @@ void EDA_BASE_FRAME::ShowChangedLanguage() } -void EDA_BASE_FRAME::CommonSettingsChanged() +void EDA_BASE_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { GetToolManager()->GetActionManager()->UpdateHotKeys( false ); @@ -539,7 +539,7 @@ void EDA_BASE_FRAME::OnPreferences( wxCommandEvent& event ) static_cast( manager )->InstallPreferences( &dlg, hotkeysPanel ); if( dlg.ShowModal() == wxID_OK ) - dlg.Kiway().CommonSettingsChanged(); + dlg.Kiway().CommonSettingsChanged( false ); } diff --git a/common/eda_draw_frame.cpp b/common/eda_draw_frame.cpp index ff442c133f..3522e6a69b 100644 --- a/common/eda_draw_frame.cpp +++ b/common/eda_draw_frame.cpp @@ -204,9 +204,9 @@ void EDA_DRAW_FRAME::unitsChangeRefresh() } -void EDA_DRAW_FRAME::CommonSettingsChanged() +void EDA_DRAW_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { - EDA_BASE_FRAME::CommonSettingsChanged(); + EDA_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged ); wxConfigBase* settings = Pgm().CommonSettings(); KIGFX::VIEW_CONTROLS* viewControls = GetCanvas()->GetViewControls(); diff --git a/common/kiway.cpp b/common/kiway.cpp index 15efde30cb..fcd81114f9 100644 --- a/common/kiway.cpp +++ b/common/kiway.cpp @@ -448,7 +448,7 @@ void KIWAY::SetLanguage( int aLanguage ) } } -void KIWAY::CommonSettingsChanged() +void KIWAY::CommonSettingsChanged( bool aEnvVarsChanged ) { #if 1 if( m_ctl & KFCTL_CPP_PROJECT_SUITE ) @@ -459,7 +459,7 @@ void KIWAY::CommonSettingsChanged() EDA_BASE_FRAME* top = static_cast( m_top ); if( top ) - top->CommonSettingsChanged(); + top->CommonSettingsChanged( aEnvVarsChanged ); } #endif @@ -468,7 +468,7 @@ void KIWAY::CommonSettingsChanged() KIWAY_PLAYER* frame = GetPlayerFrame( ( FRAME_T )i ); if( frame ) - frame->CommonSettingsChanged(); + frame->CommonSettingsChanged( aEnvVarsChanged ); } } diff --git a/eeschema/dialogs/panel_sym_lib_table.cpp b/eeschema/dialogs/panel_sym_lib_table.cpp index 929cdb53f6..526cf89c52 100644 --- a/eeschema/dialogs/panel_sym_lib_table.cpp +++ b/eeschema/dialogs/panel_sym_lib_table.cpp @@ -780,7 +780,6 @@ void InvokeSchEditSymbolLibTable( KIWAY* aKiway, wxWindow *aParent ) if( dlg.m_ProjectTableChanged ) { - try { projectTable->Save( projectTableFn.GetFullPath() ); diff --git a/eeschema/libedit/lib_edit_frame.cpp b/eeschema/libedit/lib_edit_frame.cpp index f2e891397f..b6ef3a0a22 100644 --- a/eeschema/libedit/lib_edit_frame.cpp +++ b/eeschema/libedit/lib_edit_frame.cpp @@ -699,13 +699,17 @@ void LIB_EDIT_FRAME::emptyScreen() } -void LIB_EDIT_FRAME::CommonSettingsChanged() +void LIB_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { - SCH_BASE_FRAME::CommonSettingsChanged(); + SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged ); ReCreateHToolbar(); ReCreateVToolbar(); ReCreateOptToolbar(); + + if( aEnvVarsChanged ) + SyncLibraries( true ); + Layout(); SendSizeEvent(); } diff --git a/eeschema/libedit/lib_edit_frame.h b/eeschema/libedit/lib_edit_frame.h index 5dd41c1b80..b9dc913f32 100644 --- a/eeschema/libedit/lib_edit_frame.h +++ b/eeschema/libedit/lib_edit_frame.h @@ -420,7 +420,7 @@ public: /** * Called after the preferences dialog is run. */ - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; void ShowChangedLanguage() override; diff --git a/eeschema/sch_edit_frame.cpp b/eeschema/sch_edit_frame.cpp index b7e969f640..2fab9bfa96 100644 --- a/eeschema/sch_edit_frame.cpp +++ b/eeschema/sch_edit_frame.cpp @@ -1091,9 +1091,9 @@ void SCH_EDIT_FRAME::RecalculateConnections( bool aDoCleanup ) } -void SCH_EDIT_FRAME::CommonSettingsChanged() +void SCH_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { - SCH_BASE_FRAME::CommonSettingsChanged(); + SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged ); ReCreateHToolbar(); ReCreateVToolbar(); diff --git a/eeschema/sch_edit_frame.h b/eeschema/sch_edit_frame.h index 126f3e1fef..a904a06a48 100644 --- a/eeschema/sch_edit_frame.h +++ b/eeschema/sch_edit_frame.h @@ -1016,7 +1016,7 @@ public: /** * Called after the preferences dialog is run. */ - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; void ShowChangedLanguage() override; diff --git a/eeschema/viewlib_frame.cpp b/eeschema/viewlib_frame.cpp index 0aef7f9c5d..22d32fd627 100644 --- a/eeschema/viewlib_frame.cpp +++ b/eeschema/viewlib_frame.cpp @@ -692,6 +692,15 @@ void LIB_VIEW_FRAME::SaveSettings( wxConfigBase* aCfg ) } +void LIB_VIEW_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) +{ + SCH_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged ); + + if( aEnvVarsChanged ) + ReCreateListLib(); +} + + void LIB_VIEW_FRAME::OnActivate( wxActivateEvent& event ) { bool changed = m_libList ? ReCreateListLib() : false; diff --git a/eeschema/viewlib_frame.h b/eeschema/viewlib_frame.h index c4c728e048..797a98f253 100644 --- a/eeschema/viewlib_frame.h +++ b/eeschema/viewlib_frame.h @@ -102,6 +102,7 @@ public: void LoadSettings( wxConfigBase* aCfg ) override; void SaveSettings( wxConfigBase* aCfg ) override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; /** * Set a filter to display only libraries and/or components which match the filter. diff --git a/gerbview/gerbview_frame.cpp b/gerbview/gerbview_frame.cpp index 5e0c2b71e2..081daba231 100644 --- a/gerbview/gerbview_frame.cpp +++ b/gerbview/gerbview_frame.cpp @@ -1250,9 +1250,9 @@ void GERBVIEW_FRAME::OnUpdateSelectZoom( wxUpdateUIEvent& aEvent ) } -void GERBVIEW_FRAME::CommonSettingsChanged() +void GERBVIEW_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { - EDA_DRAW_FRAME::CommonSettingsChanged(); + EDA_DRAW_FRAME::CommonSettingsChanged( aEnvVarsChanged ); ReCreateHToolbar(); ReCreateOptToolbar(); diff --git a/gerbview/gerbview_frame.h b/gerbview/gerbview_frame.h index af3d6be4ea..51ccf85eed 100644 --- a/gerbview/gerbview_frame.h +++ b/gerbview/gerbview_frame.h @@ -597,7 +597,7 @@ public: /** * Called after the preferences dialog is run. */ - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; void SyncToolbars() override; diff --git a/include/eda_base_frame.h b/include/eda_base_frame.h index 642b855ba4..ea121fbdc6 100644 --- a/include/eda_base_frame.h +++ b/include/eda_base_frame.h @@ -418,7 +418,7 @@ public: * Notification event that some of the common (suite-wide) settings have changed. * Update menus, toolbars, local variables, etc. */ - virtual void CommonSettingsChanged(); + virtual void CommonSettingsChanged( bool aEnvVarsChanged ); /** * Notification to refresh the drawing canvas (if any). diff --git a/include/eda_draw_frame.h b/include/eda_draw_frame.h index 496a97a0b1..f0cd30ccb3 100644 --- a/include/eda_draw_frame.h +++ b/include/eda_draw_frame.h @@ -146,7 +146,7 @@ protected: void unitsChangeRefresh() override; - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; /** * Sets the common key-pair for exiting the application (Ctrl-Q) and ties it diff --git a/include/kiway.h b/include/kiway.h index 44521fb79b..22e4c9d641 100644 --- a/include/kiway.h +++ b/include/kiway.h @@ -365,7 +365,7 @@ public: * Calls CommonSettingsChanged() on all KIWAY_PLAYERs. * Used after changing suite-wide options such as panning, autosave interval, etc. */ - VTBL_ENTRY void CommonSettingsChanged(); + VTBL_ENTRY void CommonSettingsChanged( bool aEnvVarsChanged ); KIWAY( PGM_BASE* aProgram, int aCtlBits, wxFrame* aTop = NULL ); diff --git a/include/pcb_base_frame.h b/include/pcb_base_frame.h index ddfba92279..ba6a927afe 100644 --- a/include/pcb_base_frame.h +++ b/include/pcb_base_frame.h @@ -392,7 +392,7 @@ public: void LoadSettings( wxConfigBase* aCfg ) override; void SaveSettings( wxConfigBase* aCfg ) override; - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; void OnTogglePadDrawMode( wxCommandEvent& aEvent ); void OnToggleGraphicDrawMode( wxCommandEvent& aEvent ); diff --git a/kicad/kicad_manager_frame.cpp b/kicad/kicad_manager_frame.cpp index 8c2736c5e4..75e62d4ea7 100644 --- a/kicad/kicad_manager_frame.cpp +++ b/kicad/kicad_manager_frame.cpp @@ -462,7 +462,7 @@ void KICAD_MANAGER_FRAME::ShowChangedLanguage() } -void KICAD_MANAGER_FRAME::CommonSettingsChanged() +void KICAD_MANAGER_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { int historySize; Pgm().CommonSettings()->Read( FILE_HISTORY_SIZE_KEY, &historySize, DEFAULT_FILE_HISTORY_SIZE ); diff --git a/kicad/kicad_manager_frame.h b/kicad/kicad_manager_frame.h index eef3573616..345bb07b0d 100644 --- a/kicad/kicad_manager_frame.h +++ b/kicad/kicad_manager_frame.h @@ -136,7 +136,7 @@ public: void SaveSettings( wxConfigBase* aCfg ) override; void ShowChangedLanguage() override; - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; /** * Called by sending a event with id = ID_INIT_WATCHED_PATHS diff --git a/pcbnew/footprint_edit_frame.cpp b/pcbnew/footprint_edit_frame.cpp index 112cc00f1f..0eb9db36ba 100644 --- a/pcbnew/footprint_edit_frame.cpp +++ b/pcbnew/footprint_edit_frame.cpp @@ -822,9 +822,12 @@ void FOOTPRINT_EDIT_FRAME::ActivateGalCanvas() } -void FOOTPRINT_EDIT_FRAME::CommonSettingsChanged() +void FOOTPRINT_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { - PCB_BASE_EDIT_FRAME::CommonSettingsChanged(); + PCB_BASE_EDIT_FRAME::CommonSettingsChanged( aEnvVarsChanged ); + + if( aEnvVarsChanged ) + SyncLibraryTree( true ); Layout(); SendSizeEvent(); diff --git a/pcbnew/footprint_edit_frame.h b/pcbnew/footprint_edit_frame.h index 634759627b..ae9ef96457 100644 --- a/pcbnew/footprint_edit_frame.h +++ b/pcbnew/footprint_edit_frame.h @@ -325,7 +325,7 @@ public: /** * Called after the preferences dialog is run. */ - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; /** * Synchronize the footprint library tree to the current state of the footprint library diff --git a/pcbnew/footprint_viewer_frame.cpp b/pcbnew/footprint_viewer_frame.cpp index 33c68884f2..c59fa2c3fe 100644 --- a/pcbnew/footprint_viewer_frame.cpp +++ b/pcbnew/footprint_viewer_frame.cpp @@ -516,6 +516,15 @@ void FOOTPRINT_VIEWER_FRAME::SaveSettings( wxConfigBase* aCfg ) } +void FOOTPRINT_VIEWER_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) +{ + PCB_BASE_FRAME::CommonSettingsChanged( aEnvVarsChanged ); + + if( aEnvVarsChanged ) + ReCreateLibraryList(); +} + + const wxString FOOTPRINT_VIEWER_FRAME::getCurNickname() { return Prj().GetRString( PROJECT::PCB_FOOTPRINT_VIEWER_NICKNAME ); diff --git a/pcbnew/footprint_viewer_frame.h b/pcbnew/footprint_viewer_frame.h index ef52578b77..aee37b1fb8 100644 --- a/pcbnew/footprint_viewer_frame.h +++ b/pcbnew/footprint_viewer_frame.h @@ -123,6 +123,7 @@ private: void LoadSettings( wxConfigBase* aCfg ) override; void SaveSettings( wxConfigBase* aCfg ) override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; /** * Function OnActivate diff --git a/pcbnew/pcb_base_frame.cpp b/pcbnew/pcb_base_frame.cpp index c96b9c4443..63da2d392e 100644 --- a/pcbnew/pcb_base_frame.cpp +++ b/pcbnew/pcb_base_frame.cpp @@ -773,9 +773,9 @@ void PCB_BASE_FRAME::SaveSettings( wxConfigBase* aCfg ) } -void PCB_BASE_FRAME::CommonSettingsChanged() +void PCB_BASE_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { - EDA_DRAW_FRAME::CommonSettingsChanged(); + EDA_DRAW_FRAME::CommonSettingsChanged( aEnvVarsChanged ); ReCreateHToolbar(); ReCreateAuxiliaryToolbar(); @@ -786,7 +786,7 @@ void PCB_BASE_FRAME::CommonSettingsChanged() EDA_3D_VIEWER* viewer = Get3DViewerFrame(); if( viewer ) - viewer->CommonSettingsChanged(); + viewer->CommonSettingsChanged( aEnvVarsChanged ); } diff --git a/pcbnew/pcb_edit_frame.cpp b/pcbnew/pcb_edit_frame.cpp index d8337fc5a7..8dbdb304f4 100644 --- a/pcbnew/pcb_edit_frame.cpp +++ b/pcbnew/pcb_edit_frame.cpp @@ -1138,9 +1138,9 @@ int PCB_EDIT_FRAME::InstallExchangeModuleFrame( MODULE* aModule, bool updateMode } -void PCB_EDIT_FRAME::CommonSettingsChanged() +void PCB_EDIT_FRAME::CommonSettingsChanged( bool aEnvVarsChanged ) { - PCB_BASE_EDIT_FRAME::CommonSettingsChanged(); + PCB_BASE_EDIT_FRAME::CommonSettingsChanged( aEnvVarsChanged ); ReCreateMicrowaveVToolbar(); diff --git a/pcbnew/pcb_edit_frame.h b/pcbnew/pcb_edit_frame.h index 8cf60ba2dc..9c0d567583 100644 --- a/pcbnew/pcb_edit_frame.h +++ b/pcbnew/pcb_edit_frame.h @@ -1018,7 +1018,7 @@ public: /** * Called after the preferences dialog is run. */ - void CommonSettingsChanged() override; + void CommonSettingsChanged( bool aEnvVarsChanged ) override; void SyncToolbars() override; diff --git a/pcbnew/pcbnew.cpp b/pcbnew/pcbnew.cpp index c4e7d509dc..0238f99eee 100644 --- a/pcbnew/pcbnew.cpp +++ b/pcbnew/pcbnew.cpp @@ -122,7 +122,10 @@ static struct IFACE : public KIFACE_I case DIALOG_CONFIGUREPATHS: { DIALOG_CONFIGURE_PATHS dlg( aParent, aKiway->Prj().Get3DFilenameResolver() ); - dlg.ShowModal(); + + if( dlg.ShowModal() == wxID_OK ) + aKiway->CommonSettingsChanged( true ); + // Dialog has completed; nothing to return. return nullptr; }