From 1f88b466de45d7eab935692f9044da5dcabf3ee6 Mon Sep 17 00:00:00 2001 From: jean-pierre charras Date: Tue, 30 Jan 2018 10:45:35 +0100 Subject: [PATCH] move SCH_EDIT_FRAME methods from netlist.cpp to netform.cpp --- eeschema/netform.cpp | 118 ++++++++++++++++++++++++++++++++++++++++- eeschema/netlist.cpp | 123 ++----------------------------------------- 2 files changed, 120 insertions(+), 121 deletions(-) diff --git a/eeschema/netform.cpp b/eeschema/netform.cpp index 7883a4402c..ce2f216bea 100644 --- a/eeschema/netform.cpp +++ b/eeschema/netform.cpp @@ -1,9 +1,9 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 1992-2015 jp.charras at wanadoo.fr + * Copyright (C) 1992-2018 jp.charras at wanadoo.fr * Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck - * Copyright (C) 1992-2015 KiCad Developers, see change_log.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see change_log.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -34,6 +34,8 @@ #include #include #include +#include +#include #include #include @@ -43,6 +45,8 @@ #include #include +#include + bool SCH_EDIT_FRAME::WriteNetListFile( NETLIST_OBJECT_LIST* aConnectedItemsList, int aFormat, const wxString& aFullFileName, unsigned aNetlistOptions, REPORTER* aReporter ) @@ -149,3 +153,113 @@ bool SCH_EDIT_FRAME::WriteNetListFile( NETLIST_OBJECT_LIST* aConnectedItemsList, return res; } + + +//Imported function: +int TestDuplicateSheetNames( bool aCreateMarker ); + + +bool SCH_EDIT_FRAME::prepareForNetlist() +{ + SCH_SCREENS schematic; + + // Ensure all symbol library links for all sheets valid: + schematic.UpdateSymbolLinks(); + + // Ensure all power symbols have a valid reference + SCH_SHEET_LIST sheets( g_RootSheet ); + sheets.AnnotatePowerSymbols(); + + // Performs some controls: + if( CheckAnnotate( NULL, 0 ) ) + { + // Schematic must be annotated: call Annotate dialog and tell + // the user why that is. + InvokeDialogAnnotate( this, _( "Exporting the netlist requires a " + "completely\nannotated schematic." ) ); + + if( CheckAnnotate( NULL, 0 ) ) + return false; + } + + // Test duplicate sheet names: + if( TestDuplicateSheetNames( false ) > 0 ) + { + if( !IsOK( NULL, _( "Error: duplicate sheet names. Continue?" ) ) ) + return false; + } + + return true; +} + + +void SCH_EDIT_FRAME::sendNetlist() +{ + NETLIST_OBJECT_LIST* net_atoms = BuildNetListBase(); + + NETLIST_EXPORTER_KICAD exporter( net_atoms, Prj().SchSymbolLibTable() ); + + STRING_FORMATTER formatter; + + // @todo : trim GNL_ALL down to minimum for CVPCB + exporter.Format( &formatter, GNL_ALL ); + + Kiway().ExpressMail( FRAME_CVPCB, + MAIL_EESCHEMA_NETLIST, + formatter.GetString(), // an abbreviated "kicad" (s-expr) netlist + this + ); +} + + +bool SCH_EDIT_FRAME::CreateNetlist( int aFormat, const wxString& aFullFileName, + unsigned aNetlistOptions, REPORTER* aReporter, bool aSilent ) +{ + if( !aSilent ) // checks for errors and invokes annotation dialog as neccessary + { + if( !prepareForNetlist() ) + return false; + } + else // performs similar function as prepareForNetlist but without a dialog. + { + SCH_SCREENS schematic; + schematic.UpdateSymbolLinks(); + SCH_SHEET_LIST sheets( g_RootSheet ); + sheets.AnnotatePowerSymbols(); + } + + std::unique_ptr connectedItemsList( BuildNetListBase() ); + + bool success = WriteNetListFile( connectedItemsList.release(), aFormat, + aFullFileName, aNetlistOptions, aReporter ); + + return success; +} + + +NETLIST_OBJECT_LIST* SCH_EDIT_FRAME::BuildNetListBase( bool updateStatusText ) +{ + // I own this list until I return it to the new owner. + std::unique_ptr ret( new NETLIST_OBJECT_LIST() ); + + // Creates the flattened sheet list: + SCH_SHEET_LIST aSheets( g_RootSheet ); + + // Build netlist info + bool success = ret->BuildNetListInfo( aSheets ); + + if( !success ) + { + if( updateStatusText ) + SetStatusText( _( "No Objects" ) ); + return ret.release(); + } + + wxString msg = wxString::Format( _( "Net count = %d" ), int( ret->size() ) ); + + if( updateStatusText ) + SetStatusText( msg ); + + return ret.release(); +} + diff --git a/eeschema/netlist.cpp b/eeschema/netlist.cpp index a92aab07aa..40f33e7f2c 100644 --- a/eeschema/netlist.cpp +++ b/eeschema/netlist.cpp @@ -1,9 +1,9 @@ /* * This program source code file is part of KiCad, a free EDA CAD application. * - * Copyright (C) 2015 Jean-Pierre Charras, jp.charras at wanadoo.fr + * Copyright (C) 2018 Jean-Pierre Charras, jp.charras at wanadoo.fr * Copyright (C) 2013 Wayne Stambaugh - * Copyright (C) 1992-2017 KiCad Developers, see AUTHORS.txt for contributors. + * Copyright (C) 1992-2018 KiCad Developers, see AUTHORS.txt for contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -24,15 +24,9 @@ */ /** - * @file eeschema/netlist.cpp + * @file eeschema/netlist_object_list.cpp */ -#include -#include -#include -#include -#include - #include #include #include @@ -43,94 +37,12 @@ #include #include #include +#include #include -#include #define IS_WIRE false #define IS_BUS true -//Imported function: -int TestDuplicateSheetNames( bool aCreateMarker ); - - -bool SCH_EDIT_FRAME::prepareForNetlist() -{ - SCH_SCREENS schematic; - - // Ensure all symbol library links for all sheets valid: - schematic.UpdateSymbolLinks(); - - // Ensure all power symbols have a valid reference - SCH_SHEET_LIST sheets( g_RootSheet ); - sheets.AnnotatePowerSymbols(); - - // Performs some controls: - if( CheckAnnotate( NULL, 0 ) ) - { - // Schematic must be annotated: call Annotate dialog and tell - // the user why that is. - InvokeDialogAnnotate( this, _( "Exporting the netlist requires a " - "completely\nannotated schematic." ) ); - - if( CheckAnnotate( NULL, 0 ) ) - return false; - } - - // Test duplicate sheet names: - if( TestDuplicateSheetNames( false ) > 0 ) - { - if( !IsOK( NULL, _( "Error: duplicate sheet names. Continue?" ) ) ) - return false; - } - - return true; -} - - -void SCH_EDIT_FRAME::sendNetlist() -{ - NETLIST_OBJECT_LIST* net_atoms = BuildNetListBase(); - - NETLIST_EXPORTER_KICAD exporter( net_atoms, Prj().SchSymbolLibTable() ); - - STRING_FORMATTER formatter; - - // @todo : trim GNL_ALL down to minimum for CVPCB - exporter.Format( &formatter, GNL_ALL ); - - Kiway().ExpressMail( FRAME_CVPCB, - MAIL_EESCHEMA_NETLIST, - formatter.GetString(), // an abbreviated "kicad" (s-expr) netlist - this - ); -} - - -bool SCH_EDIT_FRAME::CreateNetlist( int aFormat, const wxString& aFullFileName, - unsigned aNetlistOptions, REPORTER* aReporter, bool aSilent ) -{ - if( !aSilent ) // checks for errors and invokes annotation dialog as neccessary - { - if( !prepareForNetlist() ) - return false; - } - else // performs similar function as prepareForNetlist but without a dialog. - { - SCH_SCREENS schematic; - schematic.UpdateSymbolLinks(); - SCH_SHEET_LIST sheets( g_RootSheet ); - sheets.AnnotatePowerSymbols(); - } - - std::unique_ptr connectedItemsList( BuildNetListBase() ); - - bool success = WriteNetListFile( connectedItemsList.release(), aFormat, - aFullFileName, aNetlistOptions, aReporter ); - - return success; -} - - //#define NETLIST_DEBUG NETLIST_OBJECT_LIST::~NETLIST_OBJECT_LIST() @@ -165,33 +77,6 @@ void NETLIST_OBJECT_LIST::SortListbySheet() } -NETLIST_OBJECT_LIST* SCH_EDIT_FRAME::BuildNetListBase( bool updateStatusText ) -{ - // I own this list until I return it to the new owner. - std::unique_ptr ret( new NETLIST_OBJECT_LIST() ); - - // Creates the flattened sheet list: - SCH_SHEET_LIST aSheets( g_RootSheet ); - - // Build netlist info - bool success = ret->BuildNetListInfo( aSheets ); - - if( !success ) - { - if( updateStatusText ) - SetStatusText( _( "No Objects" ) ); - return ret.release(); - } - - wxString msg = wxString::Format( _( "Net count = %d" ), int( ret->size() ) ); - - if( updateStatusText ) - SetStatusText( msg ); - - return ret.release(); -} - - bool NETLIST_OBJECT_LIST::BuildNetListInfo( SCH_SHEET_LIST& aSheets ) { SCH_SHEET_PATH* sheet;