Eeschema: Add CheckHeader function to SCH_PLUGIN and cycle through plugins when loading files.
This commit is contained in:
parent
e03bc32e49
commit
4e69acbb49
|
@ -47,6 +47,7 @@
|
||||||
#include <project_rescue.h>
|
#include <project_rescue.h>
|
||||||
#include <eeschema_config.h>
|
#include <eeschema_config.h>
|
||||||
#include <sch_legacy_plugin.h>
|
#include <sch_legacy_plugin.h>
|
||||||
|
#include <sch_eagle_plugin.h>
|
||||||
|
|
||||||
|
|
||||||
//#define USE_SCH_LEGACY_IO_PLUGIN
|
//#define USE_SCH_LEGACY_IO_PLUGIN
|
||||||
|
@ -315,30 +316,13 @@ bool SCH_EDIT_FRAME::OpenProjectFiles( const std::vector<wxString>& aFileSet, in
|
||||||
delete g_RootSheet; // Delete the current project.
|
delete g_RootSheet; // Delete the current project.
|
||||||
g_RootSheet = NULL; // Force CreateScreens() to build new empty project on load failure.
|
g_RootSheet = NULL; // Force CreateScreens() to build new empty project on load failure.
|
||||||
|
|
||||||
// Open file and guess at filetype Kicad/Eagle
|
SCH_PLUGIN::SCH_PLUGIN_RELEASER pi( SCH_IO_MGR::FindPlugin( SCH_IO_MGR::SCH_LEGACY ) );
|
||||||
wxTextFile tempFile;
|
|
||||||
tempFile.Open( fullFileName );
|
|
||||||
wxString firstline;
|
|
||||||
// read the first line
|
|
||||||
firstline = tempFile.GetFirstLine();
|
|
||||||
tempFile.Close();
|
|
||||||
|
|
||||||
SCH_IO_MGR::SCH_FILE_T filetype;
|
// cycle through plugins as they are added to Eeschema
|
||||||
|
if( !pi->CheckHeader( fullFileName ) )
|
||||||
if( firstline.StartsWith( "<?xml" ) )
|
|
||||||
{
|
{
|
||||||
filetype = SCH_IO_MGR::SCH_EAGLE;
|
pi.set( SCH_IO_MGR::FindPlugin( SCH_IO_MGR::SCH_EAGLE ) );
|
||||||
}
|
}
|
||||||
else if( firstline.StartsWith( "(schematic" ) )
|
|
||||||
{
|
|
||||||
filetype = SCH_IO_MGR::SCH_KICAD;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
filetype = SCH_IO_MGR::SCH_LEGACY;
|
|
||||||
}
|
|
||||||
|
|
||||||
SCH_PLUGIN::SCH_PLUGIN_RELEASER pi( SCH_IO_MGR::FindPlugin( filetype ) );
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -835,6 +835,21 @@ LIB_TEXT* SCH_EAGLE_PLUGIN::loadSymboltext( LIB_PART* aPart, wxXmlNode* aLibText
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_EAGLE_PLUGIN::CheckHeader( const wxString& aFileName )
|
||||||
|
{
|
||||||
|
// Open file and check first line
|
||||||
|
wxTextFile tempFile;
|
||||||
|
|
||||||
|
tempFile.Open( aFileName );
|
||||||
|
wxString firstline;
|
||||||
|
// read the first line
|
||||||
|
firstline = tempFile.GetFirstLine();
|
||||||
|
tempFile.Close();
|
||||||
|
|
||||||
|
return firstline.StartsWith( "<?xml" );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void SCH_EAGLE_PLUGIN::Save( const wxString& aFileName, SCH_SCREEN* aSchematic, KIWAY* aKiway,
|
void SCH_EAGLE_PLUGIN::Save( const wxString& aFileName, SCH_SCREEN* aSchematic, KIWAY* aKiway,
|
||||||
const PROPERTIES* aProperties )
|
const PROPERTIES* aProperties )
|
||||||
{
|
{
|
||||||
|
|
|
@ -108,6 +108,7 @@ public:
|
||||||
|
|
||||||
void SymbolLibOptions( PROPERTIES* aListToAppendTo ) const override;
|
void SymbolLibOptions( PROPERTIES* aListToAppendTo ) const override;
|
||||||
|
|
||||||
|
bool CheckHeader( const wxString& aFileName ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void loadDrawing( wxXmlNode* aDrawingNode );
|
void loadDrawing( wxXmlNode* aDrawingNode );
|
||||||
|
|
|
@ -484,6 +484,16 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void SymbolLibOptions( PROPERTIES* aListToAppendTo ) const;
|
virtual void SymbolLibOptions( PROPERTIES* aListToAppendTo ) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function CheckHeader
|
||||||
|
* returns true if the first line in @a aFileName begins with the expected header
|
||||||
|
* system libraries are read only because of where they are installed.)
|
||||||
|
*
|
||||||
|
* @param aFileName is the name of the file to use as input
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
virtual bool CheckHeader( const wxString& aFileName );
|
||||||
|
|
||||||
//-----</PUBLIC SCH_PLUGIN API>------------------------------------------------
|
//-----</PUBLIC SCH_PLUGIN API>------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3604,5 +3604,19 @@ void SCH_LEGACY_PLUGIN::SaveLibrary( const wxString& aLibraryPath, const PROPERT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_LEGACY_PLUGIN::CheckHeader( const wxString& aFileName )
|
||||||
|
{
|
||||||
|
// Open file and check first line
|
||||||
|
wxTextFile tempFile;
|
||||||
|
|
||||||
|
tempFile.Open( aFileName );
|
||||||
|
wxString firstline;
|
||||||
|
// read the first line
|
||||||
|
firstline = tempFile.GetFirstLine();
|
||||||
|
tempFile.Close();
|
||||||
|
|
||||||
|
return firstline.StartsWith( "EESchema" );
|
||||||
|
}
|
||||||
|
|
||||||
const char* SCH_LEGACY_PLUGIN::PropBuffering = "buffering";
|
const char* SCH_LEGACY_PLUGIN::PropBuffering = "buffering";
|
||||||
const char* SCH_LEGACY_PLUGIN::PropNoDocFile = "no_doc_file";
|
const char* SCH_LEGACY_PLUGIN::PropNoDocFile = "no_doc_file";
|
||||||
|
|
|
@ -124,6 +124,8 @@ public:
|
||||||
const PROPERTIES* aProperties = NULL ) override;
|
const PROPERTIES* aProperties = NULL ) override;
|
||||||
void SaveLibrary( const wxString& aLibraryPath, const PROPERTIES* aProperties = NULL ) override;
|
void SaveLibrary( const wxString& aLibraryPath, const PROPERTIES* aProperties = NULL ) override;
|
||||||
|
|
||||||
|
bool CheckHeader(const wxString& aFileName) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void loadHierarchy( SCH_SHEET* aSheet );
|
void loadHierarchy( SCH_SHEET* aSheet );
|
||||||
void loadHeader( FILE_LINE_READER& aReader, SCH_SCREEN* aScreen );
|
void loadHeader( FILE_LINE_READER& aReader, SCH_SCREEN* aScreen );
|
||||||
|
|
|
@ -188,3 +188,11 @@ void SCH_PLUGIN::SymbolLibOptions( PROPERTIES* aListToAppendTo ) const
|
||||||
) );
|
) );
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool SCH_PLUGIN::CheckHeader( const wxString& aFileName )
|
||||||
|
{
|
||||||
|
// not pure virtual so that plugins only have to implement subset of the SCH_PLUGIN interface.
|
||||||
|
not_implemented( this, __FUNCTION__ );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue