Browse Source

Shutdown safety.

(cherry picked from commit 0f19ed5f9f)
9.0
Jeff Young 4 months ago
parent
commit
af44eedbce
  1. 51
      eeschema/sim/simulator_frame.cpp

51
eeschema/sim/simulator_frame.cpp

@ -149,12 +149,10 @@ SIMULATOR_FRAME::SIMULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
LoadSettings( config() );
NGSPICE_SETTINGS* settings = dynamic_cast<NGSPICE_SETTINGS*>( m_simulator->Settings().get() );
std::shared_ptr<NGSPICE_SETTINGS> cfg = Prj().GetProjectFile().m_SchematicSettings->m_NgspiceSettings;
wxCHECK2( settings, /* do nothing in release builds*/ );
if( settings && settings->GetWorkbookFilename().IsEmpty() )
settings->SetCompatibilityMode( NGSPICE_COMPATIBILITY_MODE::LT_PSPICE );
if( cfg->GetWorkbookFilename().IsEmpty() )
cfg->SetCompatibilityMode( NGSPICE_COMPATIBILITY_MODE::LT_PSPICE );
m_simulator->Init();
@ -169,8 +167,7 @@ SIMULATOR_FRAME::SIMULATOR_FRAME( KIWAY* aKiway, wxWindow* aParent ) :
ReCreateHToolbar();
ReCreateMenuBar();
Bind( wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIMULATOR_FRAME::onExit ), this,
wxID_EXIT );
Bind( wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( SIMULATOR_FRAME::onExit ), this, wxID_EXIT );
Bind( EVT_SIM_UPDATE, &SIMULATOR_FRAME::onUpdateSim, this );
Bind( EVT_SIM_REPORT, &SIMULATOR_FRAME::onSimReport, this );
@ -237,44 +234,29 @@ void SIMULATOR_FRAME::ShowChangedLanguage()
void SIMULATOR_FRAME::LoadSettings( APP_SETTINGS_BASE* aCfg )
{
EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
wxASSERT( cfg );
if( cfg )
if( EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg ) )
{
EDA_BASE_FRAME::LoadSettings( cfg );
m_ui->LoadSettings( cfg );
}
PROJECT_FILE& project = Prj().GetProjectFile();
NGSPICE* currentSim = dynamic_cast<NGSPICE*>( m_simulator.get() );
if( currentSim )
m_simulator->Settings() = project.m_SchematicSettings->m_NgspiceSettings;
if( m_simulator )
m_simulator->Settings() = Prj().GetProjectFile().m_SchematicSettings->m_NgspiceSettings;
}
void SIMULATOR_FRAME::SaveSettings( APP_SETTINGS_BASE* aCfg )
{
EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg );
wxASSERT( cfg );
if( cfg )
if( EESCHEMA_SETTINGS* cfg = dynamic_cast<EESCHEMA_SETTINGS*>( aCfg ) )
{
EDA_BASE_FRAME::SaveSettings( cfg );
m_ui->SaveSettings( cfg );
}
PROJECT_FILE& project = Prj().GetProjectFile();
bool modified = Prj().GetProjectFile().m_SchematicSettings->m_NgspiceSettings->SaveToFile();
if( project.m_SchematicSettings )
{
bool modified = project.m_SchematicSettings->m_NgspiceSettings->SaveToFile();
if( m_schematicFrame && modified )
m_schematicFrame->OnModify();
}
if( m_schematicFrame && modified )
m_schematicFrame->OnModify();
}
@ -323,10 +305,11 @@ int SIMULATOR_FRAME::GetCurrentOptions() const
void SIMULATOR_FRAME::UpdateTitle()
{
bool unsaved = true;
bool readOnly = false;
wxString title;
wxFileName filename = Prj().AbsolutePath( m_simulator->Settings()->GetWorkbookFilename() );
bool unsaved = true;
bool readOnly = false;
wxString title;
std::shared_ptr<NGSPICE_SETTINGS> cfg = Prj().GetProjectFile().m_SchematicSettings->m_NgspiceSettings;
wxFileName filename = Prj().AbsolutePath( cfg->GetWorkbookFilename() );
if( filename.IsOk() && filename.FileExists() )
{
@ -658,7 +641,7 @@ void SIMULATOR_FRAME::doCloseWindow()
SaveSettings( config() );
m_simulator->Settings() = nullptr;
m_simulator->Settings().reset();
Destroy();
}

Loading…
Cancel
Save