|
|
|
@ -41,7 +41,6 @@ |
|
|
|
#include <fctsys.h>
|
|
|
|
#include <pgm_base.h>
|
|
|
|
#include <kiface_i.h>
|
|
|
|
#include <confirm.h>
|
|
|
|
#include <gestfich.h>
|
|
|
|
#include <wxEeschemaStruct.h>
|
|
|
|
|
|
|
|
@ -79,6 +78,7 @@ public: |
|
|
|
NETLIST_TYPE_ID m_IdNetType; |
|
|
|
wxCheckBox* m_IsCurrentFormat; |
|
|
|
wxCheckBox* m_AddSubPrefix; |
|
|
|
wxCheckBox* m_SpiceUseNetcodeAsNetname; |
|
|
|
wxTextCtrl* m_CommandStringCtrl; |
|
|
|
wxTextCtrl* m_TitleStringCtrl; |
|
|
|
wxButton* m_ButtonCancel; |
|
|
|
@ -144,7 +144,6 @@ private: |
|
|
|
void OnCancelClick( wxCommandEvent& event ); |
|
|
|
void OnNetlistTypeSelection( wxNotebookEvent& event ); |
|
|
|
void SelectDefaultNetlistType( wxCommandEvent& event ); |
|
|
|
void EnableSubcircuitPrefix( wxCommandEvent& event ); |
|
|
|
|
|
|
|
/**
|
|
|
|
* Function OnAddPlugin |
|
|
|
@ -232,11 +231,10 @@ enum id_netlist { |
|
|
|
ID_CREATE_NETLIST = ID_END_EESCHEMA_ID_LIST + 1, |
|
|
|
ID_CURRENT_FORMAT_IS_DEFAULT, |
|
|
|
ID_RUN_SIMULATOR, |
|
|
|
ID_ADD_SUBCIRCUIT_PREFIX |
|
|
|
ID_ADD_SUBCIRCUIT_PREFIX, |
|
|
|
ID_USE_NETCODE_AS_NETNAME |
|
|
|
}; |
|
|
|
|
|
|
|
//Imported function:
|
|
|
|
int TestDuplicateSheetNames( bool aCreateMarker ); |
|
|
|
|
|
|
|
// ID for configuration:
|
|
|
|
#define CUSTOM_NETLIST_TITLE wxT( "CustomNetlistTitle" )
|
|
|
|
@ -252,8 +250,6 @@ BEGIN_EVENT_TABLE( NETLIST_DIALOG, NETLIST_DIALOG_BASE ) |
|
|
|
EVT_BUTTON( ID_CREATE_NETLIST, NETLIST_DIALOG::GenNetlist ) |
|
|
|
EVT_CHECKBOX( ID_CURRENT_FORMAT_IS_DEFAULT, |
|
|
|
NETLIST_DIALOG::SelectDefaultNetlistType ) |
|
|
|
EVT_CHECKBOX( ID_ADD_SUBCIRCUIT_PREFIX, |
|
|
|
NETLIST_DIALOG::EnableSubcircuitPrefix ) |
|
|
|
EVT_BUTTON( ID_RUN_SIMULATOR, NETLIST_DIALOG::RunSimulator ) |
|
|
|
END_EVENT_TABLE() |
|
|
|
|
|
|
|
@ -271,6 +267,7 @@ NETLIST_PAGE_DIALOG::NETLIST_PAGE_DIALOG( wxNotebook* parent, |
|
|
|
m_TitleStringCtrl = NULL; |
|
|
|
m_IsCurrentFormat = NULL; |
|
|
|
m_AddSubPrefix = NULL; |
|
|
|
m_SpiceUseNetcodeAsNetname = NULL; |
|
|
|
m_ButtonCancel = NULL; |
|
|
|
m_NetOption = NULL; |
|
|
|
|
|
|
|
@ -417,12 +414,16 @@ void NETLIST_DIALOG::InstallPageSpice() |
|
|
|
page = m_PanelNetType[PANELSPICE] = |
|
|
|
new NETLIST_PAGE_DIALOG( m_NoteBook, title, NET_TYPE_SPICE ); |
|
|
|
|
|
|
|
|
|
|
|
page->m_AddSubPrefix = new wxCheckBox( page, ID_ADD_SUBCIRCUIT_PREFIX, |
|
|
|
_( "Prefix references 'U' and 'IC' with 'X'" ) ); |
|
|
|
page->m_AddSubPrefix->SetValue( m_Parent->GetAddReferencePrefix() ); |
|
|
|
page->m_AddSubPrefix->SetValue( m_Parent->GetSpiceAddReferencePrefix() ); |
|
|
|
page->m_LeftBoxSizer->Add( page->m_AddSubPrefix, 0, wxGROW | wxALL, 5 ); |
|
|
|
|
|
|
|
page->m_SpiceUseNetcodeAsNetname = new wxCheckBox( page, ID_USE_NETCODE_AS_NETNAME, |
|
|
|
_( "Use net number as net name" ) ); |
|
|
|
page->m_SpiceUseNetcodeAsNetname->SetValue( m_Parent->GetSpiceUseNetcodeAsNetname() ); |
|
|
|
page->m_LeftBoxSizer->Add( page->m_SpiceUseNetcodeAsNetname, 0, wxGROW | wxALL, 5 ); |
|
|
|
|
|
|
|
page->m_LowBoxSizer->Add( new wxStaticText( page, -1, _( "Simulator command:" ) ), 0, |
|
|
|
wxGROW | wxLEFT | wxRIGHT | wxTOP, 5 ); |
|
|
|
|
|
|
|
@ -544,24 +545,12 @@ void NETLIST_DIALOG::OnNetlistTypeSelection( wxNotebookEvent& event ) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void NETLIST_DIALOG::EnableSubcircuitPrefix( wxCommandEvent& event ) |
|
|
|
{ |
|
|
|
|
|
|
|
NETLIST_PAGE_DIALOG* currPage; |
|
|
|
|
|
|
|
currPage = (NETLIST_PAGE_DIALOG*) m_NoteBook->GetCurrentPage(); |
|
|
|
|
|
|
|
if( currPage == NULL || currPage->m_AddSubPrefix == NULL ) |
|
|
|
return; |
|
|
|
|
|
|
|
m_Parent->SetAddReferencePrefix( currPage->m_AddSubPrefix->IsChecked() ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void NETLIST_DIALOG::NetlistUpdateOpt() |
|
|
|
{ |
|
|
|
int ii; |
|
|
|
|
|
|
|
m_Parent->SetSpiceAddReferencePrefix( m_PanelNetType[PANELSPICE]->m_AddSubPrefix->IsChecked() ); |
|
|
|
m_Parent->SetSpiceUseNetcodeAsNetname( m_PanelNetType[PANELSPICE]->m_SpiceUseNetcodeAsNetname->IsChecked() ); |
|
|
|
m_Parent->SetSimulatorCommand( m_PanelNetType[PANELSPICE]->m_CommandStringCtrl->GetValue() ); |
|
|
|
m_Parent->SetNetListFormatName( wxEmptyString ); |
|
|
|
|
|
|
|
@ -601,6 +590,9 @@ void NETLIST_DIALOG::GenNetlist( wxCommandEvent& event ) |
|
|
|
// Set spice netlist options:
|
|
|
|
if( currPage->m_AddSubPrefix->GetValue() ) |
|
|
|
netlist_opt |= NET_USE_X_PREFIX; |
|
|
|
|
|
|
|
if( currPage->m_SpiceUseNetcodeAsNetname->GetValue() ) |
|
|
|
netlist_opt |= NET_USE_NETCODES_AS_NETNAMES; |
|
|
|
break; |
|
|
|
|
|
|
|
case NET_TYPE_CADSTAR: |
|
|
|
@ -695,46 +687,6 @@ bool NETLIST_DIALOG::FilenamePrms( NETLIST_TYPE_ID aNetTypeId, |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool SCH_EDIT_FRAME::CreateNetlist( int aFormat, const wxString& aFullFileName, |
|
|
|
unsigned aNetlistOptions ) |
|
|
|
{ |
|
|
|
SCH_SHEET_LIST sheets; |
|
|
|
sheets.AnnotatePowerSymbols(); |
|
|
|
|
|
|
|
// Performs some controls:
|
|
|
|
if( CheckAnnotate( NULL, 0 ) ) |
|
|
|
{ |
|
|
|
if( !IsOK( NULL, _( "Some items are not annotated\n\
|
|
|
|
Do you want to annotate schematic?" ) ) ) |
|
|
|
return false; |
|
|
|
|
|
|
|
// Schematic must be annotated: call Annotate dialog:
|
|
|
|
wxCommandEvent event; |
|
|
|
OnAnnotate( event ); |
|
|
|
|
|
|
|
if( CheckAnnotate( NULL, 0 ) ) |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
// Test duplicate sheet names:
|
|
|
|
if( TestDuplicateSheetNames( false ) > 0 ) |
|
|
|
{ |
|
|
|
if( !IsOK( NULL, _( "Error: duplicate sheet names. Continue?" ) ) ) |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
// Cleanup the entire hierarchy
|
|
|
|
SCH_SCREENS screens; |
|
|
|
screens.SchematicCleanUp(); |
|
|
|
|
|
|
|
NETLIST_OBJECT_LIST * connectedItemsList = BuildNetListBase(); |
|
|
|
bool success = WriteNetListFile( connectedItemsList, aFormat, |
|
|
|
aFullFileName, aNetlistOptions ); |
|
|
|
|
|
|
|
return success; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void NETLIST_DIALOG::OnCancelClick( wxCommandEvent& event ) |
|
|
|
{ |
|
|
|
EndModal( wxID_CANCEL ); |
|
|
|
@ -746,6 +698,8 @@ void NETLIST_DIALOG::RunSimulator( wxCommandEvent& event ) |
|
|
|
wxFileName fn; |
|
|
|
wxString ExecFile, CommandLine; |
|
|
|
|
|
|
|
NetlistUpdateOpt(); |
|
|
|
|
|
|
|
wxString tmp = m_PanelNetType[PANELSPICE]->m_CommandStringCtrl->GetValue(); |
|
|
|
tmp.Trim( false ); |
|
|
|
tmp.Trim( true ); |
|
|
|
@ -767,6 +721,9 @@ void NETLIST_DIALOG::RunSimulator( wxCommandEvent& event ) |
|
|
|
if( currPage->m_AddSubPrefix && currPage->m_AddSubPrefix->GetValue() ) |
|
|
|
netlist_opt |= NET_USE_X_PREFIX; |
|
|
|
|
|
|
|
if( currPage->m_SpiceUseNetcodeAsNetname && currPage->m_SpiceUseNetcodeAsNetname->GetValue() ) |
|
|
|
netlist_opt |= NET_USE_NETCODES_AS_NETNAMES; |
|
|
|
|
|
|
|
if( ! m_Parent->CreateNetlist( currPage->m_IdNetType, fn.GetFullPath(), |
|
|
|
netlist_opt ) ) |
|
|
|
return; |
|
|
|
|