KiCad PCB EDA Suite
sch_base_frame.h File Reference
#include <eda_draw_frame.h>
#include <frame_type.h>
#include <lib_id.h>
#include <page_info.h>
#include <sch_draw_panel.h>
#include <sch_screen.h>
#include <schematic_settings.h>
#include <stddef.h>
#include <utility>
#include <vector>
#include <wx/event.h>
#include <wx/gdicmn.h>
#include <wx/string.h>
#include <template_fieldnames.h>

Go to the source code of this file.


 A shim class between EDA_DRAW_FRAME and several derived classes: SYMBOL_EDIT_FRAME, SYMBOL_VIEWER_FRAME, and SCH_EDIT_FRAME, and it brings in a common way of handling the provided virtual functions for the derived classes. More...


 The Cairo implementation of the graphics abstraction layer.


LIB_PARTSchGetLibPart (const LIB_ID &aLibId, SYMBOL_LIB_TABLE *aLibTable, PART_LIB *aCacheLib=NULL, wxWindow *aParent=NULL, bool aShowErrorMsg=false)
 Load symbol from symbol library table. More...

Function Documentation

◆ SchGetLibPart()

LIB_PART* SchGetLibPart ( const LIB_ID aLibId,
PART_LIB aCacheLib = NULL,
wxWindow *  aParent = NULL,
bool  aShowErrorMsg = false 

Load symbol from symbol library table.

Check the symbol library table for the part defined by aLibId and optionally check the optional cache library.

aLibIdis the symbol library identifier to load.
aLibTableis the #SYMBOL_LIBRARY_TABLE to load the alias from.
aCacheLibis an optional cache library.
aParentis an optional parent window when displaying an error message.
aShowErrorMessageset to true to show any error messages.
The symbol found in the library or NULL if the symbol was not found.

Definition at line 46 of file sch_base_frame.cpp.

48 {
49  wxCHECK_MSG( aLibTable, nullptr, "Invalid symbol library table." );
51  LIB_PART* symbol = nullptr;
53  try
54  {
55  symbol = aLibTable->LoadSymbol( aLibId );
57  if( !symbol && aCacheLib )
58  {
59  wxCHECK_MSG( aCacheLib->IsCache(), nullptr, "Invalid cache library." );
61  wxString cacheName = aLibId.GetLibNickname().wx_str();
62  cacheName += "_" + aLibId.GetLibItemName();
63  symbol = aCacheLib->FindPart( cacheName );
64  }
65  }
66  catch( const IO_ERROR& ioe )
67  {
68  if( aShowErrorMsg )
69  {
70  wxString msg = wxString::Format( _( "Error loading symbol '%s' from library '%s'." ),
71  aLibId.GetLibItemName().wx_str(),
72  aLibId.GetLibNickname().wx_str() );
73  DisplayErrorMessage( aParent, msg, ioe.What() );
74  }
75  }
77  return symbol;
78 }
const UTF8 & GetLibItemName() const
Definition: lib_id.h:106
void DisplayErrorMessage(wxWindow *aParent, const wxString &aText, const wxString &aExtraInfo)
Display an error message with aMessage.
Definition: confirm.cpp:265
LIB_PART * LoadSymbol(const wxString &aNickname, const wxString &aName)
Load a LIB_PART having aName from the library given by aNickname.
virtual const wxString What() const
A composite of Problem() and Where()
Definition: exceptions.cpp:29
Define a library symbol object.
Definition: lib_symbol.h:93
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:92
LIB_PART * FindPart(const wxString &aName) const
Find LIB_PART by aName.
void Format(OUTPUTFORMATTER *out, int aNestLevel, int aCtl, const CPTREE &aTree)
Output a PTREE into s-expression format via an OUTPUTFORMATTER derivative.
Definition: ptree.cpp:200
#define _(s)
Definition: 3d_actions.cpp:33
wxString wx_str() const
Definition: utf8.cpp:51
Hold an error message and may be used when throwing exceptions containing meaningful error messages.
Definition: ki_exception.h:75
bool IsCache() const

References _, DisplayErrorMessage(), PART_LIB::FindPart(), Format(), LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), PART_LIB::IsCache(), SYMBOL_LIB_TABLE::LoadSymbol(), IO_ERROR::What(), and UTF8::wx_str().

Referenced by RESCUE_SYMBOL_LIB_TABLE_CANDIDATE::FindRescues(), SCH_BASE_FRAME::GetLibPart(), and ERC_TESTER::TestLibSymbolIssues().