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:
Jon Evans
2026-03-08 10:07:39 -04:00
parent 92bb000ce6
commit e761038f16
3 changed files with 7 additions and 45 deletions
+6 -42
View File
@@ -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 ) );
-3
View File
@@ -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
+1
View File
@@ -169,6 +169,7 @@ void SCHEMATIC::Reset()
ensureVirtualRoot();
ensureDefaultTopLevelSheet();
loadBusAliasesFromProject();
}