Remove parallel-path schematic CLI settings manager
This is not necessary, and since 10.0 causes invalid ERC for several reasons: 1) Library loading now relies on grabbing the project path via Pgm().GetSettingsManager() 2) Bus alias definitions now live in the project file, also loaded through Pgm() Also fix an issue where the LoadSchematic helper would wipe out the bus aliases because `SCHEMATIC::Reset` could never be called after the initial creation, but was via `CreateDefaultScreens`. Fixes https://gitlab.com/kicad/code/kicad/-/issues/23326
This commit is contained in:
@@ -40,7 +40,6 @@
|
||||
|
||||
|
||||
SCH_EDIT_FRAME* EESCHEMA_HELPERS::s_SchEditFrame = nullptr;
|
||||
SETTINGS_MANAGER* EESCHEMA_HELPERS::s_SettingsManager = nullptr;
|
||||
|
||||
|
||||
void EESCHEMA_HELPERS::SetSchEditFrame( SCH_EDIT_FRAME* aSchEditFrame )
|
||||
@@ -49,42 +48,6 @@ void EESCHEMA_HELPERS::SetSchEditFrame( SCH_EDIT_FRAME* aSchEditFrame )
|
||||
}
|
||||
|
||||
|
||||
SETTINGS_MANAGER* EESCHEMA_HELPERS::GetSettingsManager()
|
||||
{
|
||||
if( !s_SettingsManager )
|
||||
{
|
||||
if( s_SchEditFrame )
|
||||
{
|
||||
s_SettingsManager = s_SchEditFrame->GetSettingsManager();
|
||||
}
|
||||
else
|
||||
{
|
||||
s_SettingsManager = new SETTINGS_MANAGER();
|
||||
}
|
||||
}
|
||||
|
||||
return s_SettingsManager;
|
||||
}
|
||||
|
||||
|
||||
PROJECT* EESCHEMA_HELPERS::GetDefaultProject( bool aSetActive )
|
||||
{
|
||||
// For some reasons, LoadProject() needs a C locale, so ensure we have the right locale
|
||||
// This is mainly when running QA Python tests
|
||||
LOCALE_IO dummy;
|
||||
|
||||
PROJECT* project = GetSettingsManager()->GetProject( "" );
|
||||
|
||||
if( !project )
|
||||
{
|
||||
GetSettingsManager()->LoadProject( "", aSetActive );
|
||||
project = GetSettingsManager()->GetProject( "" );
|
||||
}
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
|
||||
SCHEMATIC* EESCHEMA_HELPERS::LoadSchematic( const wxString& aFileName, bool aSetActive,
|
||||
bool aForceDefaultProject, PROJECT* aProject, bool aCalculateConnectivity )
|
||||
{
|
||||
@@ -118,10 +81,11 @@ SCHEMATIC* EESCHEMA_HELPERS::LoadSchematic( const wxString& aFileName,
|
||||
LOCALE_IO dummy;
|
||||
|
||||
PROJECT* project = aProject;
|
||||
SETTINGS_MANAGER& mgr = Pgm().GetSettingsManager();
|
||||
|
||||
if( !project )
|
||||
{
|
||||
project = GetSettingsManager()->GetProject( projectPath );
|
||||
project = mgr.GetProject( projectPath );
|
||||
}
|
||||
|
||||
if( !aForceDefaultProject )
|
||||
@@ -130,11 +94,11 @@ SCHEMATIC* EESCHEMA_HELPERS::LoadSchematic( const wxString& aFileName,
|
||||
{
|
||||
if( wxFileExists( projectPath ) )
|
||||
{
|
||||
GetSettingsManager()->LoadProject( projectPath, aSetActive );
|
||||
project = GetSettingsManager()->GetProject( projectPath );
|
||||
mgr.LoadProject( projectPath, aSetActive );
|
||||
project = mgr.GetProject( projectPath );
|
||||
}
|
||||
}
|
||||
else if( s_SchEditFrame && project == &GetSettingsManager()->Prj() )
|
||||
else if( s_SchEditFrame && project == &mgr.Prj() )
|
||||
{
|
||||
// Project is already loaded? Then so is the board
|
||||
return &s_SchEditFrame->Schematic();
|
||||
@@ -143,7 +107,7 @@ SCHEMATIC* EESCHEMA_HELPERS::LoadSchematic( const wxString& aFileName,
|
||||
|
||||
// Board cannot be loaded without a project, so create the default project
|
||||
if( !project || aForceDefaultProject )
|
||||
project = GetDefaultProject( aSetActive );
|
||||
project = &mgr.Prj();
|
||||
|
||||
IO_RELEASER<SCH_IO> pi( SCH_IO_MGR::FindPlugin( aFormat ) );
|
||||
|
||||
|
||||
@@ -41,9 +41,7 @@ class PROJECT;
|
||||
class EESCHEMA_HELPERS
|
||||
{
|
||||
public:
|
||||
static SETTINGS_MANAGER* GetSettingsManager();
|
||||
static void SetSchEditFrame( SCH_EDIT_FRAME* aSchEditFrame );
|
||||
static PROJECT* GetDefaultProject( bool aSetActive );
|
||||
static SCHEMATIC* LoadSchematic( const wxString& aFileName, bool aSetActive,
|
||||
bool aForceDefaultProject,
|
||||
PROJECT* aProject = nullptr,
|
||||
@@ -56,7 +54,6 @@ public:
|
||||
|
||||
private:
|
||||
static SCH_EDIT_FRAME* s_SchEditFrame;
|
||||
static SETTINGS_MANAGER* s_SettingsManager;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -169,6 +169,7 @@ void SCHEMATIC::Reset()
|
||||
|
||||
ensureVirtualRoot();
|
||||
ensureDefaultTopLevelSheet();
|
||||
loadBusAliasesFromProject();
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user