move SCH_EDIT_FRAME methods from netlist.cpp to netform.cpp
This commit is contained in:
parent
795a36c9fe
commit
1f88b466de
|
@ -1,9 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* 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 <dick@softplc.com>
|
* Copyright (C) 2013 SoftPLC Corporation, Dick Hollenbeck <dick@softplc.com>
|
||||||
* 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
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
|
@ -34,6 +34,8 @@
|
||||||
#include <pgm_base.h>
|
#include <pgm_base.h>
|
||||||
#include <schframe.h>
|
#include <schframe.h>
|
||||||
#include <reporter.h>
|
#include <reporter.h>
|
||||||
|
#include <confirm.h>
|
||||||
|
#include <kiway.h>
|
||||||
|
|
||||||
#include <netlist.h>
|
#include <netlist.h>
|
||||||
#include <netlist_exporter.h>
|
#include <netlist_exporter.h>
|
||||||
|
@ -43,6 +45,8 @@
|
||||||
#include <netlist_exporter_kicad.h>
|
#include <netlist_exporter_kicad.h>
|
||||||
#include <netlist_exporter_generic.h>
|
#include <netlist_exporter_generic.h>
|
||||||
|
|
||||||
|
#include <invoke_sch_dialog.h>
|
||||||
|
|
||||||
bool SCH_EDIT_FRAME::WriteNetListFile( NETLIST_OBJECT_LIST* aConnectedItemsList,
|
bool SCH_EDIT_FRAME::WriteNetListFile( NETLIST_OBJECT_LIST* aConnectedItemsList,
|
||||||
int aFormat, const wxString& aFullFileName,
|
int aFormat, const wxString& aFullFileName,
|
||||||
unsigned aNetlistOptions, REPORTER* aReporter )
|
unsigned aNetlistOptions, REPORTER* aReporter )
|
||||||
|
@ -149,3 +153,113 @@ bool SCH_EDIT_FRAME::WriteNetListFile( NETLIST_OBJECT_LIST* aConnectedItemsList,
|
||||||
|
|
||||||
return res;
|
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<NETLIST_OBJECT_LIST> 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<NETLIST_OBJECT_LIST> 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* This program source code file is part of KiCad, a free EDA CAD application.
|
* 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 <stambaughw@gmail.com>
|
* Copyright (C) 2013 Wayne Stambaugh <stambaughw@gmail.com>
|
||||||
* 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
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* 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 <fctsys.h>
|
|
||||||
#include <schframe.h>
|
|
||||||
#include <confirm.h>
|
|
||||||
#include <netlist_exporter_kicad.h>
|
|
||||||
#include <kiway.h>
|
|
||||||
|
|
||||||
#include <netlist.h>
|
#include <netlist.h>
|
||||||
#include <netlist_object.h>
|
#include <netlist_object.h>
|
||||||
#include <class_library.h>
|
#include <class_library.h>
|
||||||
|
@ -43,94 +37,12 @@
|
||||||
#include <sch_no_connect.h>
|
#include <sch_no_connect.h>
|
||||||
#include <sch_text.h>
|
#include <sch_text.h>
|
||||||
#include <sch_sheet.h>
|
#include <sch_sheet.h>
|
||||||
|
#include <sch_screen.h>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <invoke_sch_dialog.h>
|
|
||||||
|
|
||||||
#define IS_WIRE false
|
#define IS_WIRE false
|
||||||
#define IS_BUS true
|
#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<NETLIST_OBJECT_LIST> connectedItemsList( BuildNetListBase() );
|
|
||||||
|
|
||||||
bool success = WriteNetListFile( connectedItemsList.release(), aFormat,
|
|
||||||
aFullFileName, aNetlistOptions, aReporter );
|
|
||||||
|
|
||||||
return success;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//#define NETLIST_DEBUG
|
//#define NETLIST_DEBUG
|
||||||
|
|
||||||
NETLIST_OBJECT_LIST::~NETLIST_OBJECT_LIST()
|
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<NETLIST_OBJECT_LIST> 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 )
|
bool NETLIST_OBJECT_LIST::BuildNetListInfo( SCH_SHEET_LIST& aSheets )
|
||||||
{
|
{
|
||||||
SCH_SHEET_PATH* sheet;
|
SCH_SHEET_PATH* sheet;
|
||||||
|
|
Loading…
Reference in New Issue