KiCad PCB EDA Suite
|
A SCH_PLUGIN derivation for loading schematic files using the new s-expression file format. More...
#include <sch_sexpr_plugin.h>
Public Member Functions | |
SCH_SEXPR_PLUGIN () | |
virtual | ~SCH_SEXPR_PLUGIN () |
const wxString | GetName () const override |
Return a brief hard coded name for this SCH_PLUGIN. More... | |
const PLUGIN_FILE_DESC | GetSchematicFileDesc () const override |
Returns schematic file description for the SCH_PLUGIN. More... | |
const PLUGIN_FILE_DESC | GetLibraryFileDesc () const override |
Returns symbol library description for the SCH_PLUGIN. More... | |
void | SetProgressReporter (PROGRESS_REPORTER *aReporter) override |
Set an optional progress reporter. More... | |
int | GetModifyHash () const override |
Return the modification hash from the library cache. More... | |
SCH_SHEET * | LoadSchematicFile (const wxString &aFileName, SCHEMATIC *aSchematic, SCH_SHEET *aAppendToMe=nullptr, const STRING_UTF8_MAP *aProperties=nullptr) override |
Load information from some input file format that this SCH_PLUGIN implementation knows about, into either a new SCH_SHEET or an existing one. More... | |
void | LoadContent (LINE_READER &aReader, SCH_SHEET *aSheet, int aVersion=SEXPR_SCHEMATIC_FILE_VERSION) |
void | SaveSchematicFile (const wxString &aFileName, SCH_SHEET *aSheet, SCHEMATIC *aSchematic, const STRING_UTF8_MAP *aProperties=nullptr) override |
Write aSchematic to a storage file in a format that this SCH_PLUGIN implementation knows about, or it can be used to write a portion of aSchematic to a special kind of export file. More... | |
void | Format (SCH_SHEET *aSheet) |
void | Format (EE_SELECTION *aSelection, SCH_SHEET_PATH *aSelectionPath, SCHEMATIC &aSchematic, OUTPUTFORMATTER *aFormatter, bool aForClipboard) |
void | EnumerateSymbolLib (wxArrayString &aSymbolNameList, const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr) override |
Populate a list of LIB_SYMBOL alias names contained within the library aLibraryPath. More... | |
void | EnumerateSymbolLib (std::vector< LIB_SYMBOL * > &aSymbolList, const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr) override |
Populate a list of LIB_SYMBOL aliases contained within the library aLibraryPath. More... | |
LIB_SYMBOL * | LoadSymbol (const wxString &aLibraryPath, const wxString &aAliasName, const STRING_UTF8_MAP *aProperties=nullptr) override |
Load a LIB_SYMBOL object having aPartName from the aLibraryPath containing a library format that this SCH_PLUGIN knows about. More... | |
void | SaveSymbol (const wxString &aLibraryPath, const LIB_SYMBOL *aSymbol, const STRING_UTF8_MAP *aProperties=nullptr) override |
Write aSymbol to an existing library located at aLibraryPath. More... | |
void | DeleteSymbol (const wxString &aLibraryPath, const wxString &aSymbolName, const STRING_UTF8_MAP *aProperties=nullptr) override |
Delete the entire LIB_SYMBOL associated with aAliasName from the library aLibraryPath. More... | |
void | CreateSymbolLib (const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr) override |
Create a new empty symbol library at aLibraryPath. More... | |
bool | DeleteSymbolLib (const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr) override |
Delete an existing symbol library and returns true if successful, or if library does not exist returns false, or throws an exception if library exists but is read only or cannot be deleted for some other reason. More... | |
void | SaveLibrary (const wxString &aLibraryPath, const STRING_UTF8_MAP *aProperties=nullptr) override |
bool | IsSymbolLibWritable (const wxString &aLibraryPath) override |
Return true if the library at aLibraryPath is writable. More... | |
void | GetAvailableSymbolFields (std::vector< wxString > &aNames) override |
Retrieves a list of (custom) field names that are present on symbols in this library. More... | |
void | GetDefaultSymbolFields (std::vector< wxString > &aNames) override |
Retrieves a list of (custom) field names that should be shown by default for this library in the symbol chooser. More... | |
const wxString & | GetError () const override |
Return an error string to the caller. More... | |
virtual void | SetReporter (REPORTER *aReporter) |
Set an optional reporter for warnings/errors. More... | |
virtual bool | CanReadSchematicFile (const wxString &aFileName) const |
Checks if this SCH_PLUGIN can read the specified schematic file. More... | |
virtual bool | CanReadLibrary (const wxString &aFileName) const |
Checks if this SCH_PLUGIN can read the specified symbol library file. More... | |
virtual void | SymbolLibOptions (STRING_UTF8_MAP *aListToAppendTo) const |
Append supported SCH_PLUGIN options to aListToAppenTo along with internationalized descriptions. More... | |
virtual bool | SupportsSubLibraries () const |
virtual void | GetSubLibraryNames (std::vector< wxString > &aNames) |
Retrieves a list of sub-libraries in this library. More... | |
virtual void | SetLibTable (SYMBOL_LIB_TABLE *aTable) |
Some library plugins need to have access to their parent library table. More... | |
Static Public Member Functions | |
static std::vector< LIB_SYMBOL * > | ParseLibSymbols (std::string &aSymbolText, std::string aSource, int aFileVersion=SEXPR_SCHEMATIC_FILE_VERSION) |
static void | FormatLibSymbol (LIB_SYMBOL *aPart, OUTPUTFORMATTER &aFormatter) |
Static Public Attributes | |
static const char * | PropBuffering = "buffering" |
The property used internally by the plugin to enable cache buffering which prevents the library file from being written every time the cache is changed. More... | |
Protected Member Functions | |
void | init (SCHEMATIC *aSchematic, const STRING_UTF8_MAP *aProperties=nullptr) |
initialize PLUGIN like a constructor would. More... | |
Static Protected Member Functions | |
static bool | fileStartsWithPrefix (const wxString &aFilePath, const wxString &aPrefix, bool aIgnoreWhitespace) |
static bool | fileStartsWithBinaryHeader (const wxString &aFilePath, const std::vector< uint8_t > &aHeader) |
Protected Attributes | |
int | m_version |
Version of file being loaded. More... | |
int | m_nextFreeFieldId |
bool | m_appending |
Schematic load append status. More... | |
wxString | m_error |
For throwing exceptions or errors on partial loads. More... | |
PROGRESS_REPORTER * | m_progressReporter |
wxString | m_path |
Root project path for loading child sheets. More... | |
std::stack< wxString > | m_currentPath |
Stack to maintain nested sheet paths. More... | |
SCH_SHEET * | m_rootSheet |
The root sheet of the schematic being loaded. More... | |
SCH_SHEET_PATH | m_currentSheetPath |
SCHEMATIC * | m_schematic |
OUTPUTFORMATTER * | m_out |
The formatter for saving SCH_SCREEN objects. More... | |
SCH_SEXPR_PLUGIN_CACHE * | m_cache |
Private Member Functions | |
void | loadHierarchy (const SCH_SHEET_PATH &aParentSheetPath, SCH_SHEET *aSheet) |
void | loadFile (const wxString &aFileName, SCH_SHEET *aSheet) |
void | saveSymbol (SCH_SYMBOL *aSymbol, const SCHEMATIC &aSchematic, int aNestLevel, bool aForClipboard) |
void | saveField (SCH_FIELD *aField, int aNestLevel) |
void | saveBitmap (SCH_BITMAP *aBitmap, int aNestLevel) |
void | saveSheet (SCH_SHEET *aSheet, int aNestLevel) |
void | saveJunction (SCH_JUNCTION *aJunction, int aNestLevel) |
void | saveNoConnect (SCH_NO_CONNECT *aNoConnect, int aNestLevel) |
void | saveBusEntry (SCH_BUS_ENTRY_BASE *aBusEntry, int aNestLevel) |
void | saveLine (SCH_LINE *aLine, int aNestLevel) |
void | saveShape (SCH_SHAPE *aShape, int aNestLevel) |
void | saveText (SCH_TEXT *aText, int aNestLevel) |
void | saveTextBox (SCH_TEXTBOX *aText, int aNestLevel) |
void | saveBusAlias (std::shared_ptr< BUS_ALIAS > aAlias, int aNestLevel) |
void | saveInstances (const std::vector< SCH_SHEET_INSTANCE > &aSheets, int aNestLevel) |
void | cacheLib (const wxString &aLibraryFileName, const STRING_UTF8_MAP *aProperties) |
bool | isBuffering (const STRING_UTF8_MAP *aProperties) |
A SCH_PLUGIN derivation for loading schematic files using the new s-expression file format.
As with all SCH_PLUGINs there is no UI dependencies i.e. windowing calls allowed.
Definition at line 64 of file sch_sexpr_plugin.h.
SCH_SEXPR_PLUGIN::SCH_SEXPR_PLUGIN | ( | ) |
Definition at line 75 of file sch_sexpr_plugin.cpp.
References init().
|
virtual |
Definition at line 82 of file sch_sexpr_plugin.cpp.
References m_cache.
|
private |
Definition at line 1420 of file sch_sexpr_plugin.cpp.
References isBuffering(), SCH_LIB_PLUGIN_CACHE::IsFile(), SCH_LIB_PLUGIN_CACHE::IsFileChanged(), SCH_SEXPR_PLUGIN_CACHE::Load(), and m_cache.
Referenced by DeleteSymbol(), EnumerateSymbolLib(), LoadSymbol(), and SaveSymbol().
|
virtualinherited |
Checks if this SCH_PLUGIN can read the specified symbol library file.
If not overriden, extension check is used.
Reimplemented in SCH_EAGLE_PLUGIN, SCH_EASYEDA_PLUGIN, and SCH_LEGACY_PLUGIN.
Definition at line 69 of file sch_plugin.cpp.
References SCH_PLUGIN::GetLibraryFileDesc(), PLUGIN_FILE_DESC::m_ExtensionsInDir, PLUGIN_FILE_DESC::m_FileExtensions, and PLUGIN_FILE_DESC::m_IsFile.
Referenced by SCH_EAGLE_PLUGIN::CanReadLibrary(), SCH_LEGACY_PLUGIN::CanReadLibrary(), and SCH_IO_MGR::GuessPluginTypeFromLibPath().
|
virtualinherited |
Checks if this SCH_PLUGIN can read the specified schematic file.
If not overriden, extension check is used.
Reimplemented in SCH_EAGLE_PLUGIN, SCH_EASYEDA_PLUGIN, SCH_EASYEDAPRO_PLUGIN, and SCH_LEGACY_PLUGIN.
Definition at line 53 of file sch_plugin.cpp.
References SCH_PLUGIN::GetSchematicFileDesc(), and PLUGIN_FILE_DESC::m_FileExtensions.
Referenced by SCH_EAGLE_PLUGIN::CanReadSchematicFile(), SCH_EASYEDA_PLUGIN::CanReadSchematicFile(), SCH_LEGACY_PLUGIN::CanReadSchematicFile(), SCH_IO_MGR::GuessPluginTypeFromSchPath(), and SCH_EDIT_FRAME::OnImportProject().
|
overridevirtual |
Create a new empty symbol library at aLibraryPath.
It is an error to attempt to create an existing library or to attempt to create on a "read only" location.
aLibraryPath | is a locator for the "library", usually a directory, file, or URL containing several footprints. |
aProperties | is an associative array that can be used to tell the library create function anything special, because it can take any number of additional named tuning arguments that the plugin is known to support. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. |
IO_ERROR | if there is a problem finding the library, or creating it. |
Reimplemented from SCH_PLUGIN.
Definition at line 1548 of file sch_sexpr_plugin.cpp.
References _, SCH_SEXPR_PLUGIN_CACHE::Load(), m_cache, SCH_SEXPR_PLUGIN_CACHE::Save(), SCH_LIB_PLUGIN_CACHE::SetModified(), and THROW_IO_ERROR.
|
overridevirtual |
Delete the entire LIB_SYMBOL associated with aAliasName from the library aLibraryPath.
aLibraryPath | is a locator for the "library", usually a directory, file, or URL containing several symbols. |
aSymbolName | is the name of a LIB_SYMBOL associated with it's root LIB_SYMBOL object to delete from the specified library. |
aProperties | is an associative array that can be used to tell the library delete function anything special, because it can take any number of additional named tuning arguments that the plugin is known to support. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. |
IO_ERROR | if there is a problem finding the alias or the library or deleting it. |
Reimplemented from SCH_PLUGIN.
Definition at line 1534 of file sch_sexpr_plugin.cpp.
References cacheLib(), SCH_SEXPR_PLUGIN_CACHE::DeleteSymbol(), isBuffering(), m_cache, and SCH_SEXPR_PLUGIN_CACHE::Save().
|
overridevirtual |
Delete an existing symbol library and returns true if successful, or if library does not exist returns false, or throws an exception if library exists but is read only or cannot be deleted for some other reason.
aLibraryPath | is a locator for the "library", usually a directory or file which will contain symbols. |
aProperties | is an associative array that can be used to tell the library delete implementation function anything special, because it can take any number of additional named tuning arguments that the plugin is known to support. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. |
IO_ERROR | if there is a problem deleting an existing library. |
Reimplemented from SCH_PLUGIN.
Definition at line 1567 of file sch_sexpr_plugin.cpp.
References _, SCH_LIB_PLUGIN_CACHE::IsFile(), m_cache, and THROW_IO_ERROR.
|
overridevirtual |
Populate a list of LIB_SYMBOL aliases contained within the library aLibraryPath.
aSymbolList | is an array to populate with the LIB_SYMBOL pointers associated with the library. |
aLibraryPath | is a locator for the "library", usually a directory, file, or URL containing one or more LIB_SYMBOL objects. |
aProperties | is an associative array that can be used to tell the plugin anything needed about how to perform with respect to aLibraryPath. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. |
IO_ERROR | if the library cannot be found, the part library cannot be loaded. |
Reimplemented from SCH_PLUGIN.
Definition at line 1472 of file sch_sexpr_plugin.cpp.
References cacheLib(), m_cache, SCH_LIB_PLUGIN_CACHE::m_symbols, and SYMBOL_LIB_TABLE::PropPowerSymsOnly.
|
overridevirtual |
Populate a list of LIB_SYMBOL alias names contained within the library aLibraryPath.
aSymbolNameList | is an array to populate with the LIB_SYMBOL names associated with the library. |
aLibraryPath | is a locator for the "library", usually a directory, file, or URL containing one or more LIB_SYMBOL objects. |
aProperties | is an associative array that can be used to tell the plugin anything needed about how to perform with respect to aLibraryPath. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. |
IO_ERROR | if the library cannot be found, the part library cannot be loaded. |
Reimplemented from SCH_PLUGIN.
Definition at line 1451 of file sch_sexpr_plugin.cpp.
References cacheLib(), m_cache, SCH_LIB_PLUGIN_CACHE::m_symbols, and SYMBOL_LIB_TABLE::PropPowerSymsOnly.
|
staticprotectedinherited |
Definition at line 248 of file sch_plugin.cpp.
|
staticprotectedinherited |
Definition at line 223 of file sch_plugin.cpp.
References text.
Referenced by SCH_LEGACY_PLUGIN::CanReadLibrary(), and SCH_LEGACY_PLUGIN::CanReadSchematicFile().
void SCH_SEXPR_PLUGIN::Format | ( | EE_SELECTION * | aSelection, |
SCH_SHEET_PATH * | aSelectionPath, | ||
SCHEMATIC & | aSchematic, | ||
OUTPUTFORMATTER * | aFormatter, | ||
bool | aForClipboard | ||
) |
Definition at line 504 of file sch_sexpr_plugin.cpp.
References SCH_SHEET_PATH::AppendSymbol(), LIB_ID::Format(), SELECTION::GetItem(), SCH_SYMBOL::GetLibId(), SCH_SCREEN::GetLibSymbols(), SCH_SYMBOL::GetSchSymbolLibraryName(), EE_SELECTION::GetScreen(), SCH_SHEET_LIST::GetSheetInstances(), SCHEMATIC::GetSheets(), SCH_SHEET_LIST::GetSheetsWithinPath(), SELECTION::GetSize(), SCH_REFERENCE_LIST::GetSymbolInstances(), SCH_SHEET_LIST::GetSymbolsWithinPath(), m_out, m_schematic, SCH_SHEET_PATH::Path(), OUTPUTFORMATTER::Print(), SCH_SHEET_PATH::push_back(), saveBitmap(), saveBusEntry(), saveJunction(), saveLine(), saveNoConnect(), saveShape(), saveSheet(), SCH_SEXPR_PLUGIN_CACHE::SaveSymbol(), saveSymbol(), saveText(), saveTextBox(), SCH_BITMAP_T, SCH_BUS_BUS_ENTRY_T, SCH_BUS_WIRE_ENTRY_T, SCH_DIRECTIVE_LABEL_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_JUNCTION_T, SCH_LABEL_T, SCH_LINE_T, SCH_NO_CONNECT_T, SCH_SHAPE_T, SCH_SHEET_T, SCH_SYMBOL_T, SCH_TEXT_T, SCH_TEXTBOX_T, SCH_SHEET_LIST::SortByPageNumbers(), SCH_REFERENCE_LIST::SortByReferenceOnly(), EDA_ITEM::Type(), SCH_SYMBOL::UseLibIdLookup(), and UTF8::wx_str().
void SCH_SEXPR_PLUGIN::Format | ( | SCH_SHEET * | aSheet | ) |
Definition at line 360 of file sch_sexpr_plugin.cpp.
References KIID::AsString(), PAGE_INFO::Format(), TITLE_BLOCK::Format(), SCH_SCREEN::GetBusAliases(), SCH_SCREEN::GetLibSymbols(), SCH_SCREEN::GetPageSettings(), SCH_SHEET::GetRootInstance(), SCH_SHEET::GetScreen(), SCH_SCREEN::GetTitleBlock(), SCH_SHEET::HasRootInstance(), SCH_SCREEN::Items(), m_out, m_schematic, SCH_SCREEN::m_uuid, EDA_ITEM::m_Uuid, OUTPUTFORMATTER::Print(), saveBitmap(), saveBusAlias(), saveBusEntry(), saveInstances(), saveJunction(), saveLine(), saveNoConnect(), saveShape(), saveSheet(), SCH_SEXPR_PLUGIN_CACHE::SaveSymbol(), saveSymbol(), saveText(), saveTextBox(), SCH_BITMAP_T, SCH_BUS_BUS_ENTRY_T, SCH_BUS_WIRE_ENTRY_T, SCH_DIRECTIVE_LABEL_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_JUNCTION_T, SCH_LABEL_T, SCH_LAYER_ID_START, SCH_LINE_T, SCH_MARKER_T, SCH_NO_CONNECT_T, SCH_SHAPE_T, SCH_SHEET_T, SCH_SYMBOL_T, SCH_TEXT_T, SCH_TEXTBOX_T, SEXPR_SCHEMATIC_FILE_VERSION, TO_UTF8, EDA_ITEM::Type(), and TYPE_NOT_INIT.
Referenced by SCH_EDITOR_CONTROL::doCopy(), and SaveSchematicFile().
|
static |
Definition at line 1683 of file sch_sexpr_plugin.cpp.
References SCH_SEXPR_PLUGIN_CACHE::SaveSymbol().
Referenced by SYMBOL_EDITOR_EDIT_TOOL::Copy(), and SYMBOL_EDIT_FRAME::CopySymbolToClipboard().
|
overridevirtual |
Retrieves a list of (custom) field names that are present on symbols in this library.
The plugin is responsible for guaranteeing that this list contains the set of unique custom field names present on any symbols contained in the library.
The required KiCad fields are not included in this list.
aNames | will be filled with any custom fields present in this library. |
Reimplemented from SCH_PLUGIN.
Definition at line 1620 of file sch_sexpr_plugin.cpp.
References m_cache, and SCH_LIB_PLUGIN_CACHE::m_symbols.
Referenced by GetDefaultSymbolFields().
|
overridevirtual |
Retrieves a list of (custom) field names that should be shown by default for this library in the symbol chooser.
This list should be a subset of the result returned by GetAvailableSymbolFields().
The preference for which fields to hide and show for a given library is stored on a per-library basis in a user's preferences (or in the project local settings for a project- local library). The set of fields returned by GetDefaultSymbolFields() will be used if this preference is missing.
aNames | will be filled with the custom field names that should be shown by default |
Reimplemented from SCH_PLUGIN.
Definition at line 1649 of file sch_sexpr_plugin.cpp.
References GetAvailableSymbolFields().
|
inlineoverridevirtual |
Return an error string to the caller.
This is useful for schematic loaders that can load partial schematics where throwing an exception would be problematic such as the KiCad legacy plugin.
Reimplemented from SCH_PLUGIN.
Definition at line 141 of file sch_sexpr_plugin.h.
References m_error.
|
inlineoverridevirtual |
Returns symbol library description for the SCH_PLUGIN.
Reimplemented from SCH_PLUGIN.
Definition at line 82 of file sch_sexpr_plugin.h.
References _HKI, and KiCadSymbolLibFileExtension.
|
overridevirtual |
Return the modification hash from the library cache.
Implements SCH_PLUGIN.
Definition at line 1441 of file sch_sexpr_plugin.cpp.
References SCH_LIB_PLUGIN_CACHE::GetModifyHash(), and m_cache.
|
inlineoverridevirtual |
Return a brief hard coded name for this SCH_PLUGIN.
Implements SCH_PLUGIN.
Definition at line 71 of file sch_sexpr_plugin.h.
|
inlineoverridevirtual |
Returns schematic file description for the SCH_PLUGIN.
Reimplemented from SCH_PLUGIN.
Definition at line 76 of file sch_sexpr_plugin.h.
References _HKI, and KiCadSchematicFileExtension.
|
inlinevirtualinherited |
Retrieves a list of sub-libraries in this library.
Some types of symbol library support sub-libraries, which are a single-level organizational hierarchy that is implementation-defined per plugin. Most of KiCad ignores sub-libraries and treats the hierarchy between library and symbol as flat, but the sub-libraries are used for sorting and grouping symbols in the symbol chooser.
Has no effect if SupportsSubLibraries() returns false.
aNames | will be filled with a list of sub-libraries within this symbol library |
Reimplemented in SCH_DATABASE_PLUGIN, and SCH_HTTP_LIB_PLUGIN.
Definition at line 466 of file sch_io_mgr.h.
Referenced by SYMBOL_LIB_TABLE_ROW::GetSubLibraryNames().
|
protected |
initialize PLUGIN like a constructor would.
Definition at line 88 of file sch_sexpr_plugin.cpp.
References m_appending, m_cache, m_nextFreeFieldId, m_out, m_rootSheet, m_schematic, and m_version.
Referenced by LoadSchematicFile(), SaveSchematicFile(), and SCH_SEXPR_PLUGIN().
|
private |
Definition at line 1435 of file sch_sexpr_plugin.cpp.
References STRING_UTF8_MAP::Exists(), and PropBuffering.
Referenced by cacheLib(), DeleteSymbol(), and SaveSymbol().
|
overridevirtual |
Return true if the library at aLibraryPath is writable.
(Often system libraries are read only because of where they are installed.)
aLibraryPath | is a locator for the "library", usually a directory, file, or URL containing several symbols. |
IO_ERROR | if no library at aLibraryPath exists. |
Reimplemented from SCH_PLUGIN.
Definition at line 1612 of file sch_sexpr_plugin.cpp.
void SCH_SEXPR_PLUGIN::LoadContent | ( | LINE_READER & | aReader, |
SCH_SHEET * | aSheet, | ||
int | aVersion = SEXPR_SCHEMATIC_FILE_VERSION |
||
) |
Definition at line 321 of file sch_sexpr_plugin.cpp.
References SCH_SEXPR_PARSER::ParseSchematic().
Referenced by SCH_EDITOR_CONTROL::Paste().
|
private |
Definition at line 296 of file sch_sexpr_plugin.cpp.
References _, PROGRESS_REPORTER::KeepRefreshing(), m_appending, m_progressReporter, m_rootSheet, SCH_SEXPR_PARSER::ParseSchematic(), FILE_LINE_READER::ReadLine(), PROGRESS_REPORTER::Report(), FILE_LINE_READER::Rewind(), and THROW_IO_ERROR.
Referenced by loadHierarchy().
|
private |
Definition at line 180 of file sch_sexpr_plugin.cpp.
References _, SCH_SHEET_PATH::at(), SCH_SHEET_PATH::empty(), SCH_SCREEN::GetFileName(), SCH_SHEET::GetFileName(), SCH_SHEET::GetScreen(), SCH_SCREEN::Items(), SCH_SHEET_PATH::LastScreen(), loadFile(), loadHierarchy(), m_currentPath, m_currentSheetPath, m_error, m_rootSheet, m_schematic, EE_RTREE::OfType(), SCH_SHEET_PATH::pop_back(), SCH_SHEET_PATH::push_back(), SCH_SHEET_T, SCH_SHEET::SearchHierarchy(), SCH_SCREEN::SetFileExists(), SCH_SCREEN::SetFileName(), SCH_SCREEN::SetFileReadOnly(), EDA_ITEM::SetParent(), SCH_SHEET::SetScreen(), traceSchPlugin, and IO_ERROR::What().
Referenced by loadHierarchy(), and LoadSchematicFile().
|
overridevirtual |
Load information from some input file format that this SCH_PLUGIN implementation knows about, into either a new SCH_SHEET or an existing one.
This may be used to load an entire new SCH_SHEET, or to augment an existing one if aAppendToMe is not NULL.
aFileName | is the name of the file to use as input and may be foreign in nature or native in nature. |
aKiway | is the KIWAY object used to access the symbol libraries loaded by the project. |
aAppendToMe | is an existing SCH_SHEET to append to, but if NULL then this means "do not append, rather load anew". |
aProperties | is an associative array that can be used to tell the loader how to load the file, because it can take any number of additional named arguments that the plugin is known to support. These are tuning parameters for the import or load. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. |
IO_ERROR | if there is a problem loading, and its contents should say what went wrong, using line number and character offsets of the input file if possible. |
Reimplemented from SCH_PLUGIN.
Definition at line 100 of file sch_sexpr_plugin.cpp.
References SCH_SHEET::GetFileName(), PROJECT::GetProjectPath(), init(), SCHEMATIC::IsValid(), loadHierarchy(), m_appending, m_currentPath, m_path, m_rootSheet, SCHEMATIC::Prj(), SCHEMATIC::Root(), and traceSchPlugin.
|
overridevirtual |
Load a LIB_SYMBOL object having aPartName from the aLibraryPath containing a library format that this SCH_PLUGIN knows about.
aLibraryPath | is a locator for the "library", usually a directory, file, or URL containing several symbols. |
aPartName | is the name of the LIB_SYMBOL to load. |
aProperties | is an associative array that can be used to tell the loader implementation to do something special, because it can take any number of additional named tuning arguments that the plugin is known to support. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. |
IO_ERROR | if the library cannot be found or read. No exception is thrown in the case where aAliasName cannot be found. |
Reimplemented from SCH_PLUGIN.
Definition at line 1493 of file sch_sexpr_plugin.cpp.
References cacheLib(), CTX_LEGACY_LIBID, EscapeString(), m_cache, and SCH_LIB_PLUGIN_CACHE::m_symbols.
|
static |
Definition at line 1655 of file sch_sexpr_plugin.cpp.
References SCH_SEXPR_PARSER::ParseSymbol().
Referenced by SYMBOL_EDIT_FRAME::DuplicateSymbol(), and SYMBOL_EDITOR_EDIT_TOOL::Paste().
|
private |
Definition at line 922 of file sch_sexpr_plugin.cpp.
References KIID::AsString(), EDA_UNIT_UTILS::FormatInternalUnits(), SCH_BITMAP::GetImage(), BITMAP_BASE::GetImageData(), BITMAP_BASE::GetImageDataBuffer(), SCH_BITMAP::GetPosition(), BITMAP_BASE::GetPPI(), BITMAP_BASE::GetScale(), image, m_out, EDA_ITEM::m_Uuid, MIME_BASE64_LENGTH, OUTPUTFORMATTER::Print(), scale, schIUScale, SEXPR_SCHEMATIC_FILE_VERSION, TO_UTF8, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format().
|
private |
Definition at line 1375 of file sch_sexpr_plugin.cpp.
References m_out, OUTPUTFORMATTER::Print(), OUTPUTFORMATTER::Quotew(), and TO_UTF8.
Referenced by Format().
|
private |
Definition at line 1149 of file sch_sexpr_plugin.cpp.
References KIID::AsString(), STROKE_PARAMS::Format(), EDA_UNIT_UTILS::FormatInternalUnits(), SCH_ITEM::GetClass(), SCH_BUS_ENTRY_BASE::GetEnd(), SCH_BUS_ENTRY_BASE::GetPosition(), SCH_BUS_ENTRY_BASE::GetSize(), SCH_BUS_ENTRY_BASE::GetStroke(), LAYER_BUS, m_out, EDA_ITEM::m_Uuid, OUTPUTFORMATTER::Print(), saveLine(), schIUScale, SCH_LINE::SetEndPoint(), TO_UTF8, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format().
|
private |
Definition at line 870 of file sch_sexpr_plugin.cpp.
References SCH_FIELD::CanAutoplace(), DEFAULT_SIZE_TEXT, EDA_TEXT::Format(), EDA_UNIT_UTILS::FormatAngle(), EDA_UNIT_UTILS::FormatInternalUnits(), SCH_FIELD::GetCanonicalName(), SCH_FIELD::GetId(), SCH_FIELD::GetName(), SCH_FIELD::GetPosition(), EDA_TEXT::GetText(), EDA_TEXT::GetTextAngle(), EDA_TEXT::GetTextHeight(), EDA_TEXT::IsDefaultFormatting(), SCH_FIELD::IsNameShown(), m_nextFreeFieldId, m_out, EDA_IU_SCALE::MilsToIU(), OUTPUTFORMATTER::Print(), OUTPUTFORMATTER::Quotew(), schIUScale, SCH_FIELD::SetId(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by saveSheet(), saveSymbol(), and saveText().
|
private |
Definition at line 1395 of file sch_sexpr_plugin.cpp.
References m_out, path, OUTPUTFORMATTER::Print(), and OUTPUTFORMATTER::Quotew().
Referenced by Format().
|
private |
Definition at line 1114 of file sch_sexpr_plugin.cpp.
References KIGFX::COLOR4D::a, KIID::AsString(), KIGFX::COLOR4D::b, FormatDouble2Str(), EDA_UNIT_UTILS::FormatInternalUnits(), KIGFX::COLOR4D::g, SCH_JUNCTION::GetColor(), SCH_JUNCTION::GetDiameter(), SCH_JUNCTION::GetPosition(), KiROUND(), m_out, EDA_ITEM::m_Uuid, OUTPUTFORMATTER::Print(), KIGFX::COLOR4D::r, schIUScale, TO_UTF8, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format().
|
overridevirtual |
Reimplemented from SCH_PLUGIN.
Definition at line 1593 of file sch_sexpr_plugin.cpp.
References SCH_LIB_PLUGIN_CACHE::GetFileName(), SCH_LIB_PLUGIN_CACHE::IsFile(), m_cache, SCH_SEXPR_PLUGIN_CACHE::Save(), SCH_LIB_PLUGIN_CACHE::SetFileName(), and SCH_LIB_PLUGIN_CACHE::SetModified().
|
private |
Definition at line 1221 of file sch_sexpr_plugin.cpp.
References KIID::AsString(), STROKE_PARAMS::Format(), EDA_UNIT_UTILS::FormatInternalUnits(), SCH_LINE::GetEndPoint(), SCH_ITEM::GetLayer(), SCH_LINE::GetStartPoint(), SCH_LINE::GetStroke(), LAYER_BUS, LAYER_NOTES, LAYER_WIRE, LayerName(), m_out, EDA_ITEM::m_Uuid, OUTPUTFORMATTER::Print(), schIUScale, TO_UTF8, UNIMPLEMENTED_FOR, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format(), and saveBusEntry().
|
private |
Definition at line 1136 of file sch_sexpr_plugin.cpp.
References KIID::AsString(), EDA_UNIT_UTILS::FormatInternalUnits(), SCH_NO_CONNECT::GetPosition(), m_out, EDA_ITEM::m_Uuid, OUTPUTFORMATTER::Print(), schIUScale, TO_UTF8, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format().
|
overridevirtual |
Write aSchematic to a storage file in a format that this SCH_PLUGIN implementation knows about, or it can be used to write a portion of aSchematic to a special kind of export file.
aFileName | is the name of a file to save to on disk. |
aSheet | is the class SCH_SHEET in memory document tree from which to extract information when writing to aFileName. The caller continues to own the SCHEMATIC, and the plugin should refrain from modifying the SCHEMATIC if possible. |
aSchematic | is the SCHEMATIC object used to access any schematic-wide or project information needed to save the document. |
aProperties | is an associative array that can be used to tell the saver how to save the file, because it can take any number of additional named tuning arguments that the plugin is known to support. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. Set the #PropSaveCurrentSheetOnly property to only save the current sheet. Otherwise, all hierarchical sheets are saved. |
IO_ERROR | if there is a problem saving or exporting. |
Reimplemented from SCH_PLUGIN.
Definition at line 332 of file sch_sexpr_plugin.cpp.
References Format(), SCH_SHEET::GetScreen(), init(), m_out, and SCH_SCREEN::SetFileExists().
Referenced by KI_TEST::DumpSchematicToFile().
|
private |
Definition at line 1184 of file sch_sexpr_plugin.cpp.
References formatArc(), formatBezier(), formatCircle(), formatPoly(), formatRect(), EDA_SHAPE::GetFillColor(), EDA_SHAPE::GetFillMode(), EDA_SHAPE::GetShape(), SCH_SHAPE::GetStroke(), m_out, EDA_ITEM::m_Uuid, EDA_SHAPE::SHAPE_T_asString(), and UNIMPLEMENTED_FOR.
Referenced by Format().
|
private |
Definition at line 976 of file sch_sexpr_plugin.cpp.
References KIGFX::COLOR4D::a, KIID::AsString(), KIGFX::COLOR4D::b, EscapedUTF8(), FIELDS_AUTOPLACED_NO, STROKE_PARAMS::Format(), EDA_UNIT_UTILS::FormatAngle(), EDA_UNIT_UTILS::FormatInternalUnits(), KIGFX::COLOR4D::g, SCH_SHEET::GetBackgroundColor(), SCH_SHEET::GetBorderColor(), SCH_SHEET::GetBorderWidth(), SCH_SHEET::GetFields(), SCH_ITEM::GetFieldsAutoplaced(), SCH_SHEET::GetInstances(), SCH_SHEET::GetPins(), SCH_SHEET::GetPosition(), PROJECT::GetProjectName(), SCH_SHEET_LIST::GetSheetPathByKIIDPath(), getSheetPinAngle(), getSheetPinShapeToken(), SCHEMATIC::GetSheets(), SCH_SHEET::GetSize(), KiROUND(), m_nextFreeFieldId, m_out, m_schematic, EDA_ITEM::m_Uuid, path, pin, OUTPUTFORMATTER::Print(), SCHEMATIC::Prj(), OUTPUTFORMATTER::Quotew(), KIGFX::COLOR4D::r, SCHEMATIC::Root(), saveField(), schIUScale, STROKE_PARAMS::SetWidth(), SHEET_MANDATORY_FIELDS, TO_UTF8, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format().
|
overridevirtual |
Write aSymbol to an existing library located at aLibraryPath.
If a LIB_SYMBOL by the same name already exists or there are any conflicting alias names, the new LIB_SYMBOL will silently overwrite any existing aliases and/or part because libraries cannot have duplicate alias names. It is the responsibility of the caller to check the library for conflicts before saving.
aLibraryPath | is a locator for the "library", usually a directory, file, or URL containing several symbols. |
aSymbol | is what to store in the library. The library is refreshed and the caller must update any LIB_SYMBOL pointers that may have changed. |
aProperties | is an associative array that can be used to tell the saver how to save the symbol, because it can take any number of additional named tuning arguments that the plugin is known to support. The caller continues to own this object (plugin may not delete it), and plugins should expect it to be optionally NULL. |
IO_ERROR | if there is a problem saving. |
Reimplemented from SCH_PLUGIN.
Definition at line 1520 of file sch_sexpr_plugin.cpp.
References SCH_LIB_PLUGIN_CACHE::AddSymbol(), cacheLib(), isBuffering(), m_cache, and SCH_SEXPR_PLUGIN_CACHE::Save().
|
private |
Definition at line 651 of file sch_sexpr_plugin.cpp.
References ANGLE_0, ANGLE_180, ANGLE_270, ANGLE_90, KIID::AsString(), LIB_ITEM::DEMORGAN, FIELDS_AUTOPLACED_NO, FOOTPRINT_FIELD, LIB_ID::Format(), EDA_UNIT_UTILS::FormatAngle(), EDA_UNIT_UTILS::FormatInternalUnits(), SCH_SYMBOL::GetConvert(), SCH_SYMBOL::GetDNP(), SCH_SYMBOL::GetExcludedFromBoard(), SCH_SYMBOL::GetExcludedFromBOM(), SCH_SYMBOL::GetExcludedFromSim(), SCH_SYMBOL::GetField(), SCH_SYMBOL::GetFields(), SCH_ITEM::GetFieldsAutoplaced(), SCH_SYMBOL::GetInstanceReferences(), SCH_SYMBOL::GetLibId(), SCH_SYMBOL::GetOrientation(), SCH_SYMBOL::GetPosition(), PROJECT::GetProjectName(), SCH_SYMBOL::GetRawPins(), SCH_SYMBOL::GetSchSymbolLibraryName(), SCH_SHEET_LIST::GetSheetPathByKIIDPath(), SCHEMATIC::GetSheets(), EDA_TEXT::GetText(), SCH_SYMBOL::GetUnit(), m_nextFreeFieldId, m_out, EDA_ITEM::m_Uuid, MANDATORY_FIELDS, path, pin, OUTPUTFORMATTER::Print(), SCHEMATIC::Prj(), OUTPUTFORMATTER::Quotew(), REFERENCE_FIELD, SCHEMATIC::Root(), saveField(), schIUScale, SCH_SYMBOL::SortInstances(), SortSymbolInstancesByProjectUuid(), SYM_MIRROR_X, SYM_MIRROR_Y, SYM_ORIENT_180, SYM_ORIENT_270, SYM_ORIENT_90, TO_UTF8, toUTFTildaText(), SCH_SYMBOL::UseLibIdLookup(), VALUE_FIELD, UTF8::wx_str(), VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format().
|
private |
Definition at line 1258 of file sch_sexpr_plugin.cpp.
References ANGLE_180, KIID::AsString(), SPIN_STYLE::BOTTOM, FIELDS_AUTOPLACED_NO, flag, EDA_UNIT_UTILS::FormatAngle(), EDA_UNIT_UTILS::FormatInternalUnits(), SCH_TEXT::GetExcludedFromSim(), SCH_LABEL_BASE::GetFields(), SCH_ITEM::GetFieldsAutoplaced(), SCH_TEXT::GetPosition(), SCH_LABEL_BASE::GetShape(), getSheetPinShapeToken(), SCH_LABEL_BASE::GetSpinStyle(), EDA_TEXT::GetText(), EDA_TEXT::GetTextAngle(), getTextTypeToken(), SPIN_STYLE::LEFT, m_out, EDA_ITEM::m_Uuid, OUTPUTFORMATTER::Print(), OUTPUTFORMATTER::Quotew(), SPIN_STYLE::RIGHT, saveField(), SCH_DIRECTIVE_LABEL_T, SCH_GLOBAL_LABEL_T, SCH_HIER_LABEL_T, SCH_TEXT_T, schIUScale, TO_UTF8, EDA_ITEM::Type(), SPIN_STYLE::UP, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format().
|
private |
Definition at line 1343 of file sch_sexpr_plugin.cpp.
References KIID::AsString(), STROKE_PARAMS::Format(), EDA_UNIT_UTILS::FormatAngle(), formatFill(), EDA_UNIT_UTILS::FormatInternalUnits(), EDA_SHAPE::GetEnd(), SCH_TEXTBOX::GetExcludedFromSim(), EDA_SHAPE::GetFillColor(), EDA_SHAPE::GetFillMode(), EDA_SHAPE::GetStart(), SCH_SHAPE::GetStroke(), EDA_TEXT::GetText(), EDA_TEXT::GetTextAngle(), m_out, EDA_ITEM::m_Uuid, niluuid, OUTPUTFORMATTER::Print(), OUTPUTFORMATTER::Quotew(), schIUScale, TO_UTF8, VECTOR2< T >::x, and VECTOR2< T >::y.
Referenced by Format().
|
inlinevirtualinherited |
Some library plugins need to have access to their parent library table.
aTable | is the table this plugin is registered within. |
Reimplemented in SCH_DATABASE_PLUGIN, and SCH_HTTP_LIB_PLUGIN.
Definition at line 510 of file sch_io_mgr.h.
Referenced by SYMBOL_LIB_TABLE::FindRow(), SYMBOL_LIB_TABLE::LoadSymbolLib(), and SYMBOL_LIB_TABLE_ROW::Refresh().
|
inlineoverridevirtual |
Set an optional progress reporter.
Reimplemented from SCH_PLUGIN.
Definition at line 88 of file sch_sexpr_plugin.h.
References m_progressReporter.
|
inlinevirtualinherited |
Set an optional reporter for warnings/errors.
Reimplemented in SCH_ALTIUM_PLUGIN, CADSTAR_SCH_ARCHIVE_PLUGIN, SCH_EAGLE_PLUGIN, SCH_EASYEDA_PLUGIN, SCH_EASYEDAPRO_PLUGIN, and SCH_LTSPICE_PLUGIN.
Definition at line 158 of file sch_io_mgr.h.
Referenced by SCH_EDIT_FRAME::importFile().
|
inlinevirtualinherited |
Reimplemented in SCH_DATABASE_PLUGIN, and SCH_HTTP_LIB_PLUGIN.
Definition at line 452 of file sch_io_mgr.h.
Referenced by SYMBOL_LIB_TABLE_ROW::SupportsSubLibraries().
|
virtualinherited |
Append supported SCH_PLUGIN options to aListToAppenTo along with internationalized descriptions.
Options are typically appended so that a derived SCH_PLUGIN can call its base class function by the same name first, thus inheriting options declared there. (Some base class options could pertain to all Symbol*() functions in all derived SCH_PLUGINs.) Note that since aListToAppendTo is a PROPERTIES object, all options will be unique and last guy wins.
aListToAppendTo | holds a tuple of
In the future perhaps aListToAppendTo evolves to something capable of also holding a wxValidator for the cells in said dialog: http://forums.wxwidgets.org/viewtopic.php?t=23277&p=104180. This would require a 3 column list, and introducing wx GUI knowledge to SCH_PLUGIN, which has been avoided to date. |
Reimplemented in CADSTAR_SCH_ARCHIVE_PLUGIN.
Definition at line 204 of file sch_plugin.cpp.
Referenced by SYMBOL_GRID_TRICKS::optionsEditor().
|
protected |
Schematic load append status.
Definition at line 173 of file sch_sexpr_plugin.h.
Referenced by init(), loadFile(), and LoadSchematicFile().
|
protected |
Definition at line 184 of file sch_sexpr_plugin.h.
Referenced by cacheLib(), CreateSymbolLib(), DeleteSymbol(), DeleteSymbolLib(), EnumerateSymbolLib(), GetAvailableSymbolFields(), GetModifyHash(), init(), LoadSymbol(), SaveLibrary(), SaveSymbol(), and ~SCH_SEXPR_PLUGIN().
|
protected |
Stack to maintain nested sheet paths.
Definition at line 179 of file sch_sexpr_plugin.h.
Referenced by loadHierarchy(), and LoadSchematicFile().
|
protected |
Definition at line 181 of file sch_sexpr_plugin.h.
Referenced by loadHierarchy().
|
protected |
For throwing exceptions or errors on partial loads.
Definition at line 174 of file sch_sexpr_plugin.h.
Referenced by GetError(), and loadHierarchy().
|
protected |
Definition at line 172 of file sch_sexpr_plugin.h.
Referenced by init(), saveField(), saveSheet(), and saveSymbol().
|
protected |
The formatter for saving SCH_SCREEN objects.
Definition at line 183 of file sch_sexpr_plugin.h.
Referenced by Format(), init(), saveBitmap(), saveBusAlias(), saveBusEntry(), saveField(), saveInstances(), saveJunction(), saveLine(), saveNoConnect(), SaveSchematicFile(), saveShape(), saveSheet(), saveSymbol(), saveText(), and saveTextBox().
|
protected |
Root project path for loading child sheets.
Definition at line 178 of file sch_sexpr_plugin.h.
Referenced by LoadSchematicFile().
|
protected |
Definition at line 176 of file sch_sexpr_plugin.h.
Referenced by loadFile(), and SetProgressReporter().
|
protected |
The root sheet of the schematic being loaded.
Definition at line 180 of file sch_sexpr_plugin.h.
Referenced by init(), loadFile(), loadHierarchy(), and LoadSchematicFile().
|
protected |
Definition at line 182 of file sch_sexpr_plugin.h.
Referenced by Format(), init(), loadHierarchy(), and saveSheet().
|
protected |
Version of file being loaded.
Definition at line 171 of file sch_sexpr_plugin.h.
Referenced by init().
|
static |
The property used internally by the plugin to enable cache buffering which prevents the library file from being written every time the cache is changed.
This is useful when writing the schematic cache library file or saving a library to a new file name.
Definition at line 98 of file sch_sexpr_plugin.h.
Referenced by isBuffering(), CADSTAR_SCH_ARCHIVE_PLUGIN::LoadSchematicFile(), and SCH_EASYEDAPRO_PLUGIN::LoadSchematicFile().