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

#include <library_manager.h>

Public Member Functions

 LIBRARY_MANAGER ()
 
 ~LIBRARY_MANAGER ()
 
 LIBRARY_MANAGER (const LIBRARY_MANAGER &)=delete
 
LIBRARY_MANAGERoperator= (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)
 
LIBRARY_RESULT< void > Save (LIBRARY_TABLE *aTable) const
 
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_TYPEInvalidGlobalTables ()
 
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
 

Detailed Description

Definition at line 200 of file library_manager.h.

Constructor & Destructor Documentation

◆ LIBRARY_MANAGER() [1/2]

LIBRARY_MANAGER::LIBRARY_MANAGER ( )

Definition at line 45 of file library_manager.cpp.

Referenced by LIBRARY_MANAGER(), and operator=().

◆ ~LIBRARY_MANAGER()

LIBRARY_MANAGER::~LIBRARY_MANAGER ( )
default

◆ LIBRARY_MANAGER() [2/2]

LIBRARY_MANAGER::LIBRARY_MANAGER ( const LIBRARY_MANAGER & )
delete

References LIBRARY_MANAGER().

Member Function Documentation

◆ Adapter()

std::optional< LIBRARY_MANAGER_ADAPTER * > LIBRARY_MANAGER::Adapter ( LIBRARY_TABLE_TYPE aType) const

Definition at line 499 of file library_manager.cpp.

References m_adapters.

Referenced by PROJECT::DesignBlockLibs(), and PROJECT_SCH::SymbolLibAdapter().

◆ createEmptyTable()

void LIBRARY_MANAGER::createEmptyTable ( LIBRARY_TABLE_TYPE aType,
LIBRARY_TABLE_SCOPE aScope )
private

◆ CreateGlobalTable()

◆ DefaultGlobalTablePath()

wxString LIBRARY_MANAGER::DefaultGlobalTablePath ( LIBRARY_TABLE_TYPE aType)
static

◆ ExpandURI()

wxString LIBRARY_MANAGER::ExpandURI ( const wxString & aShortURI,
const PROJECT & aProject )
static

◆ FindRowByURI()

std::optional< LIBRARY_TABLE_ROW * > LIBRARY_MANAGER::FindRowByURI ( LIBRARY_TABLE_TYPE aType,
const wxString & aUri,
LIBRARY_TABLE_SCOPE aScope = LIBRARY_TABLE_SCOPE::BOTH ) const

◆ GetFullURI() [1/2]

wxString LIBRARY_MANAGER::GetFullURI ( const LIBRARY_TABLE_ROW * aRow,
bool aSubstituted = false )
static

Definition at line 713 of file library_manager.cpp.

References ExpandEnvVarSubstitutions(), and LIBRARY_TABLE_ROW::URI().

◆ GetFullURI() [2/2]

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.

Parameters
aTypedetermines which tables will be searched for the library
aNicknameis the library to look up
aSubstitutedTells if caller wanted the substituted form, else not.
Returns
the URI for the given library, or nullopt if the nickname is not a valid library

Definition at line 702 of file library_manager.cpp.

References GetFullURI(), GetRow(), and result.

Referenced by SYMBOL_VIEWER_FRAME::DisplayLibInfos(), SYMBOL_EDIT_FRAME::ExportSymbol(), SCH_EDITOR_CONTROL::ExportSymbolsToLibrary(), FindRowByURI(), GetFullURI(), SYMBOL_LIBRARY_MANAGER::GetLibraryHash(), SYMBOL_EDIT_FRAME::KiwayMailIn(), SYMBOL_VIEWER_FRAME::KiwayMailIn(), SCH_EDIT_FRAME::LoadSheetFromFile(), NETLIST_EXPORTER_XML::makeLibraries(), SYMBOL_EDITOR_CONTROL::OpenDirectory(), SYMBOL_EDITOR_CONTROL::OpenWithTextEditor(), SYMBOL_LIBRARY_MANAGER::SaveLibrary(), SYMBOL_EDIT_FRAME::saveLibrary(), SCH_BASE_FRAME::setSymWatcher(), and ERC_TESTER::TestLibSymbolIssues().

◆ GetRow()

std::optional< LIBRARY_TABLE_ROW * > LIBRARY_MANAGER::GetRow ( LIBRARY_TABLE_TYPE aType,
const wxString & aNickname,
LIBRARY_TABLE_SCOPE aScope = LIBRARY_TABLE_SCOPE::BOTH ) const
Parameters
aTypedetermines which type of libraries to return (symbol, footprint, ...)
aScopedetermines whether to search project, global, or both library tables
aNicknameis the library nickname to retrieve
Returns
the row, or a nullopt if it does not exist

Definition at line 623 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().

◆ GlobalTablesValid()

bool LIBRARY_MANAGER::GlobalTablesValid ( )
static
Returns
true if all required global tables are present on disk and valid

Definition at line 342 of file library_manager.cpp.

References InvalidGlobalTables().

Referenced by STARTWIZARD_PROVIDER_LIBRARIES::NeedsUserInput(), and operator=().

◆ InvalidGlobalTables()

std::vector< LIBRARY_TABLE_TYPE > LIBRARY_MANAGER::InvalidGlobalTables ( )
static

◆ IsTableValid()

bool LIBRARY_MANAGER::IsTableValid ( const wxString & aPath)
static

◆ LoadGlobalTables()

◆ loadNestedTables()

void LIBRARY_MANAGER::loadNestedTables ( LIBRARY_TABLE & aTable)
private

◆ LoadProjectTables()

void LIBRARY_MANAGER::LoadProjectTables ( const wxString & aProjectPath)

Definition at line 651 of file library_manager.cpp.

References loadTables(), m_projectTables, PROJECT, and traceLibraries.

Referenced by BOOST_AUTO_TEST_CASE(), and ProjectChanged().

◆ loadTables()

void LIBRARY_MANAGER::loadTables ( const wxString & aTablePath,
LIBRARY_TABLE_SCOPE aScope,
std::vector< LIBRARY_TABLE_TYPE > aTablesToLoad = {} )
private

◆ operator=()

◆ ProjectChanged()

◆ RegisterAdapter()

void LIBRARY_MANAGER::RegisterAdapter ( LIBRARY_TABLE_TYPE aType,
std::unique_ptr< LIBRARY_MANAGER_ADAPTER > && aAdapter )

Definition at line 490 of file library_manager.cpp.

References m_adapters.

Referenced by PROJECT::DesignBlockLibs(), and PROJECT_SCH::SymbolLibAdapter().

◆ Rows()

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.

Parameters
aTypedetermines which type of libraries to return (symbol, footprint, ...)
aIncludeInvalidwill include the nicknames of libraries even if they could not be loaded for some reason (file not found, etc)
Returns
a list of library nicknames (the first part of a LIB_ID)

Definition at line 548 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().

◆ Save()

◆ Table()

std::optional< LIBRARY_TABLE * > LIBRARY_MANAGER::Table ( LIBRARY_TABLE_TYPE aType,
LIBRARY_TABLE_SCOPE aScope )

◆ tableFileName()

◆ UrisAreEquivalent()

bool LIBRARY_MANAGER::UrisAreEquivalent ( const wxString & aURI1,
const wxString & aURI2 )
static

Definition at line 731 of file library_manager.cpp.

Referenced by LIBRARY_MANAGER_ADAPTER::FindLibraryByURI(), and FindRowByURI().

Member Data Documentation

◆ m_adapters

std::map<LIBRARY_TABLE_TYPE, std::unique_ptr<LIBRARY_MANAGER_ADAPTER> > LIBRARY_MANAGER::m_adapters
private

Definition at line 312 of file library_manager.h.

Referenced by Adapter(), LoadGlobalTables(), ProjectChanged(), and RegisterAdapter().

◆ m_childTables

std::map<wxString, std::unique_ptr<LIBRARY_TABLE> > LIBRARY_MANAGER::m_childTables
private

Map of full URI to table object for tables that are referenced by global or project tables.

Definition at line 307 of file library_manager.h.

Referenced by loadNestedTables(), and Rows().

◆ m_projectTables

std::map<LIBRARY_TABLE_TYPE, std::unique_ptr<LIBRARY_TABLE> > LIBRARY_MANAGER::m_projectTables
private

Definition at line 310 of file library_manager.h.

Referenced by createEmptyTable(), LoadProjectTables(), loadTables(), Rows(), and Table().

◆ m_tables

std::map<LIBRARY_TABLE_TYPE, std::unique_ptr<LIBRARY_TABLE> > LIBRARY_MANAGER::m_tables
private

Definition at line 304 of file library_manager.h.

Referenced by createEmptyTable(), loadTables(), Rows(), Save(), and Table().


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