KiCad PCB EDA Suite
LIB_TREE_MODEL_ADAPTER Class Reference

#include <lib_tree_model_adapter.h>

Inheritance diagram for LIB_TREE_MODEL_ADAPTER:
FP_TREE_MODEL_ADAPTER SYMBOL_TREE_MODEL_ADAPTER SYMBOL_TREE_SYNCHRONIZING_ADAPTER FP_TREE_SYNCHRONIZING_ADAPTER

Public Types

enum  SYM_FILTER_TYPE { SYM_FILTER_NONE, SYM_FILTER_POWER }
 This enum allows a selective filtering of symbols to list. More...
 
enum  TREE_COLS { PART_COL = 0, DESC_COL, NUM_COLS }
 This enum defines the order of the columns in the tree view. More...
 

Public Member Functions

 ~LIB_TREE_MODEL_ADAPTER ()
 Destructor. More...
 
void SaveColWidths ()
 Save the column widths to the config file. More...
 
void SavePinnedItems ()
 
void SetFilter (SYM_FILTER_TYPE aFilter)
 Set the symbol filter type. More...
 
SYM_FILTER_TYPE GetFilter () const
 Return the active filter. More...
 
void ShowUnits (bool aShow)
 Whether or not to show units. More...
 
void SetPreselectNode (const LIB_ID &aLibId, int aUnit)
 Set the symbol name to be selected if there are no search results. More...
 
void DoAddLibrary (const wxString &aNodeName, const wxString &aDesc, const std::vector< LIB_TREE_ITEM * > &aItemList, bool presorted)
 Add the given list of symbols by alias. More...
 
void AssignIntrinsicRanks ()
 Sort the tree and assign ranks after adding libraries. More...
 
void UpdateSearchString (const wxString &aSearch, bool aState)
 Set the search string provided by the user. More...
 
void AttachTo (wxDataViewCtrl *aDataViewCtrl)
 Attach to a wxDataViewCtrl and initialize it. More...
 
void FinishTreeInitialization ()
 A final-stage initialization to be called after the window hierarchy has been realized and the window sizes set. More...
 
LIB_ID GetAliasFor (const wxDataViewItem &aSelection) const
 Return the alias for the given item. More...
 
int GetUnitFor (const wxDataViewItem &aSelection) const
 Return the unit for the given item. More...
 
LIB_TREE_NODE::TYPE GetTypeFor (const wxDataViewItem &aSelection) const
 Return node type for the given item. More...
 
LIB_TREE_NODEGetTreeNodeFor (const wxDataViewItem &aSelection) const
 
virtual wxString GenerateInfo (const LIB_ID &aLibId, int aUnit)
 
int GetItemCount () const
 Return the number of symbols loaded in the tree. More...
 
virtual int GetLibrariesCount () const
 Return the number of libraries loaded in the tree. More...
 
wxDataViewItem FindItem (const LIB_ID &aLibId)
 Returns tree item corresponding to part. More...
 
unsigned int GetChildren (const wxDataViewItem &aItem, wxDataViewItemArray &aChildren) const override
 Populate a list of all the children of an item. More...
 
void Freeze ()
 
void Thaw ()
 
bool IsFrozen () const
 
void RefreshTree ()
 
virtual TOOL_INTERACTIVEGetContextMenuTool ()
 

Protected Member Functions

 LIB_TREE_MODEL_ADAPTER (EDA_BASE_FRAME *aParent, const wxString &aPinnedKey)
 Create the adapter. More...
 
LIB_TREE_NODE_LIBDoAddLibraryNode (const wxString &aNodeName, const wxString &aDesc)
 
bool HasContainerColumns (const wxDataViewItem &aItem) const override
 Check whether a container has columns too. More...
 
bool IsContainer (const wxDataViewItem &aItem) const override
 Check whether an item can have children. More...
 
wxDataViewItem GetParent (const wxDataViewItem &aItem) const override
 Get the parent of an item. More...
 
unsigned int GetColumnCount () const override
 
wxString GetColumnType (unsigned int aCol) const override
 Return the type of data stored in the column as indicated by wxVariant::GetType() More...
 
void GetValue (wxVariant &aVariant, const wxDataViewItem &aItem, unsigned int aCol) const override
 Get the value of an item. More...
 
bool SetValue (const wxVariant &aVariant, const wxDataViewItem &aItem, unsigned int aCol) override
 Set the value of an item. More...
 
bool GetAttr (const wxDataViewItem &aItem, unsigned int aCol, wxDataViewItemAttr &aAttr) const override
 Get any formatting for an item. More...
 
const wxString GetPinningSymbol () const
 

Static Protected Member Functions

static wxDataViewItem ToItem (const LIB_TREE_NODE *aNode)
 Convert #SYM_TREE_NODE -> wxDataViewItem. More...
 
static LIB_TREE_NODEToNode (wxDataViewItem aItem)
 Convert wxDataViewItem -> #SYM_TREE_NODE. More...
 
static unsigned int IntoArray (const LIB_TREE_NODE &aNode, wxDataViewItemArray &aChildren)
 Convert SYM_TREE_NODE's children to wxDataViewItemArray. More...
 

Protected Attributes

LIB_TREE_NODE_ROOT m_tree
 

Private Member Functions

void FindAndExpand (LIB_TREE_NODE &aNode, std::function< bool(const LIB_TREE_NODE *)> aFunc, LIB_TREE_NODE **aHighScore)
 Find any results worth highlighting and expand them, according to given criteria The highest-scoring node is written to aHighScore. More...
 
LIB_TREE_NODEShowResults ()
 Find and expand successful search results. More...
 
LIB_TREE_NODEShowPreselect ()
 Find and expand preselected node. More...
 
LIB_TREE_NODEShowSingleLibrary ()
 Find and expand a library if there is only one. More...
 

Private Attributes

EDA_BASE_FRAMEm_parent
 
SYM_FILTER_TYPE m_filter
 
bool m_show_units
 
LIB_ID m_preselect_lib_id
 
int m_preselect_unit
 
int m_freeze
 
wxDataViewColumn * m_col_part
 
wxDataViewColumn * m_col_desc
 
wxDataViewCtrl * m_widget
 
int m_colWidths [NUM_COLS]
 
wxArrayString m_pinnedLibs
 
wxString m_pinnedKey
 

Detailed Description

Definition at line 97 of file lib_tree_model_adapter.h.

Member Enumeration Documentation

◆ SYM_FILTER_TYPE

This enum allows a selective filtering of symbols to list.

Enumerator
SYM_FILTER_NONE 

no filtering

SYM_FILTER_POWER 

list symbols flagged PWR

Definition at line 109 of file lib_tree_model_adapter.h.

◆ TREE_COLS

This enum defines the order of the columns in the tree view.

Enumerator
PART_COL 

Part name column.

DESC_COL 

Part description column.

NUM_COLS 

The number of tree columns.

Definition at line 118 of file lib_tree_model_adapter.h.

119  {
120  PART_COL = 0,
121  DESC_COL,
122  NUM_COLS
123  };

Constructor & Destructor Documentation

◆ ~LIB_TREE_MODEL_ADAPTER()

LIB_TREE_MODEL_ADAPTER::~LIB_TREE_MODEL_ADAPTER ( )

Destructor.

Do NOT delete this class manually; it is reference-counted by wxObject.

Definition at line 102 of file lib_tree_model_adapter.cpp.

103 {}

◆ LIB_TREE_MODEL_ADAPTER()

LIB_TREE_MODEL_ADAPTER::LIB_TREE_MODEL_ADAPTER ( EDA_BASE_FRAME aParent,
const wxString &  aPinnedKey 
)
protected

Create the adapter.

Parameters
aParentis the parent frame
aPinnedKeyis the key to load the pinned libraries list from the project file

Definition at line 70 of file lib_tree_model_adapter.cpp.

71  :
72  m_parent( aParent ),
74  m_show_units( true ),
75  m_preselect_unit( 0 ),
76  m_freeze( 0 ),
77  m_col_part( nullptr ),
78  m_col_desc( nullptr ),
79  m_widget( nullptr ),
80  m_pinnedLibs(),
81  m_pinnedKey( aPinnedKey )
82 {
83  // Default column widths
84  m_colWidths[PART_COL] = 360;
85  m_colWidths[DESC_COL] = 2000;
86 
89 
90  // Read the pinned entries from the project config
92 
93  std::vector<wxString>& entries = ( m_pinnedKey == wxT( "pinned_symbol_libs" ) ) ?
94  project.m_PinnedSymbolLibs :
95  project.m_PinnedFootprintLibs;
96 
97  for( const wxString& entry : entries )
98  m_pinnedLibs.push_back( entry );
99 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:191
virtual PROJECT_FILE & GetProjectFile() const
Definition: project.h:145
The backing store for a PROJECT, in JSON format.
Definition: project_file.h:64
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_base.h:92

References APP_SETTINGS_BASE::LIB_TREE::column_width, DESC_COL, PROJECT::GetProjectFile(), Kiface(), KIFACE_BASE::KifaceSettings(), KIWAY_HOLDER::Kiway(), m_colWidths, APP_SETTINGS_BASE::m_LibTree, m_parent, m_pinnedKey, m_pinnedLibs, PART_COL, KIWAY::Prj(), and project.

Member Function Documentation

◆ AssignIntrinsicRanks()

void LIB_TREE_MODEL_ADAPTER::AssignIntrinsicRanks ( )
inline

Sort the tree and assign ranks after adding libraries.

Definition at line 176 of file lib_tree_model_adapter.h.

void AssignIntrinsicRanks(bool presorted=false)
Store intrinsic ranks on all children of this node.

References LIB_TREE_NODE::AssignIntrinsicRanks(), and m_tree.

Referenced by SCH_BASE_FRAME::PickSymbolFromLibTree().

◆ AttachTo()

void LIB_TREE_MODEL_ADAPTER::AttachTo ( wxDataViewCtrl *  aDataViewCtrl)

Attach to a wxDataViewCtrl and initialize it.

This will set up columns and associate the model via the adapter.

Parameters
aDataViewCtrlthe view symbol in the dialog

Definition at line 279 of file lib_tree_model_adapter.cpp.

280 {
281  wxString partHead = _( "Item" );
282  wxString descHead = _( "Description" );
283 
284  // The extent of the text doesn't take into account the space on either side
285  // in the header, so artificially pad it
286  wxSize partHeadMinWidth = KIUI::GetTextSize( partHead + wxT( "MMM" ), aDataViewCtrl );
287 
288  // Ensure the part column is wider than the smallest allowable width
289  if( m_colWidths[PART_COL] < partHeadMinWidth.x )
290  m_colWidths[PART_COL] = partHeadMinWidth.x;
291 
292  m_widget = aDataViewCtrl;
293  aDataViewCtrl->SetIndent( kDataViewIndent );
294  aDataViewCtrl->AssociateModel( this );
295  aDataViewCtrl->ClearColumns();
296 
297  m_col_part = aDataViewCtrl->AppendTextColumn( partHead, PART_COL, wxDATAVIEW_CELL_INERT,
299  m_col_desc = aDataViewCtrl->AppendTextColumn( descHead, DESC_COL, wxDATAVIEW_CELL_INERT,
301 
302  m_col_part->SetMinWidth( partHeadMinWidth.x );
303 }
static const int kDataViewIndent
wxSize GetTextSize(const wxString &aSingleLine, wxWindow *aWindow)
Return the size of aSingleLine of text when it is rendered in aWindow using whatever font is currentl...
Definition: ui_common.cpp:70
#define _(s)

References _, DESC_COL, KIUI::GetTextSize(), kDataViewIndent, m_col_desc, m_col_part, m_colWidths, m_widget, and PART_COL.

◆ DoAddLibrary()

void LIB_TREE_MODEL_ADAPTER::DoAddLibrary ( const wxString &  aNodeName,
const wxString &  aDesc,
const std::vector< LIB_TREE_ITEM * > &  aItemList,
bool  presorted 
)

Add the given list of symbols by alias.

To be called in the setup phase.

Parameters
aNodeNamethe parent node the symbols will appear under
aDescthe description field of the parent node
aItemListlist of symbols

Definition at line 170 of file lib_tree_model_adapter.cpp.

173 {
174  LIB_TREE_NODE_LIB& lib_node = DoAddLibraryNode( aNodeName, aDesc );
175 
176  for( LIB_TREE_ITEM* item: aItemList )
177  lib_node.AddItem( item );
178 
179  lib_node.AssignIntrinsicRanks( presorted );
180 }
LIB_TREE_NODE_LIB & DoAddLibraryNode(const wxString &aNodeName, const wxString &aDesc)
A mix-in to provide polymorphism between items stored in libraries (symbols, aliases and footprints).
Definition: lib_tree_item.h:38
LIB_TREE_NODE_LIB_ID & AddItem(LIB_TREE_ITEM *aItem)
Construct a new alias node, add it to this library, and return it.
Node type: library.
void AssignIntrinsicRanks(bool presorted=false)
Store intrinsic ranks on all children of this node.

References LIB_TREE_NODE_LIB::AddItem(), LIB_TREE_NODE::AssignIntrinsicRanks(), and DoAddLibraryNode().

Referenced by FP_TREE_MODEL_ADAPTER::AddLibraries(), SYMBOL_TREE_MODEL_ADAPTER::AddLibraries(), SYMBOL_TREE_MODEL_ADAPTER::AddLibrary(), SCH_BASE_FRAME::PickSymbolFromLibTree(), PCB_BASE_FRAME::SelectFootprintFromLibTree(), and FP_TREE_SYNCHRONIZING_ADAPTER::Sync().

◆ DoAddLibraryNode()

LIB_TREE_NODE_LIB & LIB_TREE_MODEL_ADAPTER::DoAddLibraryNode ( const wxString &  aNodeName,
const wxString &  aDesc 
)
protected

Definition at line 159 of file lib_tree_model_adapter.cpp.

161 {
162  LIB_TREE_NODE_LIB& lib_node = m_tree.AddLib( aNodeName, aDesc );
163 
164  lib_node.m_Pinned = m_pinnedLibs.Index( lib_node.m_LibId.GetLibNickname() ) != wxNOT_FOUND;
165 
166  return lib_node;
167 }
Node type: library.
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:90
LIB_TREE_NODE_LIB & AddLib(wxString const &aName, wxString const &aDesc)
Construct an empty library node, add it to the root, and return it.

References LIB_TREE_NODE_ROOT::AddLib(), LIB_ID::GetLibNickname(), LIB_TREE_NODE::m_LibId, LIB_TREE_NODE::m_Pinned, m_pinnedLibs, and m_tree.

Referenced by DoAddLibrary(), and SYMBOL_TREE_SYNCHRONIZING_ADAPTER::Sync().

◆ FindAndExpand()

void LIB_TREE_MODEL_ADAPTER::FindAndExpand ( LIB_TREE_NODE aNode,
std::function< bool(const LIB_TREE_NODE *)>  aFunc,
LIB_TREE_NODE **  aHighScore 
)
private

Find any results worth highlighting and expand them, according to given criteria The highest-scoring node is written to aHighScore.

Definition at line 512 of file lib_tree_model_adapter.cpp.

515 {
516  for( std::unique_ptr<LIB_TREE_NODE>& node: aNode.m_Children )
517  {
518  if( aFunc( &*node ) )
519  {
520  wxDataViewItem item = wxDataViewItem( &*node );
521  m_widget->ExpandAncestors( item );
522 
523  if( !(*aHighScore) || node->m_Score > (*aHighScore)->m_Score )
524  (*aHighScore) = &*node;
525  }
526 
527  FindAndExpand( *node, aFunc, aHighScore );
528  }
529 }
void FindAndExpand(LIB_TREE_NODE &aNode, std::function< bool(const LIB_TREE_NODE *)> aFunc, LIB_TREE_NODE **aHighScore)
Find any results worth highlighting and expand them, according to given criteria The highest-scoring ...
PTR_VECTOR m_Children

References LIB_TREE_NODE::m_Children, and m_widget.

Referenced by ShowPreselect(), ShowResults(), and ShowSingleLibrary().

◆ FindItem()

wxDataViewItem LIB_TREE_MODEL_ADAPTER::FindItem ( const LIB_ID aLibId)

Returns tree item corresponding to part.

Parameters
aLibIdspecifies the part and library name to be searched for.
Returns
Tree data item representing the part. Might be invalid if nothings was found.

Definition at line 350 of file lib_tree_model_adapter.cpp.

351 {
352  for( std::unique_ptr<LIB_TREE_NODE>& lib: m_tree.m_Children )
353  {
354  if( lib->m_Name != aLibId.GetLibNickname() )
355  continue;
356 
357  // if part name is not specified, return the library node
358  if( aLibId.GetLibItemName() == "" )
359  return ToItem( lib.get() );
360 
361  for( std::unique_ptr<LIB_TREE_NODE>& alias: lib->m_Children )
362  {
363  if( alias->m_Name == aLibId.GetLibItemName() )
364  return ToItem( alias.get() );
365  }
366 
367  break; // could not find the part in the requested library
368  }
369 
370  return wxDataViewItem();
371 }
const UTF8 & GetLibItemName() const
Definition: lib_id.h:104
static wxDataViewItem ToItem(const LIB_TREE_NODE *aNode)
Convert #SYM_TREE_NODE -> wxDataViewItem.
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
Definition: lib_id.h:90
PTR_VECTOR m_Children

References LIB_ID::GetLibItemName(), LIB_ID::GetLibNickname(), LIB_TREE_NODE::m_Children, m_tree, and ToItem().

◆ FinishTreeInitialization()

void LIB_TREE_MODEL_ADAPTER::FinishTreeInitialization ( )

A final-stage initialization to be called after the window hierarchy has been realized and the window sizes set.

Definition at line 393 of file lib_tree_model_adapter.cpp.

394 {
395  m_col_part->SetWidth( m_colWidths[PART_COL] );
396  m_col_desc->SetWidth( m_colWidths[DESC_COL] );
397 }

References DESC_COL, m_col_desc, m_col_part, m_colWidths, and PART_COL.

◆ Freeze()

void LIB_TREE_MODEL_ADAPTER::Freeze ( )
inline

Definition at line 267 of file lib_tree_model_adapter.h.

References m_freeze.

Referenced by UpdateSearchString().

◆ GenerateInfo()

virtual wxString LIB_TREE_MODEL_ADAPTER::GenerateInfo ( const LIB_ID aLibId,
int  aUnit 
)
inlinevirtual

Reimplemented in SYMBOL_TREE_MODEL_ADAPTER, and FP_TREE_MODEL_ADAPTER.

Definition at line 233 of file lib_tree_model_adapter.h.

233 { return wxEmptyString; };

◆ GetAliasFor()

LIB_ID LIB_TREE_MODEL_ADAPTER::GetAliasFor ( const wxDataViewItem &  aSelection) const

Return the alias for the given item.

Parameters
aSelectionitem from the wxDataViewCtrl (see wxDataViewCtrl::GetSelection())
Returns
alias, or nullptr if none is selected

Definition at line 306 of file lib_tree_model_adapter.cpp.

307 {
308  const LIB_TREE_NODE* node = ToNode( aSelection );
309 
310  LIB_ID emptyId;
311 
312  if( !node )
313  return emptyId;
314 
315  return node->m_LibId;
316 }
A logical library item identifier and consists of various portions much like a URI.
Definition: lib_id.h:51
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.

References LIB_TREE_NODE::m_LibId, and ToNode().

◆ GetAttr()

bool LIB_TREE_MODEL_ADAPTER::GetAttr ( const wxDataViewItem &  aItem,
unsigned int  aCol,
wxDataViewItemAttr &  aAttr 
) const
overrideprotected

Get any formatting for an item.

Parameters
aItemitem to get formatting for
aColcolumn number of interest
aAttrreceiver for attributes
Returns
true if the item has non-default attributes

Definition at line 483 of file lib_tree_model_adapter.cpp.

486 {
487  if( IsFrozen() )
488  return false;
489 
490  LIB_TREE_NODE* node = ToNode( aItem );
491  wxASSERT( node );
492 
493  if( node->m_Type != LIB_TREE_NODE::LIBID )
494  {
495  // Currently only aliases are formatted at all
496  return false;
497  }
498 
499  if( !node->m_IsRoot && aCol == 0 )
500  {
501  // Names of non-root aliases are italicized
502  aAttr.SetItalic( true );
503  return true;
504  }
505  else
506  {
507  return false;
508  }
509 }
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
enum TYPE m_Type

References IsFrozen(), LIB_TREE_NODE::LIBID, LIB_TREE_NODE::m_IsRoot, LIB_TREE_NODE::m_Type, and ToNode().

◆ GetChildren()

unsigned int LIB_TREE_MODEL_ADAPTER::GetChildren ( const wxDataViewItem &  aItem,
wxDataViewItemArray &  aChildren 
) const
override

Populate a list of all the children of an item.

Returns
number of children

Definition at line 374 of file lib_tree_model_adapter.cpp.

376 {
377  const LIB_TREE_NODE* node = ( aItem.IsOk() ? ToNode( aItem ) : &m_tree );
378 
379  if( node->m_Type == LIB_TREE_NODE::TYPE::ROOT
380  || node->m_Type == LIB_TREE_NODE::LIB
381  || ( m_show_units && node->m_Type == LIB_TREE_NODE::TYPE::LIBID ) )
382  {
383  return IntoArray( *node, aChildren );
384  }
385  else
386  {
387  return 0;
388  }
389 
390 }
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.
static unsigned int IntoArray(const LIB_TREE_NODE &aNode, wxDataViewItemArray &aChildren)
Convert SYM_TREE_NODE's children to wxDataViewItemArray.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
enum TYPE m_Type

References IntoArray(), LIB_TREE_NODE::LIB, m_show_units, m_tree, LIB_TREE_NODE::m_Type, and ToNode().

◆ GetColumnCount()

unsigned int LIB_TREE_MODEL_ADAPTER::GetColumnCount ( ) const
inlineoverrideprotected

Definition at line 319 of file lib_tree_model_adapter.h.

319 { return NUM_COLS; }

References NUM_COLS.

◆ GetColumnType()

wxString LIB_TREE_MODEL_ADAPTER::GetColumnType ( unsigned int  aCol) const
inlineoverrideprotected

Return the type of data stored in the column as indicated by wxVariant::GetType()

Definition at line 324 of file lib_tree_model_adapter.h.

324 { return "string"; }

◆ GetContextMenuTool()

virtual TOOL_INTERACTIVE* LIB_TREE_MODEL_ADAPTER::GetContextMenuTool ( )
inlinevirtual

Reimplemented in SYMBOL_TREE_SYNCHRONIZING_ADAPTER, and FP_TREE_SYNCHRONIZING_ADAPTER.

Definition at line 274 of file lib_tree_model_adapter.h.

274 { return nullptr; }

◆ GetFilter()

SYM_FILTER_TYPE LIB_TREE_MODEL_ADAPTER::GetFilter ( ) const
inline

Return the active filter.

Definition at line 142 of file lib_tree_model_adapter.h.

142 { return m_filter; }

References m_filter.

Referenced by SYMBOL_TREE_MODEL_ADAPTER::AddLibraries(), SYMBOL_TREE_MODEL_ADAPTER::AddLibrary(), and SCH_BASE_FRAME::PickSymbolFromLibTree().

◆ GetItemCount()

int LIB_TREE_MODEL_ADAPTER::GetItemCount ( ) const

Return the number of symbols loaded in the tree.

Definition at line 339 of file lib_tree_model_adapter.cpp.

340 {
341  int n = 0;
342 
343  for( const std::unique_ptr<LIB_TREE_NODE>& lib: m_tree.m_Children )
344  n += lib->m_Children.size();
345 
346  return n;
347 }
PTR_VECTOR m_Children

References LIB_TREE_NODE::m_Children, and m_tree.

Referenced by SYMBOL_VIEWER_FRAME::OnSelectSymbol(), and PCB_BASE_FRAME::SelectFootprintFromLibTree().

◆ GetLibrariesCount()

virtual int LIB_TREE_MODEL_ADAPTER::GetLibrariesCount ( ) const
inlinevirtual

Return the number of libraries loaded in the tree.

Reimplemented in SYMBOL_TREE_SYNCHRONIZING_ADAPTER, and FP_TREE_SYNCHRONIZING_ADAPTER.

Definition at line 243 of file lib_tree_model_adapter.h.

244  {
245  return m_tree.m_Children.size();
246  }
PTR_VECTOR m_Children

References LIB_TREE_NODE::m_Children, and m_tree.

Referenced by SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetLibrariesCount().

◆ GetParent()

wxDataViewItem LIB_TREE_MODEL_ADAPTER::GetParent ( const wxDataViewItem &  aItem) const
overrideprotected

Get the parent of an item.

Returns
parent of aItem, or an invalid wxDataViewItem if parent is root

Definition at line 440 of file lib_tree_model_adapter.cpp.

441 {
442  if( m_freeze )
443  return ToItem( nullptr );
444 
445  LIB_TREE_NODE* node = ToNode( aItem );
446  LIB_TREE_NODE* parent = node ? node->m_Parent : nullptr;
447 
448  // wxDataViewModel has no root node, but rather top-level elements have
449  // an invalid (null) parent.
450  if( !node || !parent || parent->m_Type == LIB_TREE_NODE::TYPE::ROOT )
451  return ToItem( nullptr );
452  else
453  return ToItem( parent );
454 }
static wxDataViewItem ToItem(const LIB_TREE_NODE *aNode)
Convert #SYM_TREE_NODE -> wxDataViewItem.
LIB_TREE_NODE * m_Parent
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
enum TYPE m_Type

References m_freeze, LIB_TREE_NODE::m_Parent, LIB_TREE_NODE::m_Type, ToItem(), and ToNode().

Referenced by UpdateSearchString().

◆ GetPinningSymbol()

const wxString LIB_TREE_MODEL_ADAPTER::GetPinningSymbol ( ) const
inlineprotected
Returns
a unicode string to mark a node name like a pinned library name This is not an ASCII7 char, but a unicode char

Definition at line 362 of file lib_tree_model_adapter.h.

363  {
364  return wxString::FromUTF8( "☆ " );
365  }

Referenced by FP_TREE_SYNCHRONIZING_ADAPTER::GetValue(), and SYMBOL_TREE_SYNCHRONIZING_ADAPTER::GetValue().

◆ GetTreeNodeFor()

LIB_TREE_NODE * LIB_TREE_MODEL_ADAPTER::GetTreeNodeFor ( const wxDataViewItem &  aSelection) const

Definition at line 333 of file lib_tree_model_adapter.cpp.

334 {
335  return ToNode( aSelection );
336 }
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.

References ToNode().

◆ GetTypeFor()

LIB_TREE_NODE::TYPE LIB_TREE_MODEL_ADAPTER::GetTypeFor ( const wxDataViewItem &  aSelection) const

Return node type for the given item.

Parameters
aSelectionitem from the wxDataViewCtrl (see wxDataViewCtrl::GetSelection())
Returns
Type of the selected node, might be INVALID.

Definition at line 326 of file lib_tree_model_adapter.cpp.

327 {
328  const LIB_TREE_NODE* node = ToNode( aSelection );
329  return node ? node->m_Type : LIB_TREE_NODE::INVALID;
330 }
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
enum TYPE m_Type

References LIB_TREE_NODE::INVALID, LIB_TREE_NODE::m_Type, and ToNode().

◆ GetUnitFor()

int LIB_TREE_MODEL_ADAPTER::GetUnitFor ( const wxDataViewItem &  aSelection) const

Return the unit for the given item.

Parameters
aSelectionitem from the wxDataViewCtrl (see wxDataViewCtrl::GetSelection())
Returns
Unit, or zero if the alias itself is selected. Return valid is invalid if GetAliasFor() returns nullptr.

Definition at line 319 of file lib_tree_model_adapter.cpp.

320 {
321  const LIB_TREE_NODE* node = ToNode( aSelection );
322  return node ? node->m_Unit : 0;
323 }
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.

References LIB_TREE_NODE::m_Unit, and ToNode().

◆ GetValue()

void LIB_TREE_MODEL_ADAPTER::GetValue ( wxVariant &  aVariant,
const wxDataViewItem &  aItem,
unsigned int  aCol 
) const
overrideprotected

Get the value of an item.

Parameters
aVariantwxVariant to receive the data
aItemitem whose data will be placed into aVariant
aColcolumn number of the data

Definition at line 457 of file lib_tree_model_adapter.cpp.

460 {
461  if( IsFrozen() )
462  {
463  aVariant = wxEmptyString;
464  return;
465  }
466 
467  LIB_TREE_NODE* node = ToNode( aItem );
468  wxASSERT( node );
469 
470  switch( aCol )
471  {
472  default: // column == -1 is used for default Compare function
473  case 0:
474  aVariant = UnescapeString( node->m_Name );
475  break;
476  case 1:
477  aVariant = node->m_Desc;
478  break;
479  }
480 }
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
wxString UnescapeString(const wxString &aSource)

References IsFrozen(), LIB_TREE_NODE::m_Desc, LIB_TREE_NODE::m_Name, ToNode(), and UnescapeString().

◆ HasContainerColumns()

bool LIB_TREE_MODEL_ADAPTER::HasContainerColumns ( const wxDataViewItem &  aItem) const
overrideprotected

Check whether a container has columns too.

Definition at line 427 of file lib_tree_model_adapter.cpp.

428 {
429  return IsContainer( aItem );
430 }
bool IsContainer(const wxDataViewItem &aItem) const override
Check whether an item can have children.

References IsContainer().

◆ IntoArray()

unsigned int LIB_TREE_MODEL_ADAPTER::IntoArray ( const LIB_TREE_NODE aNode,
wxDataViewItemArray &  aChildren 
)
staticprotected

Convert SYM_TREE_NODE's children to wxDataViewItemArray.

Definition at line 52 of file lib_tree_model_adapter.cpp.

54 {
55  unsigned int n = 0;
56 
57  for( std::unique_ptr<LIB_TREE_NODE> const& child: aNode.m_Children )
58  {
59  if( child->m_Score > 0 )
60  {
61  aChildren.Add( ToItem( &*child ) );
62  ++n;
63  }
64  }
65 
66  return n;
67 }
static wxDataViewItem ToItem(const LIB_TREE_NODE *aNode)
Convert #SYM_TREE_NODE -> wxDataViewItem.
PTR_VECTOR m_Children

References LIB_TREE_NODE::m_Children, and ToItem().

Referenced by GetChildren().

◆ IsContainer()

bool LIB_TREE_MODEL_ADAPTER::IsContainer ( const wxDataViewItem &  aItem) const
overrideprotected

Check whether an item can have children.

Definition at line 433 of file lib_tree_model_adapter.cpp.

434 {
435  LIB_TREE_NODE* node = ToNode( aItem );
436  return node ? node->m_Children.size() : true;
437 }
static LIB_TREE_NODE * ToNode(wxDataViewItem aItem)
Convert wxDataViewItem -> #SYM_TREE_NODE.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
PTR_VECTOR m_Children

References LIB_TREE_NODE::m_Children, and ToNode().

Referenced by HasContainerColumns().

◆ IsFrozen()

◆ RefreshTree()

void LIB_TREE_MODEL_ADAPTER::RefreshTree ( )

Definition at line 400 of file lib_tree_model_adapter.cpp.

401 {
402  // Yes, this is an enormous hack. But it works on all platforms, it doesn't suffer
403  // the On^2 sorting issues that ItemChanged() does on OSX, and it doesn't lose the
404  // user's scroll position (which re-attaching or deleting/re-inserting columns does).
405  static int walk = 1;
406 
407  int partWidth = m_col_part->GetWidth();
408  int descWidth = m_col_desc->GetWidth();
409 
410  // Only use the widths read back if they are non-zero.
411  // GTK returns the displayed width of the column, which is not calculated immediately
412  if( descWidth > 0 )
413  {
414  m_colWidths[PART_COL] = partWidth;
415  m_colWidths[DESC_COL] = descWidth;
416  }
417 
418  m_colWidths[PART_COL] += walk;
419  m_colWidths[DESC_COL] -= walk;
420 
421  m_col_part->SetWidth( m_colWidths[PART_COL] );
422  m_col_desc->SetWidth( m_colWidths[DESC_COL] );
423  walk = -walk;
424 }

References DESC_COL, m_col_desc, m_col_part, m_colWidths, and PART_COL.

◆ SaveColWidths()

void LIB_TREE_MODEL_ADAPTER::SaveColWidths ( )

Save the column widths to the config file.

This requires the tree view to still be valid.

Definition at line 106 of file lib_tree_model_adapter.cpp.

107 {
108  if( m_widget )
109  {
111  cfg->m_LibTree.column_width = m_widget->GetColumn( PART_COL )->GetWidth();
112  }
113 }
KIFACE_BASE & Kiface()
Global KIFACE_BASE "get" accessor.
APP_SETTINGS_BASE is a settings class that should be derived for each standalone KiCad application.
Definition: app_settings.h:99
APP_SETTINGS_BASE * KifaceSettings() const
Definition: kiface_base.h:92

References APP_SETTINGS_BASE::LIB_TREE::column_width, Kiface(), KIFACE_BASE::KifaceSettings(), APP_SETTINGS_BASE::m_LibTree, m_widget, and PART_COL.

◆ SavePinnedItems()

void LIB_TREE_MODEL_ADAPTER::SavePinnedItems ( )

Definition at line 116 of file lib_tree_model_adapter.cpp.

117 {
119 
120  std::vector<wxString>& entries = ( m_pinnedKey == wxT( "pinned_symbol_libs" ) ) ?
121  project.m_PinnedSymbolLibs :
122  project.m_PinnedFootprintLibs;
123 
124  entries.clear();
125  m_pinnedLibs.clear();
126 
127  for( std::unique_ptr<LIB_TREE_NODE>& child: m_tree.m_Children )
128  {
129  if( child->m_Pinned )
130  {
131  m_pinnedLibs.push_back( child->m_LibId.GetLibNickname() );
132  entries.push_back( child->m_LibId.GetLibNickname() );
133  }
134  }
135 
136 
137 }
KIWAY & Kiway() const
Return a reference to the KIWAY that this object has an opportunity to participate in.
Definition: kiway_holder.h:53
virtual PROJECT & Prj() const
Return the PROJECT associated with this KIWAY.
Definition: kiway.cpp:191
virtual PROJECT_FILE & GetProjectFile() const
Definition: project.h:145
The backing store for a PROJECT, in JSON format.
Definition: project_file.h:64
PTR_VECTOR m_Children

References PROJECT::GetProjectFile(), KIWAY_HOLDER::Kiway(), LIB_TREE_NODE::m_Children, m_parent, m_pinnedKey, m_pinnedLibs, m_tree, KIWAY::Prj(), and project.

◆ SetFilter()

void LIB_TREE_MODEL_ADAPTER::SetFilter ( SYM_FILTER_TYPE  aFilter)

Set the symbol filter type.

Must be set before adding libraries

Parameters
aFilterif SYM_FILTER_POWER, only power parts are loaded

Definition at line 140 of file lib_tree_model_adapter.cpp.

141 {
142  m_filter = aFilter;
143 }

References m_filter.

Referenced by SCH_BASE_FRAME::PickSymbolFromLibTree().

◆ SetPreselectNode()

void LIB_TREE_MODEL_ADAPTER::SetPreselectNode ( const LIB_ID aLibId,
int  aUnit 
)

Set the symbol name to be selected if there are no search results.

May be set at any time; updates at the next UpdateSearchString().

Parameters
aLibIdsymbol LIB_ID to be selected
aUnitunit to be selected, if > 0 (0 selects the alias itself)

Definition at line 152 of file lib_tree_model_adapter.cpp.

153 {
154  m_preselect_lib_id = aLibId;
155  m_preselect_unit = aUnit;
156 }

References m_preselect_lib_id, and m_preselect_unit.

Referenced by SYMBOL_VIEWER_FRAME::OnSelectSymbol(), SCH_BASE_FRAME::PickSymbolFromLibTree(), and PCB_BASE_FRAME::SelectFootprintFromLibTree().

◆ SetValue()

bool LIB_TREE_MODEL_ADAPTER::SetValue ( const wxVariant &  aVariant,
const wxDataViewItem &  aItem,
unsigned int  aCol 
)
inlineoverrideprotected

Set the value of an item.

Does nothing - this model doesn't support editing.

Definition at line 341 of file lib_tree_model_adapter.h.

343  { return false; }

◆ ShowPreselect()

LIB_TREE_NODE * LIB_TREE_MODEL_ADAPTER::ShowPreselect ( )
private

Find and expand preselected node.

Return the best match (if any).

Definition at line 548 of file lib_tree_model_adapter.cpp.

549 {
550  LIB_TREE_NODE* highScore = nullptr;
551 
552  if( !m_preselect_lib_id.IsValid() )
553  return highScore;
554 
556  [&]( LIB_TREE_NODE const* n )
557  {
558  if( n->m_Type == LIB_TREE_NODE::LIBID && ( n->m_Children.empty() ||
559  !m_preselect_unit ) )
560  return m_preselect_lib_id == n->m_LibId;
561  else if( n->m_Type == LIB_TREE_NODE::UNIT && m_preselect_unit )
562  return m_preselect_lib_id == n->m_Parent->m_LibId &&
563  m_preselect_unit == n->m_Unit;
564  else
565  return false;
566  },
567  &highScore );
568 
569  return highScore;
570 }
void FindAndExpand(LIB_TREE_NODE &aNode, std::function< bool(const LIB_TREE_NODE *)> aFunc, LIB_TREE_NODE **aHighScore)
Find any results worth highlighting and expand them, according to given criteria The highest-scoring ...
bool IsValid() const
Check if this LID_ID is valid.
Definition: lib_id.h:159
LIB_TREE_NODE * m_Parent
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
enum TYPE m_Type
PTR_VECTOR m_Children

References FindAndExpand(), LIB_ID::IsValid(), LIB_TREE_NODE::LIBID, LIB_TREE_NODE::m_Children, LIB_TREE_NODE::m_LibId, LIB_TREE_NODE::m_Parent, m_preselect_lib_id, m_preselect_unit, m_tree, LIB_TREE_NODE::m_Type, LIB_TREE_NODE::m_Unit, and LIB_TREE_NODE::UNIT.

Referenced by UpdateSearchString().

◆ ShowResults()

LIB_TREE_NODE * LIB_TREE_MODEL_ADAPTER::ShowResults ( )
private

Find and expand successful search results.

Return the best match (if any).

Definition at line 532 of file lib_tree_model_adapter.cpp.

533 {
534  LIB_TREE_NODE* highScore = nullptr;
535 
537  []( LIB_TREE_NODE const* n )
538  {
539  // return leaf nodes with some level of matching
540  return n->m_Type == LIB_TREE_NODE::TYPE::LIBID && n->m_Score > 1;
541  },
542  &highScore );
543 
544  return highScore;
545 }
void FindAndExpand(LIB_TREE_NODE &aNode, std::function< bool(const LIB_TREE_NODE *)> aFunc, LIB_TREE_NODE **aHighScore)
Find any results worth highlighting and expand them, according to given criteria The highest-scoring ...
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
enum TYPE m_Type

References FindAndExpand(), LIB_TREE_NODE::m_Score, m_tree, and LIB_TREE_NODE::m_Type.

Referenced by UpdateSearchString().

◆ ShowSingleLibrary()

LIB_TREE_NODE * LIB_TREE_MODEL_ADAPTER::ShowSingleLibrary ( )
private

Find and expand a library if there is only one.

Return the best match (if any).

Definition at line 573 of file lib_tree_model_adapter.cpp.

574 {
575  LIB_TREE_NODE* highScore = nullptr;
576 
578  []( LIB_TREE_NODE const* n )
579  {
580  return n->m_Type == LIB_TREE_NODE::TYPE::LIBID &&
581  n->m_Parent->m_Parent->m_Children.size() == 1;
582  },
583  &highScore );
584 
585  return highScore;
586 }
void FindAndExpand(LIB_TREE_NODE &aNode, std::function< bool(const LIB_TREE_NODE *)> aFunc, LIB_TREE_NODE **aHighScore)
Find any results worth highlighting and expand them, according to given criteria The highest-scoring ...
LIB_TREE_NODE * m_Parent
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
enum TYPE m_Type
PTR_VECTOR m_Children

References FindAndExpand(), LIB_TREE_NODE::m_Children, LIB_TREE_NODE::m_Parent, m_tree, and LIB_TREE_NODE::m_Type.

Referenced by UpdateSearchString().

◆ ShowUnits()

void LIB_TREE_MODEL_ADAPTER::ShowUnits ( bool  aShow)

Whether or not to show units.

May be set at any time; updates at the next UpdateSearchString()

Parameters
aShowif true, units are displayed

Definition at line 146 of file lib_tree_model_adapter.cpp.

147 {
148  m_show_units = aShow;
149 }

References m_show_units.

◆ Thaw()

void LIB_TREE_MODEL_ADAPTER::Thaw ( )
inline

Definition at line 268 of file lib_tree_model_adapter.h.

References m_freeze.

Referenced by UpdateSearchString().

◆ ToItem()

wxDataViewItem LIB_TREE_MODEL_ADAPTER::ToItem ( const LIB_TREE_NODE aNode)
staticprotected

Convert #SYM_TREE_NODE -> wxDataViewItem.

Definition at line 40 of file lib_tree_model_adapter.cpp.

41 {
42  return wxDataViewItem( const_cast<void*>( static_cast<void const*>( aNode ) ) );
43 }

Referenced by FindItem(), GetParent(), and IntoArray().

◆ ToNode()

◆ UpdateSearchString()

void LIB_TREE_MODEL_ADAPTER::UpdateSearchString ( const wxString &  aSearch,
bool  aState 
)

Set the search string provided by the user.

Parameters
aSearchfull, unprocessed search text
aStateif true, we are keeping the state and so we shouldn't collapse the tree

Definition at line 183 of file lib_tree_model_adapter.cpp.

184 {
185  {
186  wxWindowUpdateLocker updateLock( m_widget );
187 
188  // Even with the updateLock, wxWidgets sometimes ties its knickers in a knot trying to
189  // run a wxdataview_selection_changed_callback() on a row that has been deleted.
190  // https://bugs.launchpad.net/kicad/+bug/1756255
191  m_widget->UnselectAll();
192 
193  // This collapse is required before the call to "Freeze()" below. Once Freeze()
194  // is called, GetParent() will return nullptr. While this works for some calls, it
195  // segfaults when we have any expanded elements b/c the sub units in the tree don't
196  // have explicit references that are maintained over a search
197  // The tree will be expanded again below when we get our matches
198  //
199  // Also note that this cannot happen when we have deleted a symbol as GTK will also
200  // iterate over the tree in this case and find a symbol that has an invalid link
201  // and crash https://gitlab.com/kicad/code/kicad/-/issues/6910
202  if( !aState && !aSearch.IsNull() && m_tree.m_Children.size() )
203  {
204  for( std::unique_ptr<LIB_TREE_NODE>& child: m_tree.m_Children )
205  m_widget->Collapse( wxDataViewItem( &*child ) );
206  }
207 
208  // DO NOT REMOVE THE FREEZE/THAW. This freeze/thaw is a flag for this model adapter
209  // that tells it when it shouldn't trust any of the data in the model. When set, it will
210  // not return invalid data to the UI, since this invalid data can cause crashes.
211  // This is different than the update locker, which locks the UI aspects only.
212  Freeze();
213  BeforeReset();
214 
215  m_tree.ResetScore();
216 
217  for( std::unique_ptr<LIB_TREE_NODE>& child: m_tree.m_Children )
218  {
219  if( child->m_Pinned )
220  child->m_Score *= 2;
221  }
222 
223  wxStringTokenizer tokenizer( aSearch );
224 
225  while( tokenizer.HasMoreTokens() )
226  {
227  wxString lib;
228  wxString term = tokenizer.GetNextToken().Lower();
229 
230  if( term.Contains( ":" ) )
231  {
232  lib = term.BeforeFirst( ':' );
233  term = term.AfterFirst( ':' );
234  }
235 
236  EDA_COMBINED_MATCHER matcher( term );
237 
238  m_tree.UpdateScore( matcher, lib );
239  }
240 
241  m_tree.SortNodes();
242  AfterReset();
243  Thaw();
244  }
245 
246  LIB_TREE_NODE* bestMatch = ShowResults();
247 
248  if( !bestMatch )
249  bestMatch = ShowPreselect();
250 
251  if( !bestMatch )
252  bestMatch = ShowSingleLibrary();
253 
254  if( bestMatch )
255  {
256  wxDataViewItem item = wxDataViewItem( bestMatch );
257  m_widget->Select( item );
258 
259  // Make sure the *parent* item is visible. The selected item is the
260  // first (shown) child of the parent. So it's always right below the parent,
261  // and this way the user can also see what library the selected part belongs to,
262  // without having a case where the selection is off the screen (unless the
263  // window is a single row high, which is unlikely)
264  //
265  // This also happens to circumvent https://bugs.launchpad.net/kicad/+bug/1804400
266  // which appears to be a GTK+3 bug.
267  {
268  wxDataViewItem parent = GetParent( item );
269 
270  if( parent.IsOk() )
271  item = parent;
272  }
273 
274  m_widget->EnsureVisible( item );
275  }
276 }
void SortNodes()
Sort child nodes quickly and recursively (IntrinsicRanks must have been set).
LIB_TREE_NODE * ShowResults()
Find and expand successful search results.
LIB_TREE_NODE * ShowPreselect()
Find and expand preselected node.
wxDataViewItem GetParent(const wxDataViewItem &aItem) const override
Get the parent of an item.
void ResetScore()
Initialize score to kLowestDefaultScore, recursively.
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
virtual void UpdateScore(EDA_COMBINED_MATCHER &aMatcher, const wxString &aLib) override
Update the score for this part.
LIB_TREE_NODE * ShowSingleLibrary()
Find and expand a library if there is only one.
PTR_VECTOR m_Children

References Freeze(), GetParent(), LIB_TREE_NODE::m_Children, m_tree, m_widget, LIB_TREE_NODE::ResetScore(), ShowPreselect(), ShowResults(), ShowSingleLibrary(), LIB_TREE_NODE::SortNodes(), Thaw(), and LIB_TREE_NODE_ROOT::UpdateScore().

Member Data Documentation

◆ m_col_desc

wxDataViewColumn* LIB_TREE_MODEL_ADAPTER::m_col_desc
private

Definition at line 403 of file lib_tree_model_adapter.h.

Referenced by AttachTo(), FinishTreeInitialization(), and RefreshTree().

◆ m_col_part

wxDataViewColumn* LIB_TREE_MODEL_ADAPTER::m_col_part
private

Definition at line 402 of file lib_tree_model_adapter.h.

Referenced by AttachTo(), FinishTreeInitialization(), and RefreshTree().

◆ m_colWidths

int LIB_TREE_MODEL_ADAPTER::m_colWidths[NUM_COLS]
private

◆ m_filter

SYM_FILTER_TYPE LIB_TREE_MODEL_ADAPTER::m_filter
private

Definition at line 396 of file lib_tree_model_adapter.h.

Referenced by GetFilter(), and SetFilter().

◆ m_freeze

int LIB_TREE_MODEL_ADAPTER::m_freeze
private

Definition at line 400 of file lib_tree_model_adapter.h.

Referenced by Freeze(), GetParent(), IsFrozen(), and Thaw().

◆ m_parent

EDA_BASE_FRAME* LIB_TREE_MODEL_ADAPTER::m_parent
private

Definition at line 394 of file lib_tree_model_adapter.h.

Referenced by LIB_TREE_MODEL_ADAPTER(), and SavePinnedItems().

◆ m_pinnedKey

wxString LIB_TREE_MODEL_ADAPTER::m_pinnedKey
private

Definition at line 408 of file lib_tree_model_adapter.h.

Referenced by LIB_TREE_MODEL_ADAPTER(), and SavePinnedItems().

◆ m_pinnedLibs

wxArrayString LIB_TREE_MODEL_ADAPTER::m_pinnedLibs
private

◆ m_preselect_lib_id

LIB_ID LIB_TREE_MODEL_ADAPTER::m_preselect_lib_id
private

Definition at line 398 of file lib_tree_model_adapter.h.

Referenced by SetPreselectNode(), and ShowPreselect().

◆ m_preselect_unit

int LIB_TREE_MODEL_ADAPTER::m_preselect_unit
private

Definition at line 399 of file lib_tree_model_adapter.h.

Referenced by SetPreselectNode(), and ShowPreselect().

◆ m_show_units

bool LIB_TREE_MODEL_ADAPTER::m_show_units
private

Definition at line 397 of file lib_tree_model_adapter.h.

Referenced by GetChildren(), and ShowUnits().

◆ m_tree

◆ m_widget

wxDataViewCtrl* LIB_TREE_MODEL_ADAPTER::m_widget
private

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