|
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 | ProjectChanged () |
| Notify all adapters that the project has changed. | |
| void | RegisterAdapter (LIBRARY_TABLE_TYPE aType, std::unique_ptr< 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 | LoadProjectTables (const wxString &aProjectPath) |
| 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 199 of file library_manager.h.
| LIBRARY_MANAGER::LIBRARY_MANAGER | ( | ) |
Definition at line 45 of file library_manager.cpp.
Referenced by LIBRARY_MANAGER(), and operator=().
|
default |
|
delete |
References LIBRARY_MANAGER().
| std::optional< LIBRARY_MANAGER_ADAPTER * > LIBRARY_MANAGER::Adapter | ( | LIBRARY_TABLE_TYPE | aType | ) | const |
Definition at line 505 of file library_manager.cpp.
References m_adapters, and m_adaptersMutex.
Referenced by PROJECT::DesignBlockLibs(), PROJECT_PCB::FootprintLibAdapter(), and PROJECT_SCH::SymbolLibAdapter().
|
private |
Definition at line 161 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 363 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 317 of file library_manager.cpp.
References FN_NORMALIZE_FLAGS, PATHS::GetUserSettingsPath(), and tableFileName().
Referenced by CreateGlobalTable(), operator=(), and PANEL_STARTWIZARD_LIBRARIES::TransferDataToWindow().
|
static |
Definition at line 696 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 645 of file library_manager.cpp.
References GetFullURI(), Rows(), and UrisAreEquivalent().
Referenced by DIALOG_SYMBOL_REMAP::getLibsNotInGlobalSymbolLibTable().
|
static |
Definition at line 686 of file library_manager.cpp.
References ExpandEnvVarSubstitutions(), 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 675 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 631 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 340 of file library_manager.cpp.
References InvalidGlobalTables().
Referenced by STARTWIZARD_PROVIDER_LIBRARIES::NeedsUserInput(), and operator=().
|
static |
Definition at line 346 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 328 of file library_manager.cpp.
References GLOBAL, and LIBRARY_TABLE::IsOk().
Referenced by InvalidGlobalTables(), operator=(), and PANEL_STARTWIZARD_LIBRARIES::TransferDataToWindow().
| 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 403 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 DESIGN_BLOCK_PANE::AddDesignBlockLibrary(), 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(), and operator=().
|
private |
Definition at line 98 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 | ) |
Definition at line 659 of file library_manager.cpp.
References loadTables(), m_projectTables, PROJECT, and traceLibraries.
Referenced by BOOST_AUTO_TEST_CASE(), and ProjectChanged().
|
private |
Definition at line 53 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 483 of file library_manager.cpp.
References GetSettingsManager(), LoadProjectTables(), m_adapters, m_adaptersMutex, Pgm(), and Prj().
Referenced by DESIGN_BLOCK_PANE::AddDesignBlockLibrary(), 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 494 of file library_manager.cpp.
References m_adapters, and m_adaptersMutex.
Referenced by PROJECT::DesignBlockLibs(), PROJECT_PCB::FootprintLibAdapter(), and PROJECT_SCH::SymbolLibAdapter().
| 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 556 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(), and GetRow().
| 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 516 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(), 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 149 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 704 of file library_manager.cpp.
Referenced by LIBRARY_MANAGER_ADAPTER::FindLibraryByURI(), and FindRowByURI().
|
private |
Definition at line 309 of file library_manager.h.
Referenced by Adapter(), LoadGlobalTables(), ProjectChanged(), and RegisterAdapter().
|
mutableprivate |
Definition at line 311 of file library_manager.h.
Referenced by Adapter(), LoadGlobalTables(), ProjectChanged(), and RegisterAdapter().
|
private |
Map of full URI to table object for tables that are referenced by global or project tables.
Definition at line 304 of file library_manager.h.
Referenced by loadNestedTables(), and Rows().
|
private |
Definition at line 307 of file library_manager.h.
Referenced by createEmptyTable(), LoadProjectTables(), loadTables(), Rows(), and Table().
|
private |
Definition at line 301 of file library_manager.h.
Referenced by createEmptyTable(), loadTables(), Rows(), and Table().