|
KiCad PCB EDA Suite
|
#include <library_manager.h>
Public Member Functions | |
| LIBRARY_MANAGER () | |
| ~LIBRARY_MANAGER () | |
| LIBRARY_MANAGER (const LIBRARY_MANAGER &)=delete | |
| LIBRARY_MANAGER & | operator= (const LIBRARY_MANAGER &)=delete |
| void | LoadGlobalTables (std::initializer_list< LIBRARY_TABLE_TYPE > aTablesToLoad={}) |
| (Re)loads the global library tables in the given list, or all tables if no list is given | |
| void | LoadProjectTables (std::initializer_list< LIBRARY_TABLE_TYPE > aTablesToLoad={}) |
| (Re)loads the project library tables in the given list, or all tables if no list is given | |
| void | ReloadTables (LIBRARY_TABLE_SCOPE aScope, std::initializer_list< LIBRARY_TABLE_TYPE > aTablesToLoad={}) |
| void | ProjectChanged () |
| Notify all adapters that the project has changed. | |
| void | AbortAsyncLoads () |
| Abort any async library loading operations in progress. | |
| void | RegisterAdapter (LIBRARY_TABLE_TYPE aType, std::unique_ptr< LIBRARY_MANAGER_ADAPTER > &&aAdapter) |
| bool | RemoveAdapter (LIBRARY_TABLE_TYPE aType, LIBRARY_MANAGER_ADAPTER *aAdapter) |
| std::optional< LIBRARY_MANAGER_ADAPTER * > | Adapter (LIBRARY_TABLE_TYPE aType) const |
| std::optional< LIBRARY_TABLE * > | Table (LIBRARY_TABLE_TYPE aType, LIBRARY_TABLE_SCOPE aScope) |
| Retrieves a given table; creating a new empty project table if a valid project is loaded and the given table type doesn't exist in the project. | |
| std::vector< LIBRARY_TABLE_ROW * > | Rows (LIBRARY_TABLE_TYPE aType, LIBRARY_TABLE_SCOPE aScope=LIBRARY_TABLE_SCOPE::BOTH, bool aIncludeInvalid=false) const |
| Returns a flattened list of libraries of the given type. | |
| std::optional< LIBRARY_TABLE_ROW * > | GetRow (LIBRARY_TABLE_TYPE aType, const wxString &aNickname, LIBRARY_TABLE_SCOPE aScope=LIBRARY_TABLE_SCOPE::BOTH) const |
| std::optional< LIBRARY_TABLE_ROW * > | FindRowByURI (LIBRARY_TABLE_TYPE aType, const wxString &aUri, LIBRARY_TABLE_SCOPE aScope=LIBRARY_TABLE_SCOPE::BOTH) const |
| void | ReloadLibraryEntry (LIBRARY_TABLE_TYPE aType, const wxString &aNickname, LIBRARY_TABLE_SCOPE aScope=LIBRARY_TABLE_SCOPE::BOTH) |
| void | LoadProjectTables (const wxString &aProjectPath, std::initializer_list< LIBRARY_TABLE_TYPE > aTablesToLoad={}) |
| std::optional< wxString > | GetFullURI (LIBRARY_TABLE_TYPE aType, const wxString &aNickname, bool aSubstituted=false) const |
| Return the full location specifying URI for the LIB, either in original UI form or in environment variable expanded form. | |
Static Public Member Functions | |
| static wxString | DefaultGlobalTablePath (LIBRARY_TABLE_TYPE aType) |
| static bool | IsTableValid (const wxString &aPath) |
| static bool | GlobalTablesValid () |
| static std::vector< LIBRARY_TABLE_TYPE > | InvalidGlobalTables () |
| static bool | CreateGlobalTable (LIBRARY_TABLE_TYPE aType, bool aPopulateDefaultLibraries) |
| static wxString | GetFullURI (const LIBRARY_TABLE_ROW *aRow, bool aSubstituted=false) |
| static wxString | ExpandURI (const wxString &aShortURI, const PROJECT &aProject) |
| static bool | UrisAreEquivalent (const wxString &aURI1, const wxString &aURI2) |
Private Member Functions | |
| void | loadTables (const wxString &aTablePath, LIBRARY_TABLE_SCOPE aScope, std::vector< LIBRARY_TABLE_TYPE > aTablesToLoad={}) |
| void | loadNestedTables (LIBRARY_TABLE &aTable) |
| void | createEmptyTable (LIBRARY_TABLE_TYPE aType, LIBRARY_TABLE_SCOPE aScope) |
Static Private Member Functions | |
| static wxString | tableFileName (LIBRARY_TABLE_TYPE aType) |
Private Attributes | |
| std::map< LIBRARY_TABLE_TYPE, std::unique_ptr< LIBRARY_TABLE > > | m_tables |
| std::map< wxString, std::unique_ptr< LIBRARY_TABLE > > | m_childTables |
| Map of full URI to table object for tables that are referenced by global or project tables. | |
| std::map< LIBRARY_TABLE_TYPE, std::unique_ptr< LIBRARY_TABLE > > | m_projectTables |
| std::map< LIBRARY_TABLE_TYPE, std::unique_ptr< LIBRARY_MANAGER_ADAPTER > > | m_adapters |
| std::mutex | m_adaptersMutex |
Definition at line 220 of file library_manager.h.
| LIBRARY_MANAGER::LIBRARY_MANAGER | ( | ) |
Definition at line 49 of file library_manager.cpp.
Referenced by LIBRARY_MANAGER(), and operator=().
|
default |
|
delete |
References LIBRARY_MANAGER().
| void LIBRARY_MANAGER::AbortAsyncLoads | ( | ) |
Abort any async library loading operations in progress.
This should be called before modifying the project list to prevent race conditions with background threads that access Prj().
Definition at line 503 of file library_manager.cpp.
References m_adapters, and m_adaptersMutex.
Referenced by SETTINGS_MANAGER::LoadProject(), and SETTINGS_MANAGER::UnloadProject().
| std::optional< LIBRARY_MANAGER_ADAPTER * > LIBRARY_MANAGER::Adapter | ( | LIBRARY_TABLE_TYPE | aType | ) | const |
Definition at line 537 of file library_manager.cpp.
References m_adapters, and m_adaptersMutex.
Referenced by PROJECT::DesignBlockLibs(), PROJECT_PCB::FootprintLibAdapter(), ReloadLibraryEntry(), and PROJECT_SCH::SymbolLibAdapter().
|
private |
Definition at line 165 of file library_manager.cpp.
References GetSettingsManager(), PATHS::GetUserSettingsPath(), GLOBAL, m_projectTables, m_tables, Pgm(), Prj(), PROJECT, and tableFileName().
Referenced by Table().
|
static |
Definition at line 367 of file library_manager.cpp.
References _, DefaultGlobalTablePath(), PATHS::GetStockTemplatesPath(), GLOBAL, LIBRARY_TABLE_ROW::SetDescription(), LIBRARY_TABLE_ROW::SetNickname(), LIBRARY_TABLE_ROW::SetType(), LIBRARY_TABLE_ROW::SetURI(), table, LIBRARY_TABLE_ROW::TABLE_TYPE_NAME, tableFileName(), traceLibraries, and IO_ERROR::What().
Referenced by STARTWIZARD_PROVIDER_LIBRARIES::ApplyDefaults(), STARTWIZARD_PROVIDER_LIBRARIES::Finish(), PANEL_FP_LIB_TABLE::onReset(), PANEL_SYM_LIB_TABLE::onReset(), and operator=().
|
static |
Definition at line 321 of file library_manager.cpp.
References FN_NORMALIZE_FLAGS, PATHS::GetUserSettingsPath(), and tableFileName().
Referenced by CreateGlobalTable(), PANEL_STARTWIZARD_LIBRARIES::InitTableListMsg(), and operator=().
|
static |
Definition at line 750 of file library_manager.cpp.
References ExpandEnvVarSubstitutions(), and path.
Referenced by LIBRARY_MANAGER_ADAPTER::getUri(), LIBRARY_TABLE::HasRowWithURI(), loadNestedTables(), DESIGN_BLOCK_GRID_TRICKS::openTable(), FP_GRID_TRICKS::openTable(), SYMBOL_GRID_TRICKS::openTable(), DESIGN_BLOCK_LIB_TABLE_GRID_DATA_MODEL::SetValue(), FP_LIB_TABLE_GRID_DATA_MODEL::SetValue(), and SYMBOL_LIB_TABLE_GRID_DATA_MODEL::SetValue().
| std::optional< LIBRARY_TABLE_ROW * > LIBRARY_MANAGER::FindRowByURI | ( | LIBRARY_TABLE_TYPE | aType, |
| const wxString & | aUri, | ||
| LIBRARY_TABLE_SCOPE | aScope = LIBRARY_TABLE_SCOPE::BOTH ) const |
Definition at line 681 of file library_manager.cpp.
References GetFullURI(), Rows(), and UrisAreEquivalent().
Referenced by DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable().
|
static |
Definition at line 740 of file library_manager.cpp.
References ExpandEnvVarSubstitutions(), GetSettingsManager(), Pgm(), Prj(), and LIBRARY_TABLE_ROW::URI().
| std::optional< wxString > LIBRARY_MANAGER::GetFullURI | ( | LIBRARY_TABLE_TYPE | aType, |
| const wxString & | aNickname, | ||
| bool | aSubstituted = false ) const |
Return the full location specifying URI for the LIB, either in original UI form or in environment variable expanded form.
| aType | determines which tables will be searched for the library |
| aNickname | is the library to look up |
| aSubstituted | Tells if caller wanted the substituted form, else not. |
Definition at line 729 of file library_manager.cpp.
References GetFullURI(), GetRow(), and result.
Referenced by EXPORTER_STEP::buildFootprint3DShapes(), FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), SYMBOL_VIEWER_FRAME::DisplayLibInfos(), CVPCB_MAINFRAME::DisplayStatus(), FOOTPRINT_EDIT_FRAME::DuplicateFootprint(), SYMBOL_EDIT_FRAME::ExportSymbol(), SCH_EDITOR_CONTROL::ExportSymbolsToLibrary(), EXPORTER_PCB_VRML::ExportVrmlFootprint(), FindRowByURI(), FOOTPRINT_LIBRARY_ADAPTER::GenerateTimestamp(), GetFullURI(), SYMBOL_LIBRARY_MANAGER::GetLibraryHash(), idf_export_footprint(), SYMBOL_EDIT_FRAME::KiwayMailIn(), SYMBOL_VIEWER_FRAME::KiwayMailIn(), RENDER_3D_RAYTRACE_BASE::load3DModels(), RENDER_3D_OPENGL::load3dModels(), SCH_EDIT_FRAME::LoadSheetFromFile(), NETLIST_EXPORTER_XML::makeLibraries(), PANEL_FP_PROPERTIES_3D_MODEL::OnAdd3DModel(), FOOTPRINT_EDITOR_CONTROL::OpenDirectory(), SYMBOL_EDITOR_CONTROL::OpenDirectory(), FOOTPRINT_EDITOR_CONTROL::OpenWithTextEditor(), SYMBOL_EDITOR_CONTROL::OpenWithTextEditor(), DRC_TEST_PROVIDER_LIBRARY_PARITY::Run(), FOOTPRINT_EDITOR_CONTROL::SaveAs(), FOOTPRINT_EDIT_FRAME::SaveFootprint(), FOOTPRINT_EDIT_FRAME::SaveFootprintAs(), SYMBOL_LIBRARY_MANAGER::SaveLibrary(), SYMBOL_EDIT_FRAME::saveLibrary(), PCB_BASE_FRAME::setFPWatcher(), SCH_BASE_FRAME::setSymWatcher(), ERC_TESTER::TestLibSymbolIssues(), FOOTPRINT_VIEWER_FRAME::UpdateTitle(), and PANEL_FP_PROPERTIES_3D_MODEL::validateModelExists().
| std::optional< LIBRARY_TABLE_ROW * > LIBRARY_MANAGER::GetRow | ( | LIBRARY_TABLE_TYPE | aType, |
| const wxString & | aNickname, | ||
| LIBRARY_TABLE_SCOPE | aScope = LIBRARY_TABLE_SCOPE::BOTH ) const |
| aType | determines which type of libraries to return (symbol, footprint, ...) |
| aScope | determines whether to search project, global, or both library tables |
| aNickname | is the library nickname to retrieve |
Definition at line 667 of file library_manager.cpp.
References Rows().
Referenced by SYMBOL_TREE_MODEL_ADAPTER::AddLibraries(), SYMBOL_TREE_MODEL_ADAPTER::AddLibrary(), GetFullURI(), SYMBOL_EDIT_FRAME::LoadSymbol(), SYMBOL_LIB_TABLE_RESCUER::OpenRescueLibrary(), ERC_TESTER::TestLibSymbolIssues(), and SYMBOL_LIB_TABLE_RESCUER::WriteRescueLibrary().
|
static |
Definition at line 344 of file library_manager.cpp.
References InvalidGlobalTables().
Referenced by STARTWIZARD_PROVIDER_LIBRARIES::NeedsUserInput(), and operator=().
|
static |
Definition at line 350 of file library_manager.cpp.
References DESIGN_BLOCK, FOOTPRINT, PATHS::GetUserSettingsPath(), IsTableValid(), SYMBOL, and tableFileName().
Referenced by STARTWIZARD_PROVIDER_LIBRARIES::ApplyDefaults(), STARTWIZARD_PROVIDER_LIBRARIES::Finish(), STARTWIZARD_PROVIDER_LIBRARIES::GetWizardPanel(), GlobalTablesValid(), and operator=().
|
static |
Definition at line 332 of file library_manager.cpp.
References GLOBAL, and LIBRARY_TABLE::IsOk().
Referenced by PANEL_STARTWIZARD_LIBRARIES::InitTableListMsg(), InvalidGlobalTables(), and operator=().
| void LIBRARY_MANAGER::LoadGlobalTables | ( | std::initializer_list< LIBRARY_TABLE_TYPE > | aTablesToLoad = {} | ) |
(Re)loads the global library tables in the given list, or all tables if no list is given
Definition at line 407 of file library_manager.cpp.
References DESIGN_BLOCK, FOOTPRINT, SETTINGS_MANAGER::GetAppSettings(), PGM_BASE::GetLocalEnvVariables(), PGM_BASE::GetSettingsManager(), PATHS::GetUserSettingsPath(), ENV_VAR::GetVersionedEnvVarValue(), GLOBAL, loadTables(), m_adapters, m_adaptersMutex, KICAD_SETTINGS::m_PcmLibAutoAdd, KICAD_SETTINGS::m_PcmLibAutoRemove, KICAD_SETTINGS::m_PcmLibPrefix, LIBRARY_ERROR::message, PCM_LIB_TRAVERSER::Modified(), Pgm(), SYMBOL, Table(), table, and traceLibraries.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), InvokeEditDesignBlockLibTable(), InvokePcbLibTableEditor(), InvokeSchEditSymbolLibTable(), PGM_KICAD::OnPgmInit(), PANEL_FP_LIB_TABLE::onReset(), PANEL_SYM_LIB_TABLE::onReset(), operator=(), and ReloadTables().
|
private |
Definition at line 102 of file library_manager.cpp.
References _, ExpandURI(), GetSettingsManager(), m_childTables, Pgm(), Prj(), WX_FILENAME::ResolvePossibleSymlinks(), LIBRARY_TABLE::Scope(), LIBRARY_TABLE_ROW::TABLE_TYPE_NAME, and traceLibraries.
Referenced by loadTables().
| void LIBRARY_MANAGER::LoadProjectTables | ( | const wxString & | aProjectPath, |
| std::initializer_list< LIBRARY_TABLE_TYPE > | aTablesToLoad = {} ) |
Definition at line 703 of file library_manager.cpp.
References loadTables(), m_projectTables, PROJECT, and traceLibraries.
| void LIBRARY_MANAGER::LoadProjectTables | ( | std::initializer_list< LIBRARY_TABLE_TYPE > | aTablesToLoad = {} | ) |
(Re)loads the project library tables in the given list, or all tables if no list is given
Definition at line 486 of file library_manager.cpp.
References GetSettingsManager(), LoadProjectTables(), Pgm(), and Prj().
Referenced by BOOST_AUTO_TEST_CASE(), SCH_EDIT_FRAME::KiwayMailIn(), LoadProjectTables(), ProjectChanged(), and ReloadTables().
|
private |
Definition at line 57 of file library_manager.cpp.
References DESIGN_BLOCK, FOOTPRINT, GLOBAL, loadNestedTables(), m_projectTables, m_tables, PROJECT, SYMBOL, table, tableFileName(), and traceLibraries.
Referenced by LoadGlobalTables(), and LoadProjectTables().
|
delete |
| void LIBRARY_MANAGER::ProjectChanged | ( | ) |
Notify all adapters that the project has changed.
Definition at line 492 of file library_manager.cpp.
References GetSettingsManager(), LoadProjectTables(), m_adapters, m_adaptersMutex, Pgm(), and Prj().
Referenced by DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), InvokeEditDesignBlockLibTable(), InvokePcbLibTableEditor(), InvokeSchEditSymbolLibTable(), and SETTINGS_MANAGER::LoadProject().
| void LIBRARY_MANAGER::RegisterAdapter | ( | LIBRARY_TABLE_TYPE | aType, |
| std::unique_ptr< LIBRARY_MANAGER_ADAPTER > && | aAdapter ) |
Definition at line 512 of file library_manager.cpp.
References m_adapters, and m_adaptersMutex.
Referenced by PROJECT::DesignBlockLibs(), PROJECT_PCB::FootprintLibAdapter(), and PROJECT_SCH::SymbolLibAdapter().
| void LIBRARY_MANAGER::ReloadLibraryEntry | ( | LIBRARY_TABLE_TYPE | aType, |
| const wxString & | aNickname, | ||
| LIBRARY_TABLE_SCOPE | aScope = LIBRARY_TABLE_SCOPE::BOTH ) |
Definition at line 695 of file library_manager.cpp.
References Adapter().
Referenced by PANEL_REMOTE_SYMBOL::receiveFootprint(), and PANEL_REMOTE_SYMBOL::receiveSymbol().
| void LIBRARY_MANAGER::ReloadTables | ( | LIBRARY_TABLE_SCOPE | aScope, |
| std::initializer_list< LIBRARY_TABLE_TYPE > | aTablesToLoad = {} ) |
Definition at line 719 of file library_manager.cpp.
References LoadGlobalTables(), LoadProjectTables(), and PROJECT.
Referenced by DESIGN_BLOCK_PANE::AddDesignBlockLibrary(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_LIBRARY_MANAGER::addLibrary(), SYMBOL_EDIT_FRAME::addLibTableEntry(), and SYMBOL_EDIT_FRAME::replaceLibTableEntry().
| bool LIBRARY_MANAGER::RemoveAdapter | ( | LIBRARY_TABLE_TYPE | aType, |
| LIBRARY_MANAGER_ADAPTER * | aAdapter ) |
Definition at line 523 of file library_manager.cpp.
References m_adapters, and m_adaptersMutex.
| std::vector< LIBRARY_TABLE_ROW * > LIBRARY_MANAGER::Rows | ( | LIBRARY_TABLE_TYPE | aType, |
| LIBRARY_TABLE_SCOPE | aScope = LIBRARY_TABLE_SCOPE::BOTH, | ||
| bool | aIncludeInvalid = false ) const |
Returns a flattened list of libraries of the given type.
| aType | determines which type of libraries to return (symbol, footprint, ...) |
| aIncludeInvalid | will include the nicknames of libraries even if they could not be loaded for some reason (file not found, etc) |
Definition at line 588 of file library_manager.cpp.
References BOTH, GLOBAL, m_childTables, m_projectTables, m_tables, PROJECT, table, LIBRARY_TABLE_ROW::TABLE_TYPE_NAME, and UNINITIALIZED.
Referenced by DESIGN_BLOCK_TREE_MODEL_ADAPTER::AddLibraries(), SYMBOL_TREE_MODEL_ADAPTER::AddLibraries(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), FindRowByURI(), SYMBOL_LIBRARY_MANAGER::GetLibraryNames(), GetRow(), and DIALOG_CONFIGURE_PATHS::TransferDataToWindow().
| std::optional< LIBRARY_TABLE * > LIBRARY_MANAGER::Table | ( | LIBRARY_TABLE_TYPE | aType, |
| LIBRARY_TABLE_SCOPE | aScope ) |
Retrieves a given table; creating a new empty project table if a valid project is loaded and the given table type doesn't exist in the project.
| aType | determines which type of table to return |
| aScope | determines whether to return a global or project table |
Definition at line 548 of file library_manager.cpp.
References BOTH, createEmptyTable(), GetSettingsManager(), GLOBAL, m_projectTables, m_tables, Pgm(), Prj(), PROJECT, traceLibraries, and UNINITIALIZED.
Referenced by DESIGN_BLOCK_PANE::AddDesignBlockLibrary(), PCB_BASE_EDIT_FRAME::AddLibrary(), SYMBOL_LIBRARY_MANAGER::addLibrary(), SYMBOL_EDIT_FRAME::AddLibraryFile(), SYMBOL_EDIT_FRAME::addLibTableEntry(), DIALOG_SYMBOL_REMAP::createProjectSymbolLibTable(), SYMBOL_EDIT_FRAME::DdAddLibrary(), PANEL_REMOTE_SYMBOL::ensureFootprintLibraryEntry(), PANEL_REMOTE_SYMBOL::ensureSymbolLibraryEntry(), SCH_EDIT_FRAME::KiwayMailIn(), LoadGlobalTables(), PANEL_FP_LIB_TABLE::onReset(), PANEL_SYM_LIB_TABLE::onReset(), PANEL_DESIGN_BLOCK_LIB_TABLE::PANEL_DESIGN_BLOCK_LIB_TABLE(), PANEL_FP_LIB_TABLE::PANEL_FP_LIB_TABLE(), PANEL_SYM_LIB_TABLE::PANEL_SYM_LIB_TABLE(), SYMBOL_EDIT_FRAME::replaceLibTableEntry(), PANEL_DESIGN_BLOCK_LIB_TABLE::TransferDataFromWindow(), PANEL_FP_LIB_TABLE::TransferDataFromWindow(), PANEL_SYM_LIB_TABLE::TransferDataFromWindow(), and SYMBOL_LIB_TABLE_RESCUER::WriteRescueLibrary().
|
staticprivate |
Definition at line 153 of file library_manager.cpp.
References DESIGN_BLOCK, FILEEXT::DesignBlockLibraryTableFileName, FOOTPRINT, FILEEXT::FootprintLibraryTableFileName, SYMBOL, and FILEEXT::SymbolLibraryTableFileName.
Referenced by createEmptyTable(), CreateGlobalTable(), DefaultGlobalTablePath(), InvalidGlobalTables(), and loadTables().
|
static |
Definition at line 758 of file library_manager.cpp.
Referenced by LIBRARY_MANAGER_ADAPTER::FindLibraryByURI(), and FindRowByURI().
|
private |
Definition at line 342 of file library_manager.h.
Referenced by AbortAsyncLoads(), Adapter(), LoadGlobalTables(), ProjectChanged(), RegisterAdapter(), and RemoveAdapter().
|
mutableprivate |
Definition at line 344 of file library_manager.h.
Referenced by AbortAsyncLoads(), Adapter(), LoadGlobalTables(), ProjectChanged(), RegisterAdapter(), and RemoveAdapter().
|
private |
Map of full URI to table object for tables that are referenced by global or project tables.
Definition at line 337 of file library_manager.h.
Referenced by loadNestedTables(), and Rows().
|
private |
Definition at line 340 of file library_manager.h.
Referenced by createEmptyTable(), LoadProjectTables(), loadTables(), Rows(), and Table().
|
private |
Definition at line 334 of file library_manager.h.
Referenced by createEmptyTable(), loadTables(), Rows(), and Table().