KiCad PCB EDA Suite
Loading...
Searching...
No Matches
LIB_SYMBOL_LIBRARY_MANAGER Class Reference

Symbol library management helper that is specific to the symbol library editor frame. More...

#include <lib_symbol_library_manager.h>

Inheritance diagram for LIB_SYMBOL_LIBRARY_MANAGER:
SYMBOL_LIBRARY_MANAGER

Public Member Functions

 LIB_SYMBOL_LIBRARY_MANAGER (SYMBOL_EDIT_FRAME &aFrame)
 
void Sync (const wxString &aForceRefresh, std::function< void(int, int, const wxString &)> aProgressCallback)
 Updates the SYMBOL_LIBRARY_MANAGER data to synchronize with Symbol Library Table.
 
bool CreateNewSymbol (const wxString &aLibrary, const NEW_SYMBOL_PROPERTIES &aProps)
 
wxObjectDataPtr< LIB_TREE_MODEL_ADAPTER > & GetAdapter ()
 Return the adapter object that provides the stored data.
 
int GetHash () const
 
bool HasModifications () const
 
int GetLibraryHash (const wxString &aLibrary) const
 Return a library hash value to determine if it has changed.
 
wxArrayString GetLibraryNames () const
 Return the array of library names.
 
std::list< LIB_SYMBOL * > EnumerateSymbols (const wxString &aLibrary) const
 
bool CreateLibrary (const wxString &aFilePath, LIBRARY_TABLE_SCOPE aScope)
 Create an empty library and adds it to the library table.
 
bool AddLibrary (const wxString &aFilePath, LIBRARY_TABLE_SCOPE aScope)
 Add an existing library.
 
bool UpdateSymbol (LIB_SYMBOL *aSymbol, const wxString &aLibrary)
 Update the symbol buffer with a new version of the symbol.
 
bool UpdateSymbolAfterRename (LIB_SYMBOL *aSymbol, const wxString &aOldSymbolName, const wxString &aLibrary)
 Update the symbol buffer with a new version of the symbol when the name has changed.
 
bool UpdateLibraryBuffer (const wxString &aLibrary)
 Update the library buffer with a new version of the library.
 
bool RemoveSymbol (const wxString &aSymbolName, const wxString &aLibrary)
 Remove the symbol from the symbol buffer.
 
LIB_SYMBOLGetSymbol (const wxString &aSymbolName, const wxString &aLibrary) const
 Return either an alias of a working LIB_SYMBOL copy, or alias of the original symbol if there is no working copy.
 
LIB_SYMBOLGetBufferedSymbol (const wxString &aSymbolName, const wxString &aLibrary)
 Return the symbol copy from the buffer.
 
SCH_SCREENGetScreen (const wxString &aSymbolName, const wxString &aLibrary)
 Return the screen used to edit a specific symbol.
 
bool SymbolExists (const wxString &aSymbolName, const wxString &aLibrary) const
 Return true if symbol with a specific alias exists in library (either original one or buffered).
 
bool SymbolNameInUse (const wxString &aName, const wxString &aLibrary)
 Return true if the symbol name is already in use in the specified library.
 
bool LibraryExists (const wxString &aLibrary, bool aCheckEnabled=false) const
 Return true if library exists.
 
bool IsLibraryLoaded (const wxString &aLibrary) const
 Return true if the library was successfully loaded.
 
bool IsLibraryModified (const wxString &aLibrary) const
 Return true if library has unsaved modifications.
 
bool IsSymbolModified (const wxString &aSymbolName, const wxString &aLibrary) const
 Return true if symbol has unsaved modifications.
 
void SetSymbolModified (const wxString &aSymbolName, const wxString &aLibrary)
 
bool ClearLibraryModified (const wxString &aLibrary) const
 Clear the modified flag for all symbols in a library.
 
bool ClearSymbolModified (const wxString &aSymbolName, const wxString &aLibrary) const
 Clear the modified flag for a symbol.
 
bool IsLibraryReadOnly (const wxString &aLibrary) const
 Return true if the library is stored in a read-only file.
 
bool SaveLibrary (const wxString &aLibrary, const wxString &aFileName, SCH_IO_MGR::SCH_FILE_T aFileType=SCH_IO_MGR::SCH_FILE_T::SCH_LEGACY)
 Save library to a file, including unsaved changes.
 
LIB_ID RevertSymbol (const wxString &aSymbolName, const wxString &aLibrary)
 Revert unsaved changes for a symbol.
 
bool RevertLibrary (const wxString &aLibrary)
 Revert unsaved changes for a symbol library.
 
bool RevertAll ()
 Revert all pending changes.
 
wxString GetUniqueLibraryName () const
 Return a library name that is not currently in use.
 
void GetSymbolNames (const wxString &aLibName, wxArrayString &aSymbolNames, SYMBOL_NAME_FILTER aFilter=SYMBOL_NAME_FILTER::ALL)
 
size_t GetDerivedSymbolNames (const wxString &aSymbolName, const wxString &aLibraryName, wxArrayString &aList)
 Fetch all of the symbols derived from a aSymbolName into aList.
 
size_t GetLibraryCount () const
 

Static Public Member Functions

static std::unique_ptr< LIB_SYMBOLCreateSymbol (const NEW_SYMBOL_PROPERTIES &aProps, LIB_SYMBOL *aParent)
 

Protected Member Functions

void OnDataChanged () const override
 
bool addLibrary (const wxString &aFilePath, bool aCreate, LIBRARY_TABLE_SCOPE aScope)
 Helper function to add either existing or create new library.
 
std::set< LIB_SYMBOL * > getOriginalSymbols (const wxString &aLibrary)
 Return a set of LIB_SYMBOL objects belonging to the original library.
 
LIB_BUFFERgetLibraryBuffer (const wxString &aLibrary)
 Return an existing library buffer or creates one to using symbol library table to get the original data.
 

Static Protected Member Functions

static wxString getLibraryName (const wxString &aFilePath)
 Extract library name basing on the file name.
 

Protected Attributes

std::map< wxString, LIB_BUFFERm_libs
 The library buffers.
 
SCH_BASE_FRAMEm_frame
 Parent frame.
 
LIB_LOGGERm_logger
 

Private Member Functions

SYMBOL_TREE_SYNCHRONIZING_ADAPTERgetAdapter ()
 

Private Attributes

wxObjectDataPtr< LIB_TREE_MODEL_ADAPTERm_adapter
 
int m_syncHash
 Symbol lib table hash value from last synchronization.
 

Detailed Description

Symbol library management helper that is specific to the symbol library editor frame.

The base class handles library manipulation; this one also handles synchronizing the LIB_TREE.

Definition at line 53 of file lib_symbol_library_manager.h.

Constructor & Destructor Documentation

◆ LIB_SYMBOL_LIBRARY_MANAGER()

LIB_SYMBOL_LIBRARY_MANAGER::LIB_SYMBOL_LIBRARY_MANAGER ( SYMBOL_EDIT_FRAME & aFrame)

Member Function Documentation

◆ AddLibrary()

bool SYMBOL_LIBRARY_MANAGER::AddLibrary ( const wxString & aFilePath,
LIBRARY_TABLE_SCOPE aScope )
inlineinherited

Add an existing library.

The library is added to the library table as well.

Definition at line 222 of file symbol_library_manager.h.

References addLibrary().

◆ addLibrary()

◆ ClearLibraryModified()

bool SYMBOL_LIBRARY_MANAGER::ClearLibraryModified ( const wxString & aLibrary) const
inherited

Clear the modified flag for all symbols in a library.

Definition at line 260 of file symbol_library_manager.cpp.

References m_libs, and BASE_SCREEN::SetContentModified().

◆ ClearSymbolModified()

bool SYMBOL_LIBRARY_MANAGER::ClearSymbolModified ( const wxString & aSymbolName,
const wxString & aLibrary ) const
inherited

Clear the modified flag for a symbol.

Definition at line 279 of file symbol_library_manager.cpp.

References m_libs.

◆ CreateLibrary()

bool SYMBOL_LIBRARY_MANAGER::CreateLibrary ( const wxString & aFilePath,
LIBRARY_TABLE_SCOPE aScope )
inlineinherited

Create an empty library and adds it to the library table.

The library file is created.

Definition at line 212 of file symbol_library_manager.h.

References addLibrary().

Referenced by SCH_BASE_FRAME::SelectLibrary().

◆ CreateNewSymbol()

bool LIB_SYMBOL_LIBRARY_MANAGER::CreateNewSymbol ( const wxString & aLibrary,
const NEW_SYMBOL_PROPERTIES & aProps )

◆ CreateSymbol()

◆ EnumerateSymbols()

std::list< LIB_SYMBOL * > SYMBOL_LIBRARY_MANAGER::EnumerateSymbols ( const wxString & aLibrary) const
inherited

◆ GetAdapter()

wxObjectDataPtr< LIB_TREE_MODEL_ADAPTER > & LIB_SYMBOL_LIBRARY_MANAGER::GetAdapter ( )
inline

Return the adapter object that provides the stored data.

Definition at line 72 of file lib_symbol_library_manager.h.

References m_adapter.

Referenced by SYMBOL_EDITOR_CONTROL::FlattenSymbol(), and SYMBOL_EDITOR_CONTROL::RenameSymbol().

◆ getAdapter()

SYMBOL_TREE_SYNCHRONIZING_ADAPTER * LIB_SYMBOL_LIBRARY_MANAGER::getAdapter ( )
inlineprivate

Definition at line 78 of file lib_symbol_library_manager.h.

References m_adapter.

Referenced by Sync().

◆ GetBufferedSymbol()

LIB_SYMBOL * SYMBOL_LIBRARY_MANAGER::GetBufferedSymbol ( const wxString & aSymbolName,
const wxString & aLibrary )
inherited

◆ GetDerivedSymbolNames()

size_t SYMBOL_LIBRARY_MANAGER::GetDerivedSymbolNames ( const wxString & aSymbolName,
const wxString & aLibraryName,
wxArrayString & aList )
inherited

Fetch all of the symbols derived from a aSymbolName into aList.

Definition at line 653 of file symbol_library_manager.cpp.

References LIB_BUFFER::GetDerivedSymbolNames(), and getLibraryBuffer().

Referenced by DIALOG_LIB_FIELDS_TABLE::setScope().

◆ GetHash()

int SYMBOL_LIBRARY_MANAGER::GetHash ( ) const
inherited

◆ getLibraryBuffer()

LIB_BUFFER & SYMBOL_LIBRARY_MANAGER::getLibraryBuffer ( const wxString & aLibrary)
protectedinherited

Return an existing library buffer or creates one to using symbol library table to get the original data.

Definition at line 735 of file symbol_library_manager.cpp.

References LIB_BUFFER::CreateBuffer(), getOriginalSymbols(), LIB_BUFFER::GetSymbol(), and m_libs.

Referenced by GetBufferedSymbol(), GetDerivedSymbolNames(), GetSymbolNames(), RemoveSymbol(), UpdateLibraryBuffer(), UpdateSymbol(), and UpdateSymbolAfterRename().

◆ GetLibraryCount()

size_t SYMBOL_LIBRARY_MANAGER::GetLibraryCount ( ) const
inherited

◆ GetLibraryHash()

int SYMBOL_LIBRARY_MANAGER::GetLibraryHash ( const wxString & aLibrary) const
inherited

Return a library hash value to determine if it has changed.

For buffered libraries, it returns a number corresponding to the number of modifications. For original libraries, hash is computed basing on the library URI. Returns -1 when the requested library does not exist.

Definition at line 80 of file symbol_library_manager.cpp.

References LIBRARY_MANAGER::GetFullURI(), PGM_BASE::GetLibraryManager(), m_libs, Pgm(), and SYMBOL.

◆ getLibraryName()

wxString SYMBOL_LIBRARY_MANAGER::getLibraryName ( const wxString & aFilePath)
staticprotectedinherited

Extract library name basing on the file name.

Definition at line 669 of file symbol_library_manager.cpp.

Referenced by addLibrary().

◆ GetLibraryNames()

wxArrayString SYMBOL_LIBRARY_MANAGER::GetLibraryNames ( ) const
inherited

Return the array of library names.

Definition at line 96 of file symbol_library_manager.cpp.

References PGM_BASE::GetLibraryManager(), Pgm(), res, LIBRARY_MANAGER::Rows(), SCH_IO_MGR::ShowType(), and SYMBOL.

◆ getOriginalSymbols()

std::set< LIB_SYMBOL * > SYMBOL_LIBRARY_MANAGER::getOriginalSymbols ( const wxString & aLibrary)
protectedinherited

Return a set of LIB_SYMBOL objects belonging to the original library.

Definition at line 721 of file symbol_library_manager.cpp.

References SYMBOL_LIBRARY_ADAPTER::GetSymbols(), LibraryExists(), m_frame, and PROJECT_SCH::SymbolLibAdapter().

Referenced by getLibraryBuffer(), and SaveLibrary().

◆ GetScreen()

SCH_SCREEN * SYMBOL_LIBRARY_MANAGER::GetScreen ( const wxString & aSymbolName,
const wxString & aLibrary )
inherited

Return the screen used to edit a specific symbol.

SYMBOL_LIBRARY_MANAGER retains the ownership.

Definition at line 392 of file symbol_library_manager.cpp.

References LIB_BUFFER::GetBuffer(), and m_libs.

◆ GetSymbol()

LIB_SYMBOL * SYMBOL_LIBRARY_MANAGER::GetSymbol ( const wxString & aSymbolName,
const wxString & aLibrary ) const
inherited

Return either an alias of a working LIB_SYMBOL copy, or alias of the original symbol if there is no working copy.

Definition at line 532 of file symbol_library_manager.cpp.

References _, DisplayErrorMessage(), SYMBOL_LIBRARY_ADAPTER::LoadSymbol(), m_frame, m_libs, PROJECT_SCH::SymbolLibAdapter(), and IO_ERROR::What().

Referenced by CheckSavingIntoOwnInheritance(), LIB_SYMBOL_LIBRARY_MANAGER::CreateNewSymbol(), and SYMBOL_EDITOR_CONTROL::Init().

◆ GetSymbolNames()

void SYMBOL_LIBRARY_MANAGER::GetSymbolNames ( const wxString & aLibName,
wxArrayString & aSymbolNames,
SYMBOL_NAME_FILTER aFilter = SYMBOL_NAME_FILTER::ALL )
inherited

◆ GetUniqueLibraryName()

wxString SYMBOL_LIBRARY_MANAGER::GetUniqueLibraryName ( ) const
inherited

Return a library name that is not currently in use.

Used for generating names for new libraries.

Definition at line 624 of file symbol_library_manager.cpp.

References LibraryExists(), and name.

◆ HasModifications()

bool SYMBOL_LIBRARY_MANAGER::HasModifications ( ) const
inherited

Definition at line 61 of file symbol_library_manager.cpp.

References m_libs, and name.

◆ IsLibraryLoaded()

bool SYMBOL_LIBRARY_MANAGER::IsLibraryLoaded ( const wxString & aLibrary) const
inherited

Return true if the library was successfully loaded.

Definition at line 301 of file symbol_library_manager.cpp.

References LIBRARY_MANAGER_ADAPTER::IsLibraryLoaded(), m_frame, and PROJECT_SCH::SymbolLibAdapter().

◆ IsLibraryModified()

bool SYMBOL_LIBRARY_MANAGER::IsLibraryModified ( const wxString & aLibrary) const
inherited

Return true if library has unsaved modifications.

Definition at line 223 of file symbol_library_manager.cpp.

References m_libs.

Referenced by SYMBOL_EDITOR_CONTROL::Init().

◆ IsLibraryReadOnly()

bool SYMBOL_LIBRARY_MANAGER::IsLibraryReadOnly ( const wxString & aLibrary) const
inherited

Return true if the library is stored in a read-only file.

Returns
True on success, false otherwise.

Definition at line 294 of file symbol_library_manager.cpp.

References SYMBOL_LIBRARY_ADAPTER::IsSymbolLibWritable(), m_frame, and PROJECT_SCH::SymbolLibAdapter().

Referenced by SYMBOL_EDITOR_CONTROL::AddSymbol(), SYMBOL_EDITOR_CONTROL::CutCopyDelete(), and SYMBOL_EDITOR_CONTROL::DuplicateSymbol().

◆ IsSymbolModified()

bool SYMBOL_LIBRARY_MANAGER::IsSymbolModified ( const wxString & aSymbolName,
const wxString & aLibrary ) const
inherited

Return true if symbol has unsaved modifications.

Definition at line 230 of file symbol_library_manager.cpp.

References LIB_BUFFER::GetBuffer(), and m_libs.

◆ LibraryExists()

bool SYMBOL_LIBRARY_MANAGER::LibraryExists ( const wxString & aLibrary,
bool aCheckEnabled = false ) const
inherited

◆ OnDataChanged()

void LIB_SYMBOL_LIBRARY_MANAGER::OnDataChanged ( ) const
overrideprotectedvirtual

Reimplemented from SYMBOL_LIBRARY_MANAGER.

Definition at line 169 of file lib_symbol_library_manager.cpp.

References SYMBOL_LIBRARY_MANAGER::m_frame.

◆ RemoveSymbol()

bool SYMBOL_LIBRARY_MANAGER::RemoveSymbol ( const wxString & aSymbolName,
const wxString & aLibrary )
inherited

Remove the symbol from the symbol buffer.

It is required to save the library to have the symbol removed in the schematic editor.

Definition at line 517 of file symbol_library_manager.cpp.

References LIB_BUFFER::DeleteBuffer(), LIB_BUFFER::GetBuffer(), getLibraryBuffer(), and OnDataChanged().

Referenced by SYMBOL_EDITOR_CONTROL::RenameSymbol().

◆ RevertAll()

bool SYMBOL_LIBRARY_MANAGER::RevertAll ( )
inherited

Revert all pending changes.

Returns
True if all changes successfully reverted.

Definition at line 491 of file symbol_library_manager.cpp.

References GetHash(), m_libs, and RevertSymbol().

◆ RevertLibrary()

bool SYMBOL_LIBRARY_MANAGER::RevertLibrary ( const wxString & aLibrary)
inherited

Revert unsaved changes for a symbol library.

Returns
True on success, false otherwise.

Definition at line 477 of file symbol_library_manager.cpp.

References m_libs, and OnDataChanged().

◆ RevertSymbol()

LIB_ID SYMBOL_LIBRARY_MANAGER::RevertSymbol ( const wxString & aSymbolName,
const wxString & aLibrary )
inherited

Revert unsaved changes for a symbol.

Returns
The LIB_ID of the reverted symbol (which may be different in the case of a rename)

Definition at line 451 of file symbol_library_manager.cpp.

References LIB_SYMBOL::GetName(), m_libs, OnDataChanged(), and UpdateSymbolAfterRename().

Referenced by RevertAll().

◆ SaveLibrary()

bool SYMBOL_LIBRARY_MANAGER::SaveLibrary ( const wxString & aLibrary,
const wxString & aFileName,
SCH_IO_MGR::SCH_FILE_T aFileType = SCH_IO_MGR::SCH_FILE_T::SCH_LEGACY )
inherited

Save library to a file, including unsaved changes.

Parameters
aLibraryis the library name.
aFileNameis the target file name.
Returns
True on success, false otherwise.

Definition at line 115 of file symbol_library_manager.cpp.

References LIB_BUFFER::ClearDeletedBuffer(), FN_NORMALIZE_FLAGS, LIB_BUFFER::GetBuffers(), LIBRARY_MANAGER::GetFullURI(), PGM_BASE::GetLibraryManager(), LIB_SYMBOL::GetName(), getOriginalSymbols(), m_libs, Pgm(), SCH_IO_KICAD_LEGACY::PropBuffering, res, LIB_BUFFER::SaveBuffer(), LIB_SYMBOL::SetParent(), and SYMBOL.

◆ SetSymbolModified()

void SYMBOL_LIBRARY_MANAGER::SetSymbolModified ( const wxString & aSymbolName,
const wxString & aLibrary )
inherited

Definition at line 244 of file symbol_library_manager.cpp.

References LIB_BUFFER::GetBuffer(), and m_libs.

Referenced by SYMBOL_EDITOR_CONTROL::RenameSymbol().

◆ SymbolExists()

bool SYMBOL_LIBRARY_MANAGER::SymbolExists ( const wxString & aSymbolName,
const wxString & aLibrary ) const
inherited

Return true if symbol with a specific alias exists in library (either original one or buffered).

Definition at line 567 of file symbol_library_manager.cpp.

References SYMBOL_LIBRARY_ADAPTER::LoadSymbol(), m_frame, m_libs, and PROJECT_SCH::SymbolLibAdapter().

Referenced by SYMBOL_EDITOR_CONTROL::RenameSymbol().

◆ SymbolNameInUse()

bool SYMBOL_LIBRARY_MANAGER::SymbolNameInUse ( const wxString & aName,
const wxString & aLibrary )
inherited

Return true if the symbol name is already in use in the specified library.

Definition at line 591 of file symbol_library_manager.cpp.

References GetSymbolNames(), and UnescapeString().

Referenced by CheckForParentalChainConflicts(), CheckSavingIntoOwnInheritance(), and SYMBOL_EDITOR_CONTROL::RenameSymbol().

◆ Sync()

void LIB_SYMBOL_LIBRARY_MANAGER::Sync ( const wxString & aForceRefresh,
std::function< void(int, int, const wxString &)> aProgressCallback )

◆ UpdateLibraryBuffer()

bool SYMBOL_LIBRARY_MANAGER::UpdateLibraryBuffer ( const wxString & aLibrary)
inherited

Update the library buffer with a new version of the library.

Definition at line 778 of file symbol_library_manager.cpp.

References _, getLibraryBuffer(), and m_libs.

◆ UpdateSymbol()

bool SYMBOL_LIBRARY_MANAGER::UpdateSymbol ( LIB_SYMBOL * aSymbol,
const wxString & aLibrary )
inherited

Update the symbol buffer with a new version of the symbol.

The library buffer creates a copy of the symbol.

It is required to save the library to use the updated symbol in the schematic editor.

Definition at line 404 of file symbol_library_manager.cpp.

References LIB_BUFFER::CreateBuffer(), LIB_BUFFER::GetBuffer(), LIB_SYMBOL::GetLibId(), LIB_ID::GetLibItemName(), getLibraryBuffer(), LIB_SYMBOL::GetName(), BASE_SCREEN::SetContentModified(), and LIB_SYMBOL::SetLibId().

Referenced by LIB_SYMBOL_LIBRARY_MANAGER::CreateNewSymbol(), and SYMBOL_EDITOR_CONTROL::FlattenSymbol().

◆ UpdateSymbolAfterRename()

bool SYMBOL_LIBRARY_MANAGER::UpdateSymbolAfterRename ( LIB_SYMBOL * aSymbol,
const wxString & aOldSymbolName,
const wxString & aLibrary )
inherited

Update the symbol buffer with a new version of the symbol when the name has changed.

The old library buffer will be deleted and a new one created with the new name.

Definition at line 436 of file symbol_library_manager.cpp.

References LIB_BUFFER::GetBuffer(), getLibraryBuffer(), OnDataChanged(), and LIB_BUFFER::UpdateBuffer().

Referenced by SYMBOL_EDITOR_CONTROL::RenameSymbol(), and RevertSymbol().

Member Data Documentation

◆ m_adapter

wxObjectDataPtr<LIB_TREE_MODEL_ADAPTER> LIB_SYMBOL_LIBRARY_MANAGER::m_adapter
private

Definition at line 83 of file lib_symbol_library_manager.h.

Referenced by GetAdapter(), getAdapter(), and LIB_SYMBOL_LIBRARY_MANAGER().

◆ m_frame

◆ m_libs

◆ m_logger

LIB_LOGGER* SYMBOL_LIBRARY_MANAGER::m_logger
protectedinherited

◆ m_syncHash

int LIB_SYMBOL_LIBRARY_MANAGER::m_syncHash
private

Symbol lib table hash value from last synchronization.

Definition at line 85 of file lib_symbol_library_manager.h.

Referenced by LIB_SYMBOL_LIBRARY_MANAGER(), and Sync().


The documentation for this class was generated from the following files: