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

An interface to the global shared library manager that is schematic-specific and linked to one project in particular. More...

#include <footprint_library_adapter.h>

Inheritance diagram for FOOTPRINT_LIBRARY_ADAPTER:
LIBRARY_MANAGER_ADAPTER PROJECT::_ELEM

Public Types

enum  SAVE_T { SAVE_OK , SAVE_SKIPPED }
 The set of return values from SaveSymbol() below. More...
 

Public Member Functions

 FOOTPRINT_LIBRARY_ADAPTER (LIBRARY_MANAGER &aManager)
 
LIBRARY_TABLE_TYPE Type () const override
 The type of library table this adapter works with.
 
PROJECT::ELEM ProjectElementType () override
 
void AsyncLoad () override
 Loads all available libraries for this adapter type in the background.
 
std::optional< LIB_STATUSLoadOne (const wxString &aNickname)
 Loads or reloads the given library, if it exists.
 
std::optional< LIB_STATUSGetLibraryStatus (const wxString &aNickname) const override
 Returns the status of a loaded library, or nullopt if the library hasn't been loaded (yet)
 
std::vector< FOOTPRINT * > GetFootprints (const wxString &aNickname, bool aBestEfforts=false)
 Retrieves a list of footprints contained in a given loaded library.
 
std::vector< wxString > GetFootprintNames (const wxString &aNickname, bool aBestEfforts=false)
 Retrieves a list of footprint names contained in a given loaded library.
 
long long GenerateTimestamp (const wxString *aNickname)
 Generates a filesystem timestamp / hash value for library(ies)
 
bool FootprintExists (const wxString &aNickname, const wxString &aName)
 
FOOTPRINTLoadFootprint (const wxString &aNickname, const wxString &aName, bool aKeepUUID)
 Load a FOOTPRINT having aName from the library given by aNickname.
 
FOOTPRINTLoadFootprint (const LIB_ID &aLibId, bool aKeepUUID)
 
FOOTPRINTLoadFootprintWithOptionalNickname (const LIB_ID &aFootprintId, bool aKeepUUID)
 Load a footprint having aFootprintId with possibly an empty nickname.
 
SAVE_T SaveFootprint (const wxString &aNickname, const FOOTPRINT *aFootprint, bool aOverwrite=true)
 Write aFootprint to an existing library given by aNickname.
 
void DeleteFootprint (const wxString &aNickname, const wxString &aFootprintName)
 Deletes the aFootprintName from the library given by aNickname.
 
bool IsFootprintLibWritable (const wxString &aNickname)
 Return true if the library given by aNickname is writable.
 
std::optional< LIBRARY_ERRORLibraryError (const wxString &aNickname) const override
 
LIBRARY_MANAGERManager () const
 
LIBRARY_TABLEGlobalTable () 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.
 
std::optional< float > AsyncLoadProgress () const
 Returns async load progress between 0.0 and 1.0, or nullopt if load is not in progress.
 
void BlockUntilLoaded ()
 
bool IsLibraryLoaded (const wxString &aNickname)
 
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)
 
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 bool SupportsConfigurationDialog (const wxString &aNickname) const
 
virtual void ShowConfigurationDialog (const wxString &aNickname, wxWindow *aParent) const
 

Static Public Member Functions

static wxString GlobalPathEnvVariableName ()
 

Protected Member Functions

std::map< wxString, LIB_DATA > & globalLibs () override
 
std::map< wxString, LIB_DATA > & globalLibs () const override
 
std::mutex & globalLibsMutex () override
 
LIBRARY_RESULT< IO_BASE * > createPlugin (const LIBRARY_TABLE_ROW *row) override
 Creates a concrete plugin for the given row.
 
IO_BASEplugin (const LIB_DATA *aRow) override
 
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.
 
void abortLoad ()
 Aborts any async load in progress; blocks until fully done aborting.
 

Static Protected Member Functions

static wxString getUri (const LIBRARY_TABLE_ROW *aRow)
 

Protected Attributes

LIBRARY_MANAGERm_manager
 
std::map< wxString, LIB_DATAm_libraries
 
std::mutex m_libraries_mutex
 
std::atomic_bool m_abort
 
std::vector< std::future< void > > m_futures
 
std::atomic< size_t > m_loadCount
 
size_t m_loadTotal
 

Static Private Member Functions

static PCB_IOpcbplugin (const LIB_DATA *aRow)
 Helper to cast the ABC plugin in the LIB_DATA* to a concrete plugin.
 

Static Private Attributes

static std::map< wxString, LIB_DATAGlobalLibraries
 
static std::mutex GlobalLibraryMutex
 

Detailed Description

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 38 of file footprint_library_adapter.h.

Member Enumeration Documentation

◆ SAVE_T

The set of return values from SaveSymbol() below.

Enumerator
SAVE_OK 
SAVE_SKIPPED 

Definition at line 122 of file footprint_library_adapter.h.

Constructor & Destructor Documentation

◆ FOOTPRINT_LIBRARY_ADAPTER()

FOOTPRINT_LIBRARY_ADAPTER::FOOTPRINT_LIBRARY_ADAPTER ( LIBRARY_MANAGER & aManager)

Member Function Documentation

◆ abortLoad()

void LIBRARY_MANAGER_ADAPTER::abortLoad ( )
protectedinherited

Aborts any async load in progress; blocks until fully done aborting.

Definition at line 887 of file library_manager.cpp.

References BlockUntilLoaded(), m_abort, m_futures, m_loadTotal, and traceLibraries.

Referenced by globalLibsMutex(), GlobalTablesChanged(), and ProjectChanged().

◆ AsyncLoad()

◆ AsyncLoadProgress()

std::optional< float > LIBRARY_MANAGER_ADAPTER::AsyncLoadProgress ( ) const
inherited

Returns async load progress between 0.0 and 1.0, or nullopt if load is not in progress.

Definition at line 904 of file library_manager.cpp.

References m_loadCount, and m_loadTotal.

Referenced by AsyncLoad(), BOOST_AUTO_TEST_CASE(), PGM_BASE::PreloadDesignBlockLibraries(), PCB::IFACE::PreloadLibraries(), and SCH::IFACE::PreloadLibraries().

◆ BlockUntilLoaded()

◆ CreateLibrary()

bool LIBRARY_MANAGER_ADAPTER::CreateLibrary ( const wxString & aNickname)
inherited

Creates the library (i.e. saves to disk) for the given row if it exists.

Definition at line 972 of file library_manager.cpp.

References IO_BASE::CreateLibrary(), LIBRARY_TABLE_ROW::GetOptionsMap(), getUri(), loadIfNeeded(), LIB_DATA::plugin, result, and LIB_DATA::row.

Referenced by SYMBOL_LIBRARY_MANAGER::addLibrary(), and GetLibraryStatus().

◆ createPlugin()

LIBRARY_RESULT< IO_BASE * > FOOTPRINT_LIBRARY_ADAPTER::createPlugin ( const LIBRARY_TABLE_ROW * row)
overrideprotectedvirtual

◆ DeleteFootprint()

void FOOTPRINT_LIBRARY_ADAPTER::DeleteFootprint ( const wxString & aNickname,
const wxString & aFootprintName )

Deletes the aFootprintName from the library given by aNickname.

Parameters
aNicknameis a locator for the "library", it is a "name" in LIB_TABLE_ROW.
aFootprintNameis the name of a footprint to delete from the specified library.
Exceptions
IO_ERRORif there is a problem finding the footprint or the library, or deleting it.

Definition at line 442 of file footprint_library_adapter.cpp.

References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), PCB_IO::FootprintDelete(), LIBRARY_MANAGER_ADAPTER::getUri(), pcbplugin(), traceLibraries, and IO_ERROR::What().

Referenced by FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary().

◆ DeleteLibrary()

bool LIBRARY_MANAGER_ADAPTER::DeleteLibrary ( const wxString & aNickname)
inherited

Deletes the given library from disk if it exists; returns true if deleted.

Definition at line 835 of file library_manager.cpp.

References IO_BASE::DeleteLibrary(), LIBRARY_TABLE_ROW::GetOptionsMap(), getUri(), loadIfNeeded(), LIB_DATA::plugin, result, and LIB_DATA::row.

Referenced by Type().

◆ fetchIfLoaded() [1/2]

std::optional< LIB_DATA * > LIBRARY_MANAGER_ADAPTER::fetchIfLoaded ( const wxString & aNickname)
protectedinherited

Definition at line 1019 of file library_manager.cpp.

References globalLibs(), LOADED, and m_libraries.

◆ fetchIfLoaded() [2/2]

◆ FindLibraryByURI()

std::optional< wxString > LIBRARY_MANAGER_ADAPTER::FindLibraryByURI ( const wxString & aURI) const
inherited

Definition at line 799 of file library_manager.cpp.

References m_manager, Type(), and LIBRARY_MANAGER::UrisAreEquivalent().

Referenced by Type().

◆ FindRowByURI()

std::optional< LIBRARY_TABLE_ROW * > LIBRARY_MANAGER_ADAPTER::FindRowByURI ( const wxString & aUri,
LIBRARY_TABLE_SCOPE aScope = LIBRARY_TABLE_SCOPE::BOTH ) const
inherited

Like LIBRARY_MANAGER::FindRowByURI but filtered to the LIBRARY_TABLE_TYPE of this adapter.

Definition at line 879 of file library_manager.cpp.

References m_manager, and Type().

Referenced by FOOTPRINT_EDIT_FRAME::KiwayMailIn(), SYMBOL_EDIT_FRAME::KiwayMailIn(), and Type().

◆ FootprintExists()

◆ GenerateTimestamp()

long long FOOTPRINT_LIBRARY_ADAPTER::GenerateTimestamp ( const wxString * aNickname)

Generates a filesystem timestamp / hash value for library(ies)

Parameters
aNicknameis an optional specific library to timestamp. If nullptr, a timestamp will be calculated for all libraries in the table.
Returns
a value that can be used to determine if libraries have changed on disk

Definition at line 307 of file footprint_library_adapter.cpp.

References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), LIBRARY_MANAGER::GetFullURI(), LIBRARY_MANAGER_ADAPTER::GetLibraryNames(), LIBRARY_MANAGER_ADAPTER::HasLibrary(), and plugin().

Referenced by FOOTPRINT_LIST_IMPL::ReadFootprintFiles().

◆ GetFootprintNames()

std::vector< wxString > FOOTPRINT_LIBRARY_ADAPTER::GetFootprintNames ( const wxString & aNickname,
bool aBestEfforts = false )

Retrieves a list of footprint names contained in a given loaded library.

Parameters
aNicknameis the library to query
aBestEffortsif true, don't throw on errors, just return a smaller or empty list.
Returns
a list of names of footprints contained in the given library

Definition at line 278 of file footprint_library_adapter.cpp.

References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), PCB_IO::FootprintEnumerate(), LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_MANAGER_ADAPTER::getUri(), name, LIBRARY_TABLE_ROW::Nickname(), pcbplugin(), LIB_DATA::row, traceLibraries, and IO_ERROR::What().

Referenced by PCB_BASE_FRAME::CreateNewFootprint(), GetFootprints(), and guessNickname().

◆ GetFootprints()

std::vector< FOOTPRINT * > FOOTPRINT_LIBRARY_ADAPTER::GetFootprints ( const wxString & aNickname,
bool aBestEfforts = false )

Retrieves a list of footprints contained in a given loaded library.

Parameters
aNicknameis the library to query
aBestEffortsif true, don't throw on errors, just return a smaller or empty list.
Returns
a list of footprints contained in the given library

Definition at line 227 of file footprint_library_adapter.cpp.

References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), PCB_IO::FootprintEnumerate(), PCB_IO::FootprintLoad(), FOOTPRINT::GetFPID(), LIBRARY_TABLE_ROW::GetOptionsMap(), LIBRARY_MANAGER_ADAPTER::getUri(), LIBRARY_TABLE_ROW::Nickname(), pcbplugin(), LIB_DATA::row, FOOTPRINT::SetFPID(), LIB_ID::SetLibNickname(), traceLibraries, and IO_ERROR::What().

◆ GetLibraryDescription()

std::optional< wxString > LIBRARY_MANAGER_ADAPTER::GetLibraryDescription ( const wxString & aNickname) const
inherited

◆ GetLibraryNames()

◆ GetLibraryStatus()

std::optional< LIB_STATUS > FOOTPRINT_LIBRARY_ADAPTER::GetLibraryStatus ( const wxString & aNickname) const
overridevirtual

Returns the status of a loaded library, or nullopt if the library hasn't been loaded (yet)

Implements LIBRARY_MANAGER_ADAPTER.

Definition at line 214 of file footprint_library_adapter.cpp.

References GlobalLibraries, and LIBRARY_MANAGER_ADAPTER::m_libraries.

Referenced by CV::kiface().

◆ GetLibraryStatuses()

std::vector< std::pair< wxString, LIB_STATUS > > LIBRARY_MANAGER_ADAPTER::GetLibraryStatuses ( ) const
inherited

Returns a list of all library nicknames and their status (even if they failed to load)

Definition at line 936 of file library_manager.cpp.

References _, GetLibraryStatus(), LOAD_ERROR, m_manager, result, and Type().

Referenced by BOOST_AUTO_TEST_CASE(), GetLibraryStatus(), and SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync().

◆ GetRow()

◆ getUri()

◆ globalLibs() [1/2]

std::map< wxString, LIB_DATA > & FOOTPRINT_LIBRARY_ADAPTER::globalLibs ( ) const
inlineoverrideprotectedvirtual

Implements LIBRARY_MANAGER_ADAPTER.

Definition at line 172 of file footprint_library_adapter.h.

References GlobalLibraries.

◆ globalLibs() [2/2]

std::map< wxString, LIB_DATA > & FOOTPRINT_LIBRARY_ADAPTER::globalLibs ( )
inlineoverrideprotectedvirtual

Implements LIBRARY_MANAGER_ADAPTER.

Definition at line 171 of file footprint_library_adapter.h.

References GlobalLibraries.

◆ globalLibsMutex()

std::mutex & FOOTPRINT_LIBRARY_ADAPTER::globalLibsMutex ( )
inlineoverrideprotectedvirtual

Implements LIBRARY_MANAGER_ADAPTER.

Definition at line 173 of file footprint_library_adapter.h.

References GlobalLibraryMutex.

◆ GlobalPathEnvVariableName()

wxString FOOTPRINT_LIBRARY_ADAPTER::GlobalPathEnvVariableName ( )
static

◆ GlobalTable()

LIBRARY_TABLE * LIBRARY_MANAGER_ADAPTER::GlobalTable ( ) const
inherited

Retrieves the global library table for this adapter type.

Definition at line 786 of file library_manager.cpp.

References GLOBAL, m_manager, and Type().

Referenced by SCH_EDITOR_CONTROL::ExportSymbolsToLibrary(), and Type().

◆ GlobalTablesChanged()

void LIBRARY_MANAGER_ADAPTER::GlobalTablesChanged ( std::initializer_list< LIBRARY_TABLE_TYPE > aChangedTables = {})
inherited

Notify the adapter that the global library tables have changed.

Definition at line 760 of file library_manager.cpp.

References abortLoad(), globalLibs(), globalLibsMutex(), and Type().

Referenced by Type().

◆ HasLibrary()

◆ IsFootprintLibWritable()

bool FOOTPRINT_LIBRARY_ADAPTER::IsFootprintLibWritable ( const wxString & aNickname)

Return true if the library given by aNickname is writable.

It is possible that some footprint libraries are read only because of where they are installed.

Parameters
aNicknameis the library nickname in the footprint library table.
Exceptions
IO_ERRORif no library at aNickname exists.

Definition at line 463 of file footprint_library_adapter.cpp.

References LIBRARY_MANAGER_ADAPTER::getUri(), GlobalLibraries, and LIBRARY_MANAGER_ADAPTER::m_libraries.

Referenced by FOOTPRINT_EDIT_FRAME::DeleteFootprintFromLibrary(), and FOOTPRINT_EDIT_FRAME::UpdateTitle().

◆ IsLibraryLoaded()

bool LIBRARY_MANAGER_ADAPTER::IsLibraryLoaded ( const wxString & aNickname)
inherited

◆ IsWritable()

bool LIBRARY_MANAGER_ADAPTER::IsWritable ( const wxString & aNickname) const
virtualinherited

Return true if the given nickname exists and is not a read-only library.

Definition at line 960 of file library_manager.cpp.

References fetchIfLoaded(), getUri(), IO_BASE::IsLibraryWritable(), LIB_DATA::plugin, result, and LIB_DATA::row.

Referenced by GetLibraryStatus().

◆ LibraryError()

std::optional< LIBRARY_ERROR > FOOTPRINT_LIBRARY_ADAPTER::LibraryError ( const wxString & aNickname) const
overridevirtual

Reimplemented from LIBRARY_MANAGER_ADAPTER.

Definition at line 475 of file footprint_library_adapter.cpp.

References GlobalLibraries, and LIBRARY_MANAGER_ADAPTER::m_libraries.

◆ LoadFootprint() [1/2]

FOOTPRINT * FOOTPRINT_LIBRARY_ADAPTER::LoadFootprint ( const LIB_ID & aLibId,
bool aKeepUUID )
inline

◆ LoadFootprint() [2/2]

FOOTPRINT * FOOTPRINT_LIBRARY_ADAPTER::LoadFootprint ( const wxString & aNickname,
const wxString & aName,
bool aKeepUUID )

Load a FOOTPRINT having aName from the library given by aNickname.

Parameters
aNicknameis a locator for the "library", it is a "name" in #LIB_TABLE_ROW
aNameis the name of the FOOTPRINT to load.
aKeepUUID= true to keep initial items UUID, false to set new UUID normally true if loaded in the footprint editor, false if loaded in the board editor. Make sense only in kicad_plugin
Returns
the footprint if found or NULL if not found.
Exceptions
IO_ERRORif the library cannot be found or read. No exception is thrown in the case where aNickname cannot be found.

Definition at line 353 of file footprint_library_adapter.cpp.

References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), PCB_IO::FootprintLoad(), LIBRARY_MANAGER_ADAPTER::getUri(), pcbplugin(), LIB_ID::SetLibNickname(), and traceLibraries.

Referenced by PCB_BASE_FRAME::CreateNewFootprint(), BOARD_INSPECTION_TOOL::DiffFootprint(), FOOTPRINT_PREVIEW_PANEL::DisplayFootprint(), DISPLAY_FOOTPRINTS_FRAME::GetFootprint(), FOOTPRINT_INFO_IMPL::load(), LoadFootprint(), LoadFootprintWithOptionalNickname(), PCB_BASE_FRAME::OnFpChangeDebounceTimer(), DRC_TEST_PROVIDER_LIBRARY_PARITY::Run(), FOOTPRINT_VIEWER_FRAME::SelectAndViewFootprint(), and DIALOG_FOOTPRINT_ASSOCIATIONS::TransferDataToWindow().

◆ LoadFootprintWithOptionalNickname()

FOOTPRINT * FOOTPRINT_LIBRARY_ADAPTER::LoadFootprintWithOptionalNickname ( const LIB_ID & aFootprintId,
bool aKeepUUID )

Load a footprint having aFootprintId with possibly an empty nickname.

Parameters
aFootprintIdthe [nickname] and name of the design block to load.
aKeepUUID= true to keep initial items UUID, false to set new UUID normally true if loaded in the footprint editor, false if loaded in the board editor used only in kicad_plugin
Returns
the FOOTPRINT if found caller owns it, else NULL if not found.
Exceptions
IO_ERRORif the library cannot be found or read. No exception is thrown in the case where aFootprintId cannot be found.
PARSE_ERRORif aFootprintId is not parsed OK.

Definition at line 374 of file footprint_library_adapter.cpp.

References LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), LIBRARY_MANAGER_ADAPTER::GetLibraryNames(), library, and LoadFootprint().

Referenced by PCB_BASE_FRAME::loadFootprint().

◆ loadIfNeeded()

LIBRARY_RESULT< LIB_DATA * > LIBRARY_MANAGER_ADAPTER::loadIfNeeded ( const wxString & aNickname)
protectedinherited

◆ LoadOne()

◆ Manager()

LIBRARY_MANAGER & LIBRARY_MANAGER_ADAPTER::Manager ( ) const
inherited

Definition at line 743 of file library_manager.cpp.

References m_manager.

◆ pcbplugin()

PCB_IO * FOOTPRINT_LIBRARY_ADAPTER::pcbplugin ( const LIB_DATA * aRow)
staticprivate

Helper to cast the ABC plugin in the LIB_DATA* to a concrete plugin.

Definition at line 512 of file footprint_library_adapter.cpp.

References LIB_DATA::plugin.

Referenced by DeleteFootprint(), FootprintExists(), GetFootprintNames(), GetFootprints(), LoadFootprint(), LoadOne(), plugin(), and SaveFootprint().

◆ plugin()

IO_BASE * FOOTPRINT_LIBRARY_ADAPTER::plugin ( const LIB_DATA * aRow)
inlineoverrideprotectedvirtual

Implements LIBRARY_MANAGER_ADAPTER.

Definition at line 177 of file footprint_library_adapter.h.

References pcbplugin().

Referenced by createPlugin(), and GenerateTimestamp().

◆ ProjectChanged()

void LIBRARY_MANAGER_ADAPTER::ProjectChanged ( )
virtualinherited

Notify the adapter that the active project has changed.

Definition at line 749 of file library_manager.cpp.

References abortLoad(), m_libraries, and m_libraries_mutex.

◆ ProjectElementType()

PROJECT::ELEM FOOTPRINT_LIBRARY_ADAPTER::ProjectElementType ( )
inlineoverridevirtual

Implements PROJECT::_ELEM.

Definition at line 45 of file footprint_library_adapter.h.

References PROJECT::FPTBL.

Referenced by PROJECT::FootprintLibAdapter().

◆ ProjectTable()

std::optional< LIBRARY_TABLE * > LIBRARY_MANAGER_ADAPTER::ProjectTable ( ) const
inherited

Retrieves the project library table for this adapter type, or nullopt if one doesn't exist.

Definition at line 793 of file library_manager.cpp.

References m_manager, PROJECT, and Type().

Referenced by SCH_EDITOR_CONTROL::ExportSymbolsToLibrary(), SCH_IO_CADSTAR_ARCHIVE::LoadSchematicFile(), SCH_IO_EAGLE::LoadSchematicFile(), SCH_IO_EASYEDAPRO::LoadSchematicFile(), SCH_EDIT_FRAME::LoadSheetFromFile(), and Type().

◆ Rows()

std::vector< LIBRARY_TABLE_ROW * > LIBRARY_MANAGER_ADAPTER::Rows ( LIBRARY_TABLE_SCOPE aScope = LIBRARY_TABLE_SCOPE::BOTH,
bool aIncludeInvalid = false ) const
inherited

Like LIBRARY_MANAGER::Rows but filtered to the LIBRARY_TABLE_TYPE of this adapter.

Definition at line 865 of file library_manager.cpp.

References m_manager, and Type().

Referenced by CVPCB_MAINFRAME::LoadFootprintFiles(), and Type().

◆ SaveFootprint()

FOOTPRINT_LIBRARY_ADAPTER::SAVE_T FOOTPRINT_LIBRARY_ADAPTER::SaveFootprint ( const wxString & aNickname,
const FOOTPRINT * aFootprint,
bool aOverwrite = true )

Write aFootprint to an existing library given by aNickname.

If a FOOTPRINT by the same name already exists or there are any conflicting alias names, the new FOOTPRINT 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.

Parameters
aNicknameis a locator for the "library", it is a "name" in LIB_TABLE_ROW
aFootprintis what to store in the library. The library owns the footprint after this call.
aOverwritewhen true means overwrite any existing symbol by the same name, else if false means skip the write and return SAVE_SKIPPED.
Returns
SAVE_T - SAVE_OK or SAVE_SKIPPED. If error saving, then IO_ERROR is thrown.
Exceptions
IO_ERRORif there is a problem saving the footprint.

Definition at line 395 of file footprint_library_adapter.cpp.

References LIBRARY_MANAGER_ADAPTER::fetchIfLoaded(), PCB_IO::FootprintLoad(), PCB_IO::FootprintSave(), FOOTPRINT::GetFPID(), FOOTPRINT::GetFPIDAsString(), LIB_ID::GetLibItemName(), LIBRARY_MANAGER_ADAPTER::getUri(), pcbplugin(), SAVE_OK, SAVE_SKIPPED, traceLibraries, and IO_ERROR::What().

Referenced by PCB_EDIT_FRAME::ExportFootprintsToLibrary(), and FOOTPRINT_EDIT_FRAME::SaveFootprintInLibrary().

◆ ShowConfigurationDialog()

virtual void LIBRARY_MANAGER_ADAPTER::ShowConfigurationDialog ( const wxString & aNickname,
wxWindow * aParent ) const
inlinevirtualinherited

Reimplemented in SYMBOL_LIBRARY_ADAPTER.

Definition at line 155 of file library_manager.h.

Referenced by LIB_TABLE_GRID_TRICKS::onGridCellLeftClick().

◆ SupportsConfigurationDialog()

virtual bool LIBRARY_MANAGER_ADAPTER::SupportsConfigurationDialog ( const wxString & aNickname) const
inlinevirtualinherited

Reimplemented in SYMBOL_LIBRARY_ADAPTER.

Definition at line 153 of file library_manager.h.

Referenced by LIB_TABLE_GRID_TRICKS::onGridCellLeftClick().

◆ Type()

LIBRARY_TABLE_TYPE FOOTPRINT_LIBRARY_ADAPTER::Type ( ) const
inlineoverridevirtual

The type of library table this adapter works with.

Implements LIBRARY_MANAGER_ADAPTER.

Definition at line 43 of file footprint_library_adapter.h.

References FOOTPRINT.

Member Data Documentation

◆ GlobalLibraries

std::map< wxString, LIB_DATA > FOOTPRINT_LIBRARY_ADAPTER::GlobalLibraries
staticprivate

◆ GlobalLibraryMutex

std::mutex FOOTPRINT_LIBRARY_ADAPTER::GlobalLibraryMutex
staticprivate

Definition at line 187 of file footprint_library_adapter.h.

Referenced by AsyncLoad(), and globalLibsMutex().

◆ m_abort

std::atomic_bool LIBRARY_MANAGER_ADAPTER::m_abort
protectedinherited

Definition at line 191 of file library_manager.h.

Referenced by abortLoad().

◆ m_futures

std::vector<std::future<void> > LIBRARY_MANAGER_ADAPTER::m_futures
protectedinherited

◆ m_libraries

◆ m_libraries_mutex

std::mutex LIBRARY_MANAGER_ADAPTER::m_libraries_mutex
protectedinherited

◆ m_loadCount

std::atomic<size_t> LIBRARY_MANAGER_ADAPTER::m_loadCount
protectedinherited

◆ m_loadTotal

◆ m_manager


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