39 for( std::unique_ptr<LIB_TREE_NODE>& child:
m_Children )
48 std::vector<LIB_TREE_NODE*> sort_buf;
54 for(
int i = 0; i <= max; ++i )
59 for( std::unique_ptr<LIB_TREE_NODE>& child:
m_Children )
60 sort_buf.push_back( child.get() );
62 std::sort( sort_buf.begin(), sort_buf.end(),
65 return StrNumCmp( a->m_Name, b->m_Name, true ) > 0;
68 for(
int i = 0; i < (int) sort_buf.size(); ++i )
77 [&]( std::unique_ptr<LIB_TREE_NODE>& a, std::unique_ptr<LIB_TREE_NODE>& b )
79 return Compare( *a, *b, aUseScores );
82 for( std::unique_ptr<LIB_TREE_NODE>& node:
m_Children )
83 node->SortNodes( aUseScores );
94 if( aNode1.
m_Name.StartsWith( wxT(
"-- " ) ) )
96 if( aNode2.
m_Name.StartsWith( wxT(
"-- " ) ) )
105 else if( aNode2.
m_Name.StartsWith( wxT(
"-- " ) ) )
122 return reinterpret_cast<const void*
>( &aNode1 ) <
reinterpret_cast<const void*
>( &aNode2 );
127 : m_Parent( nullptr ),
129 m_IntrinsicRank( 0 ),
139 static void* locale =
nullptr;
140 static wxString namePrefix;
144 if(
Pgm().GetLocale() != locale )
146 namePrefix =
_(
"Unit" );
147 locale =
Pgm().GetLocale();
196 m_Children.push_back( std::unique_ptr<LIB_TREE_NODE>( unit ) );
237 wxString
const& aDesc )
250 m_Children.push_back( std::unique_ptr<LIB_TREE_NODE>( item ) );
263 for( std::unique_ptr<LIB_TREE_NODE>& child:
m_Children )
265 child->UpdateScore( aMatcher, aLib );
287 m_Children.push_back( std::unique_ptr<LIB_TREE_NODE>( lib ) );
294 for( std::unique_ptr<LIB_TREE_NODE>& child:
m_Children )
295 child->UpdateScore( aMatcher, aLib );
int ScoreTerms(std::vector< SEARCH_TERM > &aWeightedTerms)
int SetLibItemName(const UTF8 &aLibItemName)
Override the library item name portion of the LIB_ID to aLibItemName.
int SetLibNickname(const UTF8 &aNickname)
Override the logical library name portion of the LIB_ID to aNickname.
const UTF8 & GetLibNickname() const
Return the logical library name portion of a LIB_ID.
A mix-in to provide polymorphism between items stored in libraries (symbols, aliases and footprints).
virtual wxString GetUnitReference(int aUnit)
For items with units, return an identifier for unit x.
virtual wxString GetLibNickname() const =0
virtual std::vector< SEARCH_TERM > GetSearchTerms()
virtual bool HasUnitDisplayName(int aUnit)
For items with units, return true if a display name is set for x.
virtual wxString GetFootprint()
For items with footprint fields.
virtual bool IsRoot() const
For items having aliases, IsRoot() indicates the principal item.
virtual wxString GetName() const =0
virtual wxString GetDescription()=0
virtual LIB_ID GetLibId() const =0
virtual int GetUnitCount() const
For items with units, return the number of units.
virtual wxString GetUnitDisplayName(int aUnit)
For items with units, return a display name for unit x.
virtual void GetChooserFields(std::map< wxString, wxString > &aColumnMap)
Retrieves a key/value map of the fields on this item that should be exposed to the library browser/ch...
LIB_TREE_NODE_UNIT & AddUnit(LIB_TREE_ITEM *aItem, int aUnit)
Add a new unit to the component and return it.
void Update(LIB_TREE_ITEM *aItem)
Update the node using data from a LIB_ALIAS object.
LIB_TREE_NODE_LIB_ID(LIB_TREE_NODE_LIB_ID const &_)=delete
The addresses of CMP_TREE_NODEs are used as unique IDs for the wxDataViewModel, so don't let them be ...
virtual void UpdateScore(EDA_COMBINED_MATCHER &aMatcher, const wxString &aLib) override
Perform the actual search.
LIB_TREE_NODE_LIB_ID & AddItem(LIB_TREE_ITEM *aItem)
Construct a new alias node, add it to this library, and return it.
LIB_TREE_NODE_LIB(LIB_TREE_NODE_LIB const &_)=delete
The addresses of CMP_TREE_NODEs are used as unique IDs for the wxDataViewModel, so don't let them be ...
virtual void UpdateScore(EDA_COMBINED_MATCHER &aMatcher, const wxString &aLib) override
Update the score for this part.
virtual void UpdateScore(EDA_COMBINED_MATCHER &aMatcher, const wxString &aLib) override
Update the score for this part.
LIB_TREE_NODE_ROOT()
Construct the root node.
LIB_TREE_NODE_LIB & AddLib(wxString const &aName, wxString const &aDesc)
Construct an empty library node, add it to the root, and return it.
Node type: unit of component.
LIB_TREE_NODE_UNIT(LIB_TREE_NODE_UNIT const &_)=delete
The addresses of CMP_TREE_NODEs are used as unique IDs for the wxDataViewModel, so don't let them be ...
Model class in the component selector Model-View-Adapter (mediated MVC) architecture.
void SortNodes(bool aUseScores)
Sort child nodes quickly and recursively (IntrinsicRanks must have been set).
static bool Compare(LIB_TREE_NODE const &aNode1, LIB_TREE_NODE const &aNode2, bool aUseScores)
Compare two nodes.
std::vector< SEARCH_TERM > m_SearchTerms
std::map< wxString, wxString > m_Fields
List of weighted search terms.
void ResetScore()
Initialize score to kLowestDefaultScore, recursively.
int m_IntrinsicRank
The rank of the item before any search terms are applied.
void AssignIntrinsicRanks(bool presorted=false)
Store intrinsic ranks on all children of this node.
Abstract pattern-matching tool and implementations.
static const unsigned kLowestDefaultScore
KIWAY Kiway & Pgm(), KFCTL_STANDALONE
The global Program "get" accessor.