|
KiCad PCB EDA Suite
|
An interface to the global shared library manager that is schematic-specific and linked to one project in particular. More...
#include <symbol_library_adapter.h>
Public Types | |
| enum class | SYMBOL_TYPE { ALL_SYMBOLS , POWER_ONLY } |
| enum | SAVE_T { SAVE_OK , SAVE_SKIPPED } |
| The set of return values from SaveSymbol() below. More... | |
Public Member Functions | |
| SYMBOL_LIBRARY_ADAPTER (LIBRARY_MANAGER &aManager) | |
| ~SYMBOL_LIBRARY_ADAPTER () override | |
| LIBRARY_TABLE_TYPE | Type () const override |
| The type of library table this adapter works with. | |
| std::optional< LIB_STATUS > | LoadOne (LIB_DATA *aLib) override |
| Loads or reloads the given library, if it exists. | |
| std::optional< LIB_STATUS > | CheckLibrary (LIB_DATA *aLib) override |
| Validates that a library is loadable. May not necessarily load the library! | |
| std::optional< LIB_STATUS > | LoadOne (const wxString &aNickname) |
| Loads or reloads the given library, if it exists. | |
| std::vector< wxString > | GetAvailableExtraFields (const wxString &aNickname) |
| Returns a list of additional (non-mandatory) symbol fields present in the given library. | |
| bool | SupportsSubLibraries (const wxString &aNickname) const |
| std::vector< SUB_LIBRARY > | GetSubLibraries (const wxString &aNickname) const |
| bool | SupportsConfigurationDialog (const wxString &aNickname) const override |
| int | ShowConfigurationDialog (const wxString &aNickname, wxWindow *aParent) const override |
| std::vector< LIB_SYMBOL * > | GetSymbols (const wxString &aNickname, SYMBOL_TYPE aType=SYMBOL_TYPE::ALL_SYMBOLS) |
| std::vector< wxString > | GetSymbolNames (const wxString &aNickname, SYMBOL_TYPE aType=SYMBOL_TYPE::ALL_SYMBOLS) |
| LIB_SYMBOL * | LoadSymbol (const wxString &aNickname, const wxString &aName) |
| Load a LIB_SYMBOL having aName from the library given by aNickname. | |
| LIB_SYMBOL * | LoadSymbol (const LIB_ID &aLibId) |
| SAVE_T | SaveSymbol (const wxString &aNickname, std::unique_ptr< LIB_SYMBOL > aSymbol, bool aOverwrite=true) |
| Write aSymbol to an existing library given by aNickname. | |
| void | DeleteSymbol (const wxString &aNickname, const wxString &aSymbolName) |
| Deletes the aSymbolName from the library given by aNickname. | |
| bool | IsSymbolLibWritable (const wxString &aNickname) |
| Return true if the library given by aNickname is writable. | |
| int | GetModifyHash () const |
| std::optional< int > | GetLibraryModifyHash (const wxString &aNickname) const |
| Return the modify hash of a single library if it is currently loaded. | |
| LIBRARY_MANAGER & | Manager () const |
| LIBRARY_TABLE * | GlobalTable () const |
| Retrieves the global library table for this adapter type. | |
| std::optional< LIBRARY_TABLE * > | ProjectTable () const |
| Retrieves the project library table for this adapter type, or nullopt if one doesn't exist. | |
| std::optional< wxString > | FindLibraryByURI (const wxString &aURI) const |
| std::vector< wxString > | GetLibraryNames () const |
| Returns a list of library nicknames that are available (skips any that failed to load) | |
| bool | HasLibrary (const wxString &aNickname, bool aCheckEnabled=false) const |
| Test for the existence of aNickname in the library tables. | |
| bool | DeleteLibrary (const wxString &aNickname) |
| Deletes the given library from disk if it exists; returns true if deleted. | |
| std::optional< wxString > | GetLibraryDescription (const wxString &aNickname) const |
| std::vector< LIBRARY_TABLE_ROW * > | Rows (LIBRARY_TABLE_SCOPE aScope=LIBRARY_TABLE_SCOPE::BOTH, bool aIncludeInvalid=false) const |
| Like LIBRARY_MANAGER::Rows but filtered to the LIBRARY_TABLE_TYPE of this adapter. | |
| std::optional< LIBRARY_TABLE_ROW * > | GetRow (const wxString &aNickname, LIBRARY_TABLE_SCOPE aScope=LIBRARY_TABLE_SCOPE::BOTH) const |
| Like LIBRARY_MANAGER::GetRow but filtered to the LIBRARY_TABLE_TYPE of this adapter. | |
| std::optional< LIBRARY_TABLE_ROW * > | FindRowByURI (const wxString &aUri, LIBRARY_TABLE_SCOPE aScope=LIBRARY_TABLE_SCOPE::BOTH) const |
| Like LIBRARY_MANAGER::FindRowByURI but filtered to the LIBRARY_TABLE_TYPE of this adapter. | |
| virtual void | ProjectChanged () |
| Notify the adapter that the active project has changed. | |
| void | GlobalTablesChanged (std::initializer_list< LIBRARY_TABLE_TYPE > aChangedTables={}) |
| Notify the adapter that the global library tables have changed. | |
| void | ProjectTablesChanged (std::initializer_list< LIBRARY_TABLE_TYPE > aChangedTables={}) |
| Notify the adapter that the project library tables are about to be rebuilt. | |
| void | ProjectTablesReloaded (std::initializer_list< LIBRARY_TABLE_TYPE > aChangedTables={}) |
| Complements ProjectTablesChanged by erasing project-scope cache entries whose nicknames no longer appear in the rebuilt project table. | |
| void | CheckTableRow (LIBRARY_TABLE_ROW &aRow) |
| void | AsyncLoad () |
| Loads all available libraries for this adapter type in the background. | |
| std::optional< float > | AsyncLoadProgress () const |
| Returns the fraction of the libraries queued by AsyncLoad() that have been processed, or nullopt when there is nothing to report (no load has been requested since the last reset, or every library was already loaded). | |
| void | BlockUntilLoaded () |
| void | AbortAsyncLoad () |
| Aborts any async load in progress; blocks until fully done aborting. | |
| bool | IsLibraryLoaded (const wxString &aNickname) |
| std::optional< LIB_STATUS > | GetLibraryStatus (const wxString &aNickname) const |
| Returns the status of a loaded library, or nullopt if the library hasn't been loaded (yet) | |
| std::vector< std::pair< wxString, LIB_STATUS > > | GetLibraryStatuses () const |
| Returns a list of all library nicknames and their status (even if they failed to load) | |
| std::vector< KI_ERROR > | GetLibraryLoadErrors () const |
| Returns all library load errors as newline-separated strings for display. | |
| void | ReloadLibraryEntry (const wxString &aNickname, LIBRARY_TABLE_SCOPE aScope=LIBRARY_TABLE_SCOPE::BOTH) |
| Synchronously recreates the plugin for and reloads the given library. | |
| std::optional< LIB_STATUS > | LoadLibraryEntry (const wxString &aNickname) |
| Synchronously loads the named library to LOADED state. | |
| virtual bool | IsWritable (const wxString &aNickname) const |
| Return true if the given nickname exists and is not a read-only library. | |
| bool | CreateLibrary (const wxString &aNickname) |
| Creates the library (i.e. saves to disk) for the given row if it exists. | |
| virtual std::optional< LIBRARY_ERROR > | LibraryError (const wxString &aNickname) const |
Static Public Member Functions | |
| static wxString | GlobalPathEnvVariableName () |
Static Public Attributes | |
| static const char * | PropPowerSymsOnly = "pwr_sym_only" |
| static const char * | PropNonPowerSymsOnly = "non_pwr_sym_only" |
Protected Member Functions | |
| std::map< wxString, LIB_DATA > & | globalLibs () override |
| std::map< wxString, LIB_DATA > & | globalLibs () const override |
| std::shared_mutex & | globalLibsMutex () override |
| std::shared_mutex & | globalLibsMutex () const override |
| void | enumerateLibrary (LIB_DATA *aLib, const wxString &aUri) override |
| Override in derived class to perform library-specific enumeration. | |
| LIBRARY_RESULT< IO_BASE * > | createPlugin (const LIBRARY_TABLE_ROW *row) override |
| Creates a concrete plugin for the given row. | |
| IO_BASE * | plugin (const LIB_DATA *aRow) override |
| wxString | getUri (const LIBRARY_TABLE_ROW *aRow) const |
| std::optional< const LIB_DATA * > | fetchIfLoaded (const wxString &aNickname) const |
| std::optional< LIB_DATA * > | fetchIfLoaded (const wxString &aNickname) |
| LIBRARY_RESULT< LIB_DATA * > | loadIfNeeded (const wxString &aNickname) |
| Fetches a loaded library, triggering a load of that library if it isn't loaded yet. | |
| LIBRARY_RESULT< LIB_DATA * > | loadFromScope (const wxString &aNickname, LIBRARY_TABLE_SCOPE aScope, std::map< wxString, LIB_DATA > &aTarget, std::shared_mutex &aMutex) |
| void | evictOwnedGlobalEntries () |
| Erases this adapter's own entries (LIB_DATA::global_owner == this) from the process-wide globalLibs() cache. | |
| void | abortLoad () |
| Aborts any async load in progress; blocks until fully done aborting. | |
| void | resetProjectCache () |
| Aborts pending loads and resets every project-scope cache entry in place (plugin and row cleared, status returned to INVALID) while preserving the nickname keys. | |
Static Protected Member Functions | |
| static std::recursive_mutex & | pluginMutex (const wxString &aNickname) |
| Serializes access to a library's shared plugin instance so its single mutable cache is not raced by concurrent enumerate/load/save/delete calls from the loader pool, preview panels and tree refreshes. | |
Protected Attributes | |
| LIBRARY_MANAGER & | m_manager |
| std::map< wxString, LIB_DATA > | m_libraries |
| std::shared_mutex | m_librariesMutex |
| std::atomic_bool | m_abort |
| std::vector< std::future< void > > | m_futures |
| std::atomic< size_t > | m_loadCount { 0 } |
| std::atomic< size_t > | m_loadTotal { 0 } |
| std::mutex | m_loadMutex |
Static Private Member Functions | |
| static SCH_IO * | schplugin (const LIB_DATA *aRow) |
Private Attributes | |
| std::map< wxString, LIB_DATA > | m_scopedGlobalLibraries |
| std::shared_mutex | m_scopedGlobalLibraryMutex |
Static Private Attributes | |
| static LEAK_AT_EXIT< std::map< wxString, LIB_DATA > > | GlobalLibraries |
| static LEAK_AT_EXIT< std::shared_mutex > | GlobalLibraryMutex |
An interface to the global shared library manager that is schematic-specific and linked to one project in particular.
This is what can return actual concrete schematic library content (symbols).
Definition at line 52 of file symbol_library_adapter.h.
The set of return values from SaveSymbol() below.
| Enumerator | |
|---|---|
| SAVE_OK | |
| SAVE_SKIPPED | |
Definition at line 120 of file symbol_library_adapter.h.
|
strong |
| Enumerator | |
|---|---|
| ALL_SYMBOLS | |
| POWER_ONLY | |
Definition at line 86 of file symbol_library_adapter.h.
| SYMBOL_LIBRARY_ADAPTER::SYMBOL_LIBRARY_ADAPTER | ( | LIBRARY_MANAGER & | aManager | ) |
Definition at line 51 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::LIBRARY_MANAGER_ADAPTER().
|
override |
Definition at line 57 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::evictOwnedGlobalEntries().
|
inherited |
Aborts any async load in progress; blocks until fully done aborting.
This is the public interface to allow LIBRARY_MANAGER to abort loads before project changes.
Definition at line 1153 of file library_manager.cpp.
References abortLoad().
Referenced by PGM_BASE::PreloadDesignBlockLibraries(), PCB::IFACE::PreloadLibraries(), SCH::IFACE::PreloadLibraries(), ReconcileLegacyCacheSymbols(), and SCH_SCREEN::UpdateSymbolLinks().
|
protectedinherited |
Aborts any async load in progress; blocks until fully done aborting.
Definition at line 1429 of file library_manager.cpp.
References BlockUntilLoaded(), m_abort, m_futures, m_loadCount, m_loadMutex, m_loadTotal, and traceLibraries.
Referenced by AbortAsyncLoad(), CheckTableRow(), enumerateLibrary(), evictOwnedGlobalEntries(), GlobalTablesChanged(), ReloadLibraryEntry(), and resetProjectCache().
|
inherited |
Loads all available libraries for this adapter type in the background.
Definition at line 1853 of file library_manager.cpp.
References GetKiCadThreadPool(), getUri(), globalLibs(), globalLibsMutex(), LOADED, LOADING, m_futures, m_libraries, m_librariesMutex, m_loadCount, m_loadMutex, m_loadTotal, m_manager, PROJECT, tp, traceLibraries, and Type().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), filterFootprints(), PCB::IFACE::handleOpenFootprint(), SCH::IFACE::handleOpenSymbol(), PCBNEW_JOBS_HANDLER::JobExportDrc(), EESCHEMA_JOBS_HANDLER::JobSchErc(), PCB::IFACE::LoadAllLibraries(), SCH::IFACE::LoadAllLibraries(), API_HANDLER_LIBRARIES::loadAllLibraries(), LoadNetlistFootprints(), PANEL_FOOTPRINT_CHOOSER::PANEL_FOOTPRINT_CHOOSER(), PGM_BASE::PreloadDesignBlockLibraries(), PCB::IFACE::PreloadLibraries(), SCH::IFACE::PreloadLibraries(), and startFootprintLibraryLoad().
|
inherited |
Returns the fraction of the libraries queued by AsyncLoad() that have been processed, or nullopt when there is nothing to report (no load has been requested since the last reset, or every library was already loaded).
This is the non-blocking view of the load: anything other than 1.0 means a load may still be running. It reaches 1.0 once the last library has been counted, which can be a moment before the workers retire, so a path that must not stall still waits with BlockUntilLoaded().
Definition at line 1454 of file library_manager.cpp.
References m_loadCount, and m_loadTotal.
Referenced by BOOST_AUTO_TEST_CASE(), footprintLibraryLoadProgress(), PGM_BASE::PreloadDesignBlockLibraries(), PCB::IFACE::PreloadLibraries(), and SCH::IFACE::PreloadLibraries().
|
inherited |
Definition at line 1466 of file library_manager.cpp.
References m_futures, m_loadCount, m_loadMutex, m_loadTotal, and traceLibraries.
Referenced by abortLoad(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), filterFootprints(), PCB::IFACE::handleOpenFootprint(), SCH::IFACE::handleOpenSymbol(), PCBNEW_JOBS_HANDLER::JobExportDrc(), EESCHEMA_JOBS_HANDLER::JobSchErc(), LoadNetlistFootprints(), PANEL_FOOTPRINT_CHOOSER::PANEL_FOOTPRINT_CHOOSER(), PGM_BASE::PreloadDesignBlockLibraries(), PCB::IFACE::PreloadLibraries(), SCH::IFACE::PreloadLibraries(), and SYMBOL_EDIT_FRAME::SyncLibraries().
|
overridevirtual |
Validates that a library is loadable. May not necessarily load the library!
Reimplemented from LIBRARY_MANAGER_ADAPTER.
Definition at line 115 of file symbol_library_adapter.cpp.
References SCH_IO::CheckLibrary(), LIB_STATUS::error, LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_MANAGER_ADAPTER::getUri(), LOAD_ERROR, LIB_STATUS::load_status, LOADED, LOADING, LIBRARY_TABLE_ROW::Nickname(), LIBRARY_MANAGER_ADAPTER::pluginMutex(), IO_ERROR::Problem(), LIB_DATA::row, schplugin(), LIB_DATA::status, traceLibraries, IO_ERROR::What(), and IO_ERROR::Where().
|
inherited |
Definition at line 1256 of file library_manager.cpp.
References abortLoad(), CheckLibrary(), createPlugin(), LIBRARY_TABLE_ROW::Disabled(), fetchIfLoaded(), LIBRARY_TABLE_ROW::IsOk(), LOADED, message, LIBRARY_TABLE_ROW::Nickname(), LIB_DATA::plugin, plugin(), LIB_DATA::row, LIBRARY_TABLE_ROW::SetErrorDescription(), LIBRARY_TABLE_ROW::SetOk(), LIBRARY_TABLE_ROW::Type(), and LIBRARY_TABLE_ROW::URI().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and LIB_TABLE_NOTEBOOK_PANEL::onGridCellChanging().
|
inherited |
Creates the library (i.e. saves to disk) for the given row if it exists.
Definition at line 1662 of file library_manager.cpp.
References IO_BASE::CreateLibrary(), LIBRARY_TABLE_ROW::GetOptionsMap(), getUri(), loadIfNeeded(), LIB_DATA::plugin, pluginMutex(), result, LIB_DATA::row, traceLibraries, and IO_ERROR::What().
Referenced by SYMBOL_LIBRARY_MANAGER::addLibrary(), and SaveRemoteSymbolToLibrary().
|
overrideprotectedvirtual |
Creates a concrete plugin for the given row.
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 152 of file symbol_library_adapter.cpp.
References _, SCH_IO_MGR::EnumFromStr(), LIBRARY_MANAGER_ADAPTER::m_manager, LIBRARY_TABLE_ROW::Nickname(), plugin(), LIBRARY_TABLE_ROW::Scope(), traceLibraries, LIBRARY_TABLE_ROW::Type(), and LIBRARY_TABLE_ROW::URI().
|
inherited |
Deletes the given library from disk if it exists; returns true if deleted.
Definition at line 1373 of file library_manager.cpp.
References IO_BASE::DeleteLibrary(), LIBRARY_TABLE_ROW::GetOptionsMap(), getUri(), loadIfNeeded(), LIB_DATA::plugin, pluginMutex(), result, and LIB_DATA::row.
Referenced by Type().
| void SYMBOL_LIBRARY_ADAPTER::DeleteSymbol | ( | const wxString & | aNickname, |
| const wxString & | aSymbolName ) |
Deletes the aSymbolName from the library given by aNickname.
| aNickname | is a locator for the "library", it is a "name" in LIB_TABLE_ROW. |
| aSymbolName | is the name of a symbol to delete from the specified library. |
| IO_ERROR | if there is a problem finding the footprint or the library, or deleting it. |
Definition at line 346 of file symbol_library_adapter.cpp.
References SCH_IO::DeleteSymbol(), LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_MANAGER_ADAPTER::getUri(), LIBRARY_MANAGER_ADAPTER::loadIfNeeded(), LIBRARY_MANAGER_ADAPTER::pluginMutex(), LIB_DATA::row, schplugin(), and traceLibraries.
|
overrideprotectedvirtual |
Override in derived class to perform library-specific enumeration.
| aLib | |
| aUri | is the pre-resolved library URI (must be resolved on the main thread since URI expansion accesses PROJECT data that is not thread-safe). |
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 77 of file symbol_library_adapter.cpp.
References SCH_IO::EnumerateSymbolLib(), LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_TABLE_ROW::Nickname(), LIBRARY_MANAGER_ADAPTER::pluginMutex(), LIB_DATA::row, and schplugin().
|
protectedinherited |
Erases this adapter's own entries (LIB_DATA::global_owner == this) from the process-wide globalLibs() cache.
The cached LIB_DATA::row pointers reference this manager's tables, so they must be dropped before the manager is destroyed or a later manager's fetchIfLoaded() would dereference freed rows. Derived destructors must call this while globalLibs() is still resolvable.
Definition at line 1184 of file library_manager.cpp.
References abortLoad(), globalLibs(), and globalLibsMutex().
Referenced by enumerateLibrary(), DESIGN_BLOCK_LIBRARY_ADAPTER::~DESIGN_BLOCK_LIBRARY_ADAPTER(), FOOTPRINT_LIBRARY_ADAPTER::~FOOTPRINT_LIBRARY_ADAPTER(), and SYMBOL_LIBRARY_ADAPTER::~SYMBOL_LIBRARY_ADAPTER().
|
protectedinherited |
Definition at line 1735 of file library_manager.cpp.
References find, globalLibs(), globalLibsMutex(), LOADED, m_libraries, m_librariesMutex, m_manager, PROJECT, and Type().
|
protectedinherited |
Definition at line 1702 of file library_manager.cpp.
References find, globalLibs(), globalLibsMutex(), LOADED, m_libraries, m_librariesMutex, m_manager, PROJECT, and Type().
Referenced by CheckTableRow(), DESIGN_BLOCK_LIBRARY_ADAPTER::DeleteDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::DeleteFootprint(), DESIGN_BLOCK_LIBRARY_ADAPTER::DesignBlockExists(), enumerateLibrary(), FOOTPRINT_LIBRARY_ADAPTER::FootprintExists(), FOOTPRINT_LIBRARY_ADAPTER::GenerateTimestamp(), SYMBOL_LIBRARY_ADAPTER::GetAvailableExtraFields(), DESIGN_BLOCK_LIBRARY_ADAPTER::GetDesignBlockNames(), DESIGN_BLOCK_LIBRARY_ADAPTER::GetDesignBlocks(), DESIGN_BLOCK_LIBRARY_ADAPTER::GetEnumeratedDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::GetFootprintNames(), GetLibraryDescription(), SYMBOL_LIBRARY_ADAPTER::GetLibraryModifyHash(), GetLibraryNames(), SYMBOL_LIBRARY_ADAPTER::GetModifyHash(), SYMBOL_LIBRARY_ADAPTER::GetSubLibraries(), SYMBOL_LIBRARY_ADAPTER::GetSymbolNames(), SYMBOL_LIBRARY_ADAPTER::GetSymbols(), HasLibrary(), DESIGN_BLOCK_LIBRARY_ADAPTER::IsDesignBlockLibWritable(), FOOTPRINT_LIBRARY_ADAPTER::IsFootprintLibWritable(), SYMBOL_LIBRARY_ADAPTER::IsSymbolLibWritable(), IsWritable(), DESIGN_BLOCK_LIBRARY_ADAPTER::LoadDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::LoadFootprint(), SYMBOL_LIBRARY_ADAPTER::LoadSymbol(), FOOTPRINT_LIBRARY_ADAPTER::RefreshLibraryIfChanged(), DESIGN_BLOCK_LIBRARY_ADAPTER::SaveDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::SaveFootprint(), SYMBOL_LIBRARY_ADAPTER::ShowConfigurationDialog(), SYMBOL_LIBRARY_ADAPTER::SupportsConfigurationDialog(), and SYMBOL_LIBRARY_ADAPTER::SupportsSubLibraries().
|
inherited |
Definition at line 1327 of file library_manager.cpp.
References LIBRARY_MANAGER::GetFullURI(), m_manager, Type(), and LIBRARY_MANAGER::UrisAreEquivalent().
Referenced by Type().
|
inherited |
Like LIBRARY_MANAGER::FindRowByURI but filtered to the LIBRARY_TABLE_TYPE of this adapter.
Definition at line 1421 of file library_manager.cpp.
References m_manager, and Type().
Referenced by FOOTPRINT_EDIT_FRAME::KiwayMailIn(), SYMBOL_EDIT_FRAME::KiwayMailIn(), and Type().
| std::vector< wxString > SYMBOL_LIBRARY_ADAPTER::GetAvailableExtraFields | ( | const wxString & | aNickname | ) |
Returns a list of additional (non-mandatory) symbol fields present in the given library.
Definition at line 376 of file symbol_library_adapter.cpp.
References LIB_DATA::available_fields_cache, LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), SCH_IO::GetAvailableSymbolFields(), SCH_IO::GetModifyHash(), LIB_DATA::modify_hash, result, and schplugin().
Referenced by SYMBOL_TREE_SYNCHRONIZING_ADAPTER::updateLibrary().
|
inherited |
Definition at line 1398 of file library_manager.cpp.
References fetchIfLoaded().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), PCB_BASE_FRAME::GetLibraryItemsForListDialog(), SCH_BASE_FRAME::GetLibraryItemsForListDialog(), and Type().
|
inherited |
Returns all library load errors as newline-separated strings for display.
Definition at line 1551 of file library_manager.cpp.
References _, GetLibraryStatuses(), LOAD_ERROR, and RPT_SEVERITY_ERROR.
Referenced by PCB_EDIT_FRAME::KiwayMailIn(), SCH_EDIT_FRAME::KiwayMailIn(), PCB::IFACE::PreloadLibraries(), and SCH::IFACE::PreloadLibraries().
| std::optional< int > SYMBOL_LIBRARY_ADAPTER::GetLibraryModifyHash | ( | const wxString & | aNickname | ) | const |
Return the modify hash of a single library if it is currently loaded.
Unlike GetModifyHash(), which sums the hashes of every loaded library, this reports just the named library so callers can react to changes in a specific dependency without being disturbed by unrelated (for example asynchronously loading) libraries.
| aNickname | is the library nickname in the symbol library table. |
Definition at line 485 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), SCH_IO::GetModifyHash(), result, LIB_DATA::row, and schplugin().
|
inherited |
Returns a list of library nicknames that are available (skips any that failed to load)
Definition at line 1339 of file library_manager.cpp.
References fetchIfLoaded(), INSENSITIVE, m_manager, StrNumSort(), traceLibraries, and Type().
Referenced by BOOST_AUTO_TEST_CASE(), CVPCB_MAINFRAME::BuildLibrariesList(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), DESIGN_BLOCK_LIBRARY_ADAPTER::DesignBlockLoadWithOptionalNickname(), filterFootprints(), FOOTPRINT_LIBRARY_ADAPTER::GenerateTimestamp(), SYMBOL_LIBRARY_MANAGER::GetLibraryCount(), PCB_BASE_FRAME::GetLibraryItemsForListDialog(), SCH_BASE_FRAME::GetLibraryItemsForListDialog(), guessNickname(), FOOTPRINT_LIBRARY_ADAPTER::LoadFootprintWithOptionalNickname(), FOOTPRINT_VIEWER_FRAME::OnActivate(), DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), FOOTPRINT_LIST_IMPL::ReadFootprintFiles(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), FOOTPRINT_VIEWER_FRAME::ReCreateLibraryList(), FOOTPRINT_LIBRARY_ADAPTER::RefreshChangedLibraries(), SAVE_AS_DIALOG::SAVE_AS_DIALOG(), and Type().
|
inherited |
Returns the status of a loaded library, or nullopt if the library hasn't been loaded (yet)
Definition at line 1833 of file library_manager.cpp.
References find, globalLibs(), globalLibsMutex(), m_libraries, and m_librariesMutex.
Referenced by GetLibraryStatuses(), API_HANDLER_LIBRARIES::handleGetLibraryStatuses(), DESIGN_BLOCK_LIBRARY_ADAPTER::libraryUnavailableMessage(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), and CV::testFootprintLink().
|
inherited |
Returns a list of all library nicknames and their status (even if they failed to load)
Definition at line 1521 of file library_manager.cpp.
References GetLibraryStatus(), INVALID, m_manager, result, and Type().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), GetLibraryLoadErrors(), and SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync().
| int SYMBOL_LIBRARY_ADAPTER::GetModifyHash | ( | ) | const |
Definition at line 467 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), SCH_IO::GetModifyHash(), LIBRARY_MANAGER_ADAPTER::m_manager, result, LIB_DATA::row, schplugin(), and Type().
Referenced by SYMBOL_LIBRARY_MANAGER::GetHash().
|
inherited |
Like LIBRARY_MANAGER::GetRow but filtered to the LIBRARY_TABLE_TYPE of this adapter.
Definition at line 1414 of file library_manager.cpp.
References m_manager, and Type().
Referenced by PANEL_PREVIEW_3D_MODEL::alignmentModel(), BOOST_AUTO_TEST_CASE(), EXPORTER_STEP::buildFootprint3DShapes(), FOOTPRINT_EDITOR_CONTROL::CompareLibraryWithFile(), SYMBOL_VIEWER_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), IDF_EXPORTER::exportFootprintIdfModels(), SCH_EDITOR_CONTROL::ExportSymbolsToLibrary(), EXPORTER_PCB_VRML::ExportVrmlFootprint(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetValue(), SYMBOL_EDITOR_CONTROL::Init(), SYMBOL_EDIT_FRAME::IsSymbolFromLegacyLibrary(), SYMBOL_EDIT_FRAME::KiwayMailIn(), SYMBOL_VIEWER_FRAME::KiwayMailIn(), DESIGN_BLOCK_LIBRARY_ADAPTER::libraryUnavailableMessage(), RENDER_3D_RAYTRACE_BASE::load3DModels(), RENDER_3D_OPENGL::load3dModels(), SCH_EDIT_FRAME::LoadSheetFromFile(), PANEL_SYMBOL_CHOOSER::PANEL_SYMBOL_CHOOSER(), SYMBOL_VIEWER_FRAME::ReCreateLibList(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), DRC_TEST_PROVIDER_LIBRARY_PARITY::Run(), SYMBOL_EDIT_FRAME::saveLibrary(), PCB_BASE_FRAME::setFPWatcher(), SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync(), DIALOG_FOOTPRINT_ASSOCIATIONS::TransferDataToWindow(), Type(), SCH_SCREEN::UpdateSymbolLinks(), and PANEL_FP_PROPERTIES_3D_MODEL::validateModelExists().
| std::vector< SUB_LIBRARY > SYMBOL_LIBRARY_ADAPTER::GetSubLibraries | ( | const wxString & | aNickname | ) | const |
Definition at line 411 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), SCH_IO::GetSubLibraryDescription(), SCH_IO::GetSubLibraryNames(), name, result, schplugin(), traceLibraries, and IO_ERROR::What().
Referenced by SYMBOL_VIEWER_FRAME::ReCreateLibList().
| std::vector< wxString > SYMBOL_LIBRARY_ADAPTER::GetSymbolNames | ( | const wxString & | aNickname, |
| SYMBOL_TYPE | aType = SYMBOL_TYPE::ALL_SYMBOLS ) |
Definition at line 225 of file symbol_library_adapter.cpp.
References SCH_IO::EnumerateSymbolLib(), LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_MANAGER_ADAPTER::getUri(), name, LIBRARY_TABLE_ROW::Nickname(), LIBRARY_MANAGER_ADAPTER::pluginMutex(), POWER_ONLY, PropPowerSymsOnly, LIB_DATA::row, schplugin(), traceLibraries, and IO_ERROR::What().
Referenced by DIALOG_EDIT_SYMBOLS_LIBID::onClickOrphansButton(), ReconcileLegacyCacheSymbols(), and SYMBOL_VIEWER_FRAME::ReCreateLibList().
| std::vector< LIB_SYMBOL * > SYMBOL_LIBRARY_ADAPTER::GetSymbols | ( | const wxString & | aNickname, |
| SYMBOL_TYPE | aType = SYMBOL_TYPE::ALL_SYMBOLS ) |
Definition at line 187 of file symbol_library_adapter.cpp.
References SCH_IO::EnumerateSymbolLib(), LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_MANAGER_ADAPTER::getUri(), LIBRARY_TABLE_ROW::Nickname(), LIBRARY_MANAGER_ADAPTER::pluginMutex(), POWER_ONLY, PropPowerSymsOnly, LIB_DATA::row, schplugin(), LIB_ID::SetLibNickname(), traceLibraries, and IO_ERROR::What().
Referenced by BOOST_AUTO_TEST_CASE(), SYMBOL_LIBRARY_MANAGER::EnumerateSymbols(), SYMBOL_LIBRARY_MANAGER::getOriginalSymbols(), SYMBOL_LIB_TABLE_RESCUER::OpenRescueLibrary(), and SYMBOL_VIEWER_FRAME::ReCreateSymbolList().
|
protectedinherited |
Definition at line 1696 of file library_manager.cpp.
References LIBRARY_MANAGER::ExpandURI(), m_manager, and LIBRARY_TABLE_ROW::URI().
Referenced by AsyncLoad(), SYMBOL_LIBRARY_ADAPTER::CheckLibrary(), CreateLibrary(), DESIGN_BLOCK_LIBRARY_ADAPTER::DeleteDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::DeleteFootprint(), DeleteLibrary(), SYMBOL_LIBRARY_ADAPTER::DeleteSymbol(), DESIGN_BLOCK_LIBRARY_ADAPTER::DesignBlockExists(), enumerateLibrary(), FOOTPRINT_LIBRARY_ADAPTER::FootprintExists(), DESIGN_BLOCK_LIBRARY_ADAPTER::GetDesignBlockNames(), DESIGN_BLOCK_LIBRARY_ADAPTER::GetDesignBlocks(), DESIGN_BLOCK_LIBRARY_ADAPTER::GetEnumeratedDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::GetFootprintNames(), SYMBOL_LIBRARY_ADAPTER::GetSymbolNames(), SYMBOL_LIBRARY_ADAPTER::GetSymbols(), DESIGN_BLOCK_LIBRARY_ADAPTER::IsDesignBlockLibWritable(), FOOTPRINT_LIBRARY_ADAPTER::IsFootprintLibWritable(), SYMBOL_LIBRARY_ADAPTER::IsSymbolLibWritable(), IsWritable(), DESIGN_BLOCK_LIBRARY_ADAPTER::LoadDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::LoadFootprint(), DESIGN_BLOCK_LIBRARY_ADAPTER::LoadOne(), FOOTPRINT_LIBRARY_ADAPTER::LoadOne(), SYMBOL_LIBRARY_ADAPTER::LoadOne(), SYMBOL_LIBRARY_ADAPTER::LoadSymbol(), FOOTPRINT_LIBRARY_ADAPTER::RefreshLibraryIfChanged(), DESIGN_BLOCK_LIBRARY_ADAPTER::SaveDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::SaveFootprint(), and SYMBOL_LIBRARY_ADAPTER::SaveSymbol().
|
inlineoverrideprotectedvirtual |
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 185 of file symbol_library_adapter.h.
References GlobalLibraries, LIBRARY_MANAGER_ADAPTER::m_manager, and m_scopedGlobalLibraries.
|
inlineoverrideprotectedvirtual |
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 180 of file symbol_library_adapter.h.
References GlobalLibraries, LIBRARY_MANAGER_ADAPTER::m_manager, and m_scopedGlobalLibraries.
|
inlineoverrideprotectedvirtual |
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 195 of file symbol_library_adapter.h.
References GlobalLibraryMutex, LIBRARY_MANAGER_ADAPTER::m_manager, and m_scopedGlobalLibraryMutex.
|
inlineoverrideprotectedvirtual |
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 190 of file symbol_library_adapter.h.
References GlobalLibraryMutex, LIBRARY_MANAGER_ADAPTER::m_manager, and m_scopedGlobalLibraryMutex.
|
static |
Definition at line 63 of file symbol_library_adapter.cpp.
References ENV_VAR::GetVersionedEnvVarName().
|
inherited |
|
inherited |
Notify the adapter that the global library tables have changed.
Definition at line 1159 of file library_manager.cpp.
References abortLoad(), globalLibs(), globalLibsMutex(), and Type().
Referenced by Type().
|
inherited |
Test for the existence of aNickname in the library tables.
| aNickname | is the library nickname. |
| aCheckEnabled | if true will only return true for enabled libraries |
Definition at line 1362 of file library_manager.cpp.
References fetchIfLoaded().
Referenced by SYMBOL_EDIT_FRAME::AddLibraryFile(), SYMBOL_EDIT_FRAME::addLibTableEntry(), BOOST_AUTO_TEST_CASE(), SYMBOL_VIEWER_FRAME::ClickOnLibList(), SYMBOL_EDIT_FRAME::DdAddLibrary(), BOARD_INSPECTION_TOOL::DiffFootprint(), SCH_INSPECTION_TOOL::DiffSymbol(), FOOTPRINT_LIBRARY_ADAPTER::GenerateTimestamp(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), FOOTPRINT_EDIT_FRAME::KiwayMailIn(), SYMBOL_EDIT_FRAME::KiwayMailIn(), SYMBOL_LIBRARY_MANAGER::LibraryExists(), SCH_EDIT_FRAME::LoadSheetFromFile(), PANEL_SYMBOL_CHOOSER::PANEL_SYMBOL_CHOOSER(), DRC_TEST_PROVIDER_LIBRARY_PARITY::Run(), SYMBOL_EDIT_FRAME::saveLibrary(), SCH_BASE_FRAME::SelectLibrary(), CV::testFootprintLink(), Type(), and SCH_SCREEN::UpdateSymbolLinks().
|
inherited |
Definition at line 1481 of file library_manager.cpp.
References find, globalLibs(), globalLibsMutex(), LOADED, m_libraries, and m_librariesMutex.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), SYMBOL_LIBRARY_MANAGER::IsLibraryLoaded(), loadLibrary(), DRC_TEST_PROVIDER_LIBRARY_PARITY::Run(), and ERC_TESTER::TestLibSymbolIssues().
| bool SYMBOL_LIBRARY_ADAPTER::IsSymbolLibWritable | ( | const wxString & | aNickname | ) |
Return true if the library given by aNickname is writable.
It is possible that some symbols libraries are read only because of where they are installed.
| aNickname | is the library nickname in the symbol library table. |
| IO_ERROR | if no library at aNickname exists. |
Definition at line 365 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), and LIBRARY_MANAGER_ADAPTER::getUri().
Referenced by SYMBOL_LIBRARY_MANAGER::IsLibraryReadOnly(), and HEADLESS_SYMBOL_EDITOR_CONTEXT::SaveSymbol().
|
virtualinherited |
Return true if the given nickname exists and is not a read-only library.
Definition at line 1645 of file library_manager.cpp.
References fetchIfLoaded(), getUri(), IO_BASE::IsLibraryWritable(), LIB_DATA::plugin, pluginMutex(), result, and LIB_DATA::row.
|
virtualinherited |
Definition at line 1501 of file library_manager.cpp.
References find, globalLibs(), globalLibsMutex(), m_libraries, and m_librariesMutex.
Referenced by LIB_TABLE_GRID_TRICKS::onGridCellLeftClick().
|
protectedinherited |
Definition at line 1768 of file library_manager.cpp.
References createPlugin(), GLOBAL, LOADING, m_manager, LIBRARY_TABLE_ROW::Nickname(), plugin(), result, traceLibraries, and Type().
Referenced by enumerateLibrary(), loadIfNeeded(), and ReloadLibraryEntry().
|
protectedinherited |
Fetches a loaded library, triggering a load of that library if it isn't loaded yet.
Definition at line 1815 of file library_manager.cpp.
References _, GLOBAL, globalLibs(), globalLibsMutex(), loadFromScope(), m_libraries, m_librariesMutex, PROJECT, and result.
Referenced by CreateLibrary(), DeleteLibrary(), SYMBOL_LIBRARY_ADAPTER::DeleteSymbol(), enumerateLibrary(), LoadLibraryEntry(), DESIGN_BLOCK_LIBRARY_ADAPTER::LoadOne(), FOOTPRINT_LIBRARY_ADAPTER::LoadOne(), SYMBOL_LIBRARY_ADAPTER::LoadOne(), and SYMBOL_LIBRARY_ADAPTER::SaveSymbol().
|
inherited |
Synchronously loads the named library to LOADED state.
Returns the resulting status, or nullopt if the library is not found in any table.
Definition at line 1575 of file library_manager.cpp.
References loadIfNeeded(), LoadOne(), and result.
Referenced by API_HANDLER_LIBRARIES::handleGetItemsFromLibrary(), API_HANDLER_LIBRARIES::handleGetLibraryItems(), and loadLibrary().
| std::optional< LIB_STATUS > SYMBOL_LIBRARY_ADAPTER::LoadOne | ( | const wxString & | aNickname | ) |
Loads or reloads the given library, if it exists.
Definition at line 140 of file symbol_library_adapter.cpp.
References LOAD_ERROR, LIBRARY_MANAGER_ADAPTER::loadIfNeeded(), LoadOne(), and result.
|
overridevirtual |
Loads or reloads the given library, if it exists.
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 88 of file symbol_library_adapter.cpp.
References SCH_IO::EnumerateSymbolLib(), LIB_STATUS::error, LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_MANAGER_ADAPTER::getUri(), LOAD_ERROR, LIB_STATUS::load_status, LOADED, LOADING, LIBRARY_TABLE_ROW::Nickname(), LIBRARY_MANAGER_ADAPTER::pluginMutex(), IO_ERROR::Problem(), LIB_DATA::row, schplugin(), LIB_DATA::status, traceLibraries, IO_ERROR::What(), and IO_ERROR::Where().
Referenced by SYMBOL_LIBRARY_MANAGER::addLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), SYMBOL_EDIT_FRAME::addLibTableEntry(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), SYMBOL_EDIT_FRAME::DdAddLibrary(), SCH_EDIT_FRAME::KiwayMailIn(), LoadOne(), SCH_IO_EAGLE::LoadSchematicFile(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), and SCH_SCREEN::UpdateSymbolLinks().
|
inline |
Definition at line 112 of file symbol_library_adapter.h.
References LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), and LoadSymbol().
| LIB_SYMBOL * SYMBOL_LIBRARY_ADAPTER::LoadSymbol | ( | const wxString & | aNickname, |
| const wxString & | aName ) |
Load a LIB_SYMBOL having aName from the library given by aNickname.
| aNickname | is a locator for the "library", it is a "name" in LIBRARY_TABLE_ROW |
| aName | is the name of the LIB_SYMBOL to load. |
| IO_ERROR | if the library cannot be found or read. No exception is thrown in the case where aNickname cannot be found. |
Definition at line 259 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), LIBRARY_MANAGER_ADAPTER::getUri(), SCH_IO::LoadSymbol(), LIBRARY_MANAGER_ADAPTER::pluginMutex(), schplugin(), LIB_ID::SetLibNickname(), and traceLibraries.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), SCH_INSPECTION_TOOL::DiffSymbol(), SYMBOL_PREVIEW_WIDGET::DisplaySymbol(), SYMBOL_LIBRARY_MANAGER::GetBufferedSymbol(), SYMBOL_VIEWER_FRAME::GetSelectedSymbol(), SYMBOL_LIBRARY_MANAGER::GetSymbol(), SCH_SYMBOL::GetVariantLibSymbol(), SCH::IFACE::handleOpenSymbol(), API_HANDLER_SCH::handlePlaceSymbolFromLibrary(), HEADLESS_SYMBOL_EDITOR_CONTEXT::LoadSymbol(), SYMBOL_EDIT_FRAME::LoadSymbol(), LoadSymbol(), SYMBOL_EDIT_FRAME::LoadSymbolFromLib(), API_HANDLER_SCH_LIBRARIES::packLibraryItem(), PANEL_SYMBOL_CHOOSER::populateFootprintSelector(), ReconcileLegacyCacheSymbols(), HEADLESS_SYMBOL_EDITOR_CONTEXT::RevertSymbol(), SchGetLibSymbol(), SCH_EDIT_TOOL::SetVariantSymbol(), PANEL_SYMBOL_CHOOSER::showFootprintFor(), SYMBOL_LIBRARY_MANAGER::SymbolExists(), ERC_TESTER::TestLibSymbolIssues(), ERC_TESTER::TestVariantSymbols(), DIALOG_EDIT_SYMBOLS_LIBID::TransferDataFromWindow(), and SCH_SCREEN::UpdateSymbolLinks().
|
inherited |
Definition at line 1124 of file library_manager.cpp.
References m_manager.
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 204 of file symbol_library_adapter.h.
References schplugin().
Referenced by createPlugin(), and SaveSymbol().
|
staticprotectedinherited |
Serializes access to a library's shared plugin instance so its single mutable cache is not raced by concurrent enumerate/load/save/delete calls from the loader pool, preview panels and tree refreshes.
Keyed by nickname, a safe over-approximation of the real resource (the plugin instance): sharing one mutex across two distinct resources can only over-serialize, never under-protect. Static because global-library plugins are shared process-wide. Recursive because database/http libraries resolve references back through the adapter into other plugins' LoadSymbol paths while already holding their own mutex.
Definition at line 53 of file library_manager.cpp.
Referenced by SYMBOL_LIBRARY_ADAPTER::CheckLibrary(), CreateLibrary(), FOOTPRINT_LIBRARY_ADAPTER::DeleteFootprint(), DeleteLibrary(), SYMBOL_LIBRARY_ADAPTER::DeleteSymbol(), DESIGN_BLOCK_LIBRARY_ADAPTER::DesignBlockExists(), FOOTPRINT_LIBRARY_ADAPTER::enumerateLibrary(), SYMBOL_LIBRARY_ADAPTER::enumerateLibrary(), FOOTPRINT_LIBRARY_ADAPTER::FootprintExists(), FOOTPRINT_LIBRARY_ADAPTER::GetFootprintNames(), SYMBOL_LIBRARY_ADAPTER::GetSymbolNames(), SYMBOL_LIBRARY_ADAPTER::GetSymbols(), FOOTPRINT_LIBRARY_ADAPTER::IsFootprintLibWritable(), IsWritable(), DESIGN_BLOCK_LIBRARY_ADAPTER::LoadDesignBlock(), FOOTPRINT_LIBRARY_ADAPTER::LoadFootprint(), SYMBOL_LIBRARY_ADAPTER::LoadOne(), SYMBOL_LIBRARY_ADAPTER::LoadSymbol(), plugin(), FOOTPRINT_LIBRARY_ADAPTER::SaveFootprint(), and SYMBOL_LIBRARY_ADAPTER::SaveSymbol().
|
virtualinherited |
Notify the adapter that the active project has changed.
Definition at line 1130 of file library_manager.cpp.
References resetProjectCache().
|
inherited |
Retrieves the project library table for this adapter type, or nullopt if one doesn't exist.
Definition at line 1321 of file library_manager.cpp.
References m_manager, PROJECT, and Type().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), SCH_IO_EAGLE::LoadSchematicFile(), SCH_EDIT_FRAME::LoadSheetFromFile(), SCH_EDIT_FRAME::OpenProjectFiles(), and Type().
|
inherited |
Notify the adapter that the project library tables are about to be rebuilt.
Mirrors GlobalTablesChanged: aborts any in-progress loads and invalidates cached LIB_DATA entries so raw LIBRARY_TABLE_ROW pointers do not dangle when the backing LIBRARY_TABLE objects are destroyed and rebuilt. Entries are reset in place (rather than erased) so their nicknames continue to mask same-named global libraries until the project scope is repopulated.
Definition at line 1202 of file library_manager.cpp.
References resetProjectCache(), and Type().
|
inherited |
Complements ProjectTablesChanged by erasing project-scope cache entries whose nicknames no longer appear in the rebuilt project table.
Must be called AFTER the new project table is loaded; otherwise removed libraries would be permanently masked by stale sentinels installed during the reset.
Definition at line 1222 of file library_manager.cpp.
References m_libraries, m_librariesMutex, m_manager, PROJECT, and Type().
|
inherited |
Synchronously recreates the plugin for and reloads the given library.
Definition at line 1586 of file library_manager.cpp.
References abortLoad(), BOTH, GLOBAL, globalLibs(), globalLibsMutex(), loadFromScope(), LoadOne(), m_libraries, m_librariesMutex, PROJECT, result, traceLibraries, and UNINITIALIZED.
Referenced by SCH_IO_EAGLE::LoadSchematicFile().
|
protectedinherited |
Aborts pending loads and resets every project-scope cache entry in place (plugin and row cleared, status returned to INVALID) while preserving the nickname keys.
Keeping the keys acts as a sentinel: fetchIfLoaded() finds the entry, sees it is no longer LOADED, and returns nullopt instead of falling through to globalLibs(), which is what preserves project-over- global shadowing across a project table reload. Shared between ProjectChanged() and ProjectTablesChanged() so both hooks stay in sync.
Definition at line 1136 of file library_manager.cpp.
References abortLoad(), m_libraries, and m_librariesMutex.
Referenced by enumerateLibrary(), ProjectChanged(), and ProjectTablesChanged().
|
inherited |
Like LIBRARY_MANAGER::Rows but filtered to the LIBRARY_TABLE_TYPE of this adapter.
Definition at line 1407 of file library_manager.cpp.
References m_manager, and Type().
Referenced by API_HANDLER_LIBRARIES::handleGetLibraryItems(), DESIGN_BLOCK_LIBRARY_ADAPTER::libraryUnavailableMessage(), CVPCB_MAINFRAME::LoadFootprintFiles(), LoadNetlistFootprints(), ReconcileLegacyCacheSymbols(), and Type().
| SYMBOL_LIBRARY_ADAPTER::SAVE_T SYMBOL_LIBRARY_ADAPTER::SaveSymbol | ( | const wxString & | aNickname, |
| std::unique_ptr< LIB_SYMBOL > | aSymbol, | ||
| bool | aOverwrite = true ) |
Write aSymbol to an existing library given by aNickname.
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.
| aNickname | is a locator for the "library", it is a "name" in LIB_TABLE_ROW |
| aSymbol | is what to store in the library. The library owns the symbol after this call. |
| aOverwrite | when true means overwrite any existing symbol by the same name, else if false means skip the write and return SAVE_SKIPPED. |
| IO_ERROR | if there is a problem saving the symbol. |
Definition at line 284 of file symbol_library_adapter.cpp.
References LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_MANAGER_ADAPTER::getUri(), LIBRARY_MANAGER_ADAPTER::loadIfNeeded(), plugin(), LIBRARY_MANAGER_ADAPTER::pluginMutex(), LIB_DATA::row, SAVE_OK, SAVE_SKIPPED, schplugin(), traceLibraries, and IO_ERROR::What().
Referenced by SaveRemoteSymbolToLibrary(), and HEADLESS_SYMBOL_EDITOR_CONTEXT::SaveSymbol().
Definition at line 69 of file symbol_library_adapter.cpp.
References LIB_DATA::plugin.
Referenced by CheckLibrary(), DeleteSymbol(), enumerateLibrary(), GetAvailableExtraFields(), GetLibraryModifyHash(), GetModifyHash(), GetSubLibraries(), GetSymbolNames(), GetSymbols(), LoadOne(), LoadSymbol(), plugin(), SaveSymbol(), and SupportsSubLibraries().
|
overridevirtual |
Reimplemented from LIBRARY_MANAGER_ADAPTER.
Definition at line 451 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), and DIALOG_SHIM::ShowModal().
|
overridevirtual |
Reimplemented from LIBRARY_MANAGER_ADAPTER.
Definition at line 442 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), and result.
| bool SYMBOL_LIBRARY_ADAPTER::SupportsSubLibraries | ( | const wxString & | aNickname | ) | const |
Definition at line 399 of file symbol_library_adapter.cpp.
References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), result, schplugin(), and SCH_IO::SupportsSubLibraries().
Referenced by SYMBOL_VIEWER_FRAME::ReCreateLibList(), and SYMBOL_VIEWER_FRAME::ReCreateSymbolList().
|
inlineoverridevirtual |
The type of library table this adapter works with.
Implements LIBRARY_MANAGER_ADAPTER.
Definition at line 63 of file symbol_library_adapter.h.
References SYMBOL.
Referenced by GetModifyHash().
|
staticprivate |
Definition at line 213 of file symbol_library_adapter.h.
Referenced by globalLibs(), and globalLibs().
|
staticprivate |
Definition at line 217 of file symbol_library_adapter.h.
Referenced by globalLibsMutex(), and globalLibsMutex().
|
protectedinherited |
Definition at line 279 of file library_manager.h.
Referenced by abortLoad().
|
protectedinherited |
Definition at line 280 of file library_manager.h.
Referenced by abortLoad(), AsyncLoad(), and BlockUntilLoaded().
|
protectedinherited |
Definition at line 275 of file library_manager.h.
Referenced by AsyncLoad(), fetchIfLoaded(), fetchIfLoaded(), GetLibraryStatus(), IsLibraryLoaded(), LibraryError(), loadIfNeeded(), ProjectTablesReloaded(), ReloadLibraryEntry(), and resetProjectCache().
|
mutableprotectedinherited |
Definition at line 277 of file library_manager.h.
Referenced by AsyncLoad(), fetchIfLoaded(), fetchIfLoaded(), GetLibraryStatus(), IsLibraryLoaded(), LibraryError(), loadIfNeeded(), ProjectTablesReloaded(), ReloadLibraryEntry(), and resetProjectCache().
|
protectedinherited |
Definition at line 282 of file library_manager.h.
Referenced by abortLoad(), AsyncLoad(), AsyncLoadProgress(), and BlockUntilLoaded().
|
protectedinherited |
Definition at line 284 of file library_manager.h.
Referenced by abortLoad(), AsyncLoad(), and BlockUntilLoaded().
|
protectedinherited |
Definition at line 283 of file library_manager.h.
Referenced by abortLoad(), AsyncLoad(), AsyncLoadProgress(), and BlockUntilLoaded().
|
protectedinherited |
Definition at line 272 of file library_manager.h.
Referenced by AsyncLoad(), DESIGN_BLOCK_LIBRARY_ADAPTER::createPlugin(), FOOTPRINT_LIBRARY_ADAPTER::createPlugin(), SYMBOL_LIBRARY_ADAPTER::createPlugin(), fetchIfLoaded(), fetchIfLoaded(), FindLibraryByURI(), FindRowByURI(), GetLibraryNames(), GetLibraryStatuses(), SYMBOL_LIBRARY_ADAPTER::GetModifyHash(), GetRow(), getUri(), SYMBOL_LIBRARY_ADAPTER::globalLibs(), SYMBOL_LIBRARY_ADAPTER::globalLibs(), SYMBOL_LIBRARY_ADAPTER::globalLibsMutex(), SYMBOL_LIBRARY_ADAPTER::globalLibsMutex(), GlobalTable(), LIBRARY_MANAGER_ADAPTER(), loadFromScope(), Manager(), ProjectTable(), ProjectTablesReloaded(), and Rows().
|
mutableprivate |
Definition at line 210 of file symbol_library_adapter.h.
Referenced by globalLibs(), and globalLibs().
|
mutableprivate |
Definition at line 211 of file symbol_library_adapter.h.
Referenced by globalLibsMutex(), and globalLibsMutex().
|
static |
Definition at line 56 of file symbol_library_adapter.h.
|
static |
Definition at line 55 of file symbol_library_adapter.h.
Referenced by SCH_IO_ALTIUM::doEnumerateSymbolLib(), SCH_IO_DATABASE::EnumerateSymbolLib(), SCH_IO_HTTP_LIB::EnumerateSymbolLib(), SCH_IO_HTTP_LIB::EnumerateSymbolLib(), SCH_IO_KICAD_LEGACY::EnumerateSymbolLib(), SCH_IO_KICAD_LEGACY::EnumerateSymbolLib(), SCH_IO_KICAD_SEXPR::EnumerateSymbolLib(), SCH_IO_KICAD_SEXPR::EnumerateSymbolLib(), SCH_IO_PADS::EnumerateSymbolLib(), SCH_IO_PADS::EnumerateSymbolLib(), GetSymbolNames(), and GetSymbols().