diff --git a/eeschema/dialogs/dialog_bom.cpp b/eeschema/dialogs/dialog_bom.cpp index a54ab31631..e99cf69ddd 100644 --- a/eeschema/dialogs/dialog_bom.cpp +++ b/eeschema/dialogs/dialog_bom.cpp @@ -472,7 +472,10 @@ void DIALOG_BOM::OnRunPlugin( wxCommandEvent& event ) m_parent->SetExecFlags( wxEXEC_SHOW_CONSOLE ); #endif - m_parent->CreateNetlist( -1, fullfilename, 0, &reporter, false ); + auto netlist = m_parent->CreateNetlist( false, false ); + + m_parent->WriteNetListFile( netlist, -1, + fullfilename, 0, &reporter ); m_Messages->SetValue( reportmsg ); } diff --git a/eeschema/dialogs/dialog_netlist.cpp b/eeschema/dialogs/dialog_netlist.cpp index 416543a21d..0f0ea24fd8 100644 --- a/eeschema/dialogs/dialog_netlist.cpp +++ b/eeschema/dialogs/dialog_netlist.cpp @@ -597,7 +597,10 @@ void NETLIST_DIALOG::GenNetlist( wxCommandEvent& event ) else m_Parent->SetNetListerCommand( wxEmptyString ); - m_Parent->CreateNetlist( currPage->m_IdNetType, fullpath, netlist_opt, NULL, false ); + auto netlist = m_Parent->CreateNetlist( false, false ); + + m_Parent->WriteNetListFile( netlist, currPage->m_IdNetType, + fullpath, netlist_opt, NULL ); WriteCurrentNetlistSetup(); @@ -674,8 +677,10 @@ void NETLIST_DIALOG::RunSimulator( wxCommandEvent& event ) if( currPage->m_SpiceAjustPassiveValues && currPage->m_SpiceAjustPassiveValues->GetValue() ) netlist_opt |= NET_ADJUST_PASSIVE_VALS; - if( ! m_Parent->CreateNetlist( currPage->m_IdNetType, fn.GetFullPath(), - netlist_opt, NULL, false ) ) + auto netlist = m_Parent->CreateNetlist( false, false ); + + if( ! m_Parent->WriteNetListFile( netlist, currPage->m_IdNetType, + fn.GetFullPath(), netlist_opt, NULL ) ) return; ExecuteFile( this, ExecFile, CommandLine ); diff --git a/eeschema/netlist_generator.cpp b/eeschema/netlist_generator.cpp index f3d3c0d057..7752b70934 100644 --- a/eeschema/netlist_generator.cpp +++ b/eeschema/netlist_generator.cpp @@ -191,11 +191,11 @@ bool SCH_EDIT_FRAME::prepareForNetlist() } -void SCH_EDIT_FRAME::sendNetlist() +void SCH_EDIT_FRAME::sendNetlistToCvpcb() { NETLIST_OBJECT_LIST* net_atoms = BuildNetListBase(); - NETLIST_EXPORTER_KICAD exporter( this, net_atoms ); + NETLIST_EXPORTER_KICAD exporter( this, net_atoms, g_ConnectionGraph ); STRING_FORMATTER formatter; @@ -210,13 +210,13 @@ void SCH_EDIT_FRAME::sendNetlist() } -bool SCH_EDIT_FRAME::CreateNetlist( int aFormat, const wxString& aFullFileName, - unsigned aNetlistOptions, REPORTER* aReporter, bool aSilent ) +NETLIST_OBJECT_LIST* SCH_EDIT_FRAME::CreateNetlist( bool aSilent, + bool aSilentAnnotate ) { if( !aSilent ) // checks for errors and invokes annotation dialog as neccessary { if( !prepareForNetlist() ) - return false; + return nullptr; } else // performs similar function as prepareForNetlist but without a dialog. { @@ -224,14 +224,16 @@ bool SCH_EDIT_FRAME::CreateNetlist( int aFormat, const wxString& aFullFileName, schematic.UpdateSymbolLinks(); SCH_SHEET_LIST sheets( g_RootSheet ); sheets.AnnotatePowerSymbols(); + + if( aSilentAnnotate ) + AnnotateComponents( true, UNSORTED, INCREMENTAL_BY_REF, 0, false, false, true, + NULL_REPORTER::GetInstance() ); } - std::unique_ptr connectedItemsList( BuildNetListBase() ); + // TODO(JE) This is really going to turn into "PrepareForNetlist" + // when the old netlister (BuildNetListBase) is removed - bool success = WriteNetListFile( connectedItemsList.release(), aFormat, - aFullFileName, aNetlistOptions, aReporter ); - - return success; + return BuildNetListBase(); } diff --git a/eeschema/sch_edit_frame.cpp b/eeschema/sch_edit_frame.cpp index 6bc32b9614..efd0a68d4d 100644 --- a/eeschema/sch_edit_frame.cpp +++ b/eeschema/sch_edit_frame.cpp @@ -907,25 +907,9 @@ void SCH_EDIT_FRAME::doUpdatePcb( const wxString& aUpdateOptions ) frame->Raise(); } - if( aUpdateOptions.Contains( "quiet-annotate" ) ) - { - SCH_SCREENS schematic; - schematic.UpdateSymbolLinks(); - SCH_SHEET_LIST sheets( g_RootSheet ); - sheets.AnnotatePowerSymbols(); - AnnotateComponents( true, UNSORTED, INCREMENTAL_BY_REF, 0, false, false, true, - NULL_REPORTER::GetInstance() ); - } + auto net_atoms = CreateNetlist( aUpdateOptions.Contains( "no-annotate" ), + aUpdateOptions.Contains( "quiet-annotate" ) ); - if( !aUpdateOptions.Contains( "no-annotate" ) ) - { - // Ensure the schematic is OK for a netlist creation - // (especially all components are annotated): - if( !prepareForNetlist() ) - return; - } - - NETLIST_OBJECT_LIST* net_atoms = BuildNetListBase(); NETLIST_EXPORTER_KICAD exporter( this, net_atoms, g_ConnectionGraph ); STRING_FORMATTER formatter; @@ -1173,7 +1157,7 @@ void SCH_EDIT_FRAME::OnOpenCvpcb( wxCommandEvent& event ) // player->OpenProjectFiles( std::vector( 1, fn.GetFullPath() ) ); } - sendNetlist(); + sendNetlistToCvpcb(); player->Raise(); } diff --git a/eeschema/sch_edit_frame.h b/eeschema/sch_edit_frame.h index 6bbd42a3f5..a4c17816fc 100644 --- a/eeschema/sch_edit_frame.h +++ b/eeschema/sch_edit_frame.h @@ -241,7 +241,7 @@ protected: /** * Send the kicad netlist over to CVPCB. */ - void sendNetlist(); + void sendNetlistToCvpcb(); public: SCH_EDIT_FRAME( KIWAY* aKiway, wxWindow* aParent ); @@ -562,24 +562,12 @@ public: * - Build netlist info * - Create the netlist file (different formats) * - * @param aFormat = netlist format (NET_TYPE_PCBNEW ...) - * @param aFullFileName = full netlist file name - * @param aNetlistOptions = netlist options using OR'ed bits. - *

- * For SPICE netlist only: - * if NET_USE_NETNAMES is set, use net names from labels in schematic - * else use net numbers (net codes) - * if NET_USE_X_PREFIX is set : change "U" and "IC" reference prefix to "X" - *

- * @param aReporter = a REPORTER to report error messages, - * mainly if a command line must be run (can be NULL - * @return true if success. + * @param aSilent is true if annotation error dialog should be skipped + * @param aSilentAnnotate is true if components should be reannotated silently + * @returns a unique_ptr to the netlist */ - bool CreateNetlist( int aFormat, - const wxString& aFullFileName, - unsigned aNetlistOptions, - REPORTER* aReporter = NULL, - bool silent = false ); + NETLIST_OBJECT_LIST* CreateNetlist( bool aSilent = false, + bool aSilentAnnotate = false ); /** * Create a netlist file.