Browse Source

Make sure appearance panel builds after project has been loaded

OnBoardChanged must run after LoadProjectSettings.
Move the local overrides to PCB_EDIT_FRAME::onBoardLoaded
so that they are run after the panel is initialized.
pull/16/head
Jon Evans 5 years ago
parent
commit
67a5ed15c7
  1. 5
      pcbnew/files.cpp
  2. 9
      pcbnew/pcb_edit_frame.cpp
  3. 4
      pcbnew/pcbnew_config.cpp

5
pcbnew/files.cpp

@ -643,11 +643,12 @@ bool PCB_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
GetBoard()->BuildConnectivity();
Compile_Ratsnest( true );
onBoardLoaded();
// Load project settings after setting up board; some of them depend on the nets list
LoadProjectSettings();
// Syncs the UI (appearance panel, etc) with the loaded board and project
onBoardLoaded();
// Refresh the 3D view, if any
EDA_3D_VIEWER* draw3DFrame = Get3DViewerFrame();

9
pcbnew/pcb_edit_frame.cpp

@ -49,6 +49,7 @@
#include <pcb_draw_panel_gal.h>
#include <functional>
#include <project/project_file.h>
#include <project/project_local_settings.h>
#include <project/net_settings.h>
#include <settings/common_settings.h>
#include <settings/settings_manager.h>
@ -1021,6 +1022,14 @@ void PCB_EDIT_FRAME::onBoardLoaded()
m_appearancePanel->OnBoardChanged();
// Apply saved display state to the appearance panel after it has been set up
PROJECT_LOCAL_SETTINGS& localSettings = Prj().GetLocalSettings();
m_appearancePanel->ApplyLayerPreset( localSettings.m_ActiveLayerPreset );
if( GetBoard()->GetDesignSettings().IsLayerEnabled( localSettings.m_ActiveLayer ) )
SetActiveLayer( localSettings.m_ActiveLayer );
// Update the tracks / vias available sizes list:
ReCreateAuxiliaryToolbar();

4
pcbnew/pcbnew_config.cpp

@ -125,7 +125,6 @@ bool PCB_EDIT_FRAME::LoadProjectSettings()
}
m_appearancePanel->SetUserLayerPresets( project.m_LayerPresets );
m_appearancePanel->ApplyLayerPreset( localSettings.m_ActiveLayerPreset );
SELECTION_FILTER_OPTIONS& filterOpts = GetToolManager()->GetTool<SELECTION_TOOL>()->GetFilter();
@ -141,9 +140,6 @@ bool PCB_EDIT_FRAME::LoadProjectSettings()
opts.m_ZoneOpacity = localSettings.m_ZoneOpacity;
SetDisplayOptions( opts );
if( GetBoard()->GetDesignSettings().IsLayerEnabled( localSettings.m_ActiveLayer ) )
SetActiveLayer( localSettings.m_ActiveLayer );
wxFileName fn( GetCurrentFileName() );
fn.MakeRelativeTo( Prj().GetProjectPath() );
LoadWindowState( fn.GetFullPath() );

Loading…
Cancel
Save