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

Bridges SCHEMATIC's listener stream into the generic TEXT_VAR_TRACKER. More...

#include <schematic_text_var_adapter.h>

Inheritance diagram for SCHEMATIC_TEXT_VAR_ADAPTER:
SCHEMATIC_LISTENER

Public Member Functions

 SCHEMATIC_TEXT_VAR_ADAPTER (SCHEMATIC &aSchematic)
 
 ~SCHEMATIC_TEXT_VAR_ADAPTER () override=default
 
TEXT_VAR_TRACKER & Tracker ()
 
const TEXT_VAR_TRACKER & Tracker () const
 
void OnSchItemsAdded (SCHEMATIC &aSch, std::vector< SCH_ITEM * > &aItems) override
 
void OnSchItemsRemoved (SCHEMATIC &aSch, std::vector< SCH_ITEM * > &aItems) override
 
void OnSchItemsChanged (SCHEMATIC &aSch, std::vector< SCH_ITEM * > &aItems) override
 
void RebuildIndex ()
 Walk every sheet in the hierarchy and register text-bearing items.
 
void SyncToHierarchy ()
 Rebuild only if a sheet was added or removed, or the set of screens in the hierarchy differs from the indexed one.
 
void MarkHierarchyChanged ()
 Force the next SyncToHierarchy() to rebuild.
 
std::vector< TEXT_VAR_REF_KEY > ExtractSourceKeys (EDA_ITEM *aItem) const
 Return the keys aItem could source as a cross-reference target.
 
virtual void OnSchSheetChanged (SCHEMATIC &aSch)
 
virtual void OnSchSelectionChanged (SCHEMATIC &aSch)
 

Private Member Functions

std::set< SCH_SCREEN * > hierarchyScreens () const
 
void noteSheets (const std::vector< SCH_ITEM * > &aItems)
 
std::vector< TEXT_VAR_REF_KEY > trackKeys (SCH_ITEM *aItem)
 
void registerItem (SCH_ITEM *aItem)
 
void handleItemChanged (SCH_ITEM *aItem)
 

Static Private Member Functions

static SCH_ITEM * trackedItem (SCH_ITEM *aItem)
 
static std::vector< TEXT_VAR_REF_KEY > collectKeys (SCH_ITEM *aItem)
 

Private Attributes

SCHEMATIC & m_schematic
 
TEXT_VAR_TRACKER m_tracker
 
std::unordered_set< SCH_ITEM * > m_registered
 
std::set< SCH_SCREEN * > m_indexedScreens
 
bool m_hierarchyChanged = false
 

Detailed Description

Bridges SCHEMATIC's listener stream into the generic TEXT_VAR_TRACKER.

Mirrors BOARD_TEXT_VAR_ADAPTER but for schematic items. A SCH_SYMBOL can carry multiple instance-specific references (different refdes on different SCH_SHEET_PATH instances), so cross-ref sources are emitted for every instance the symbol lives on.

Definition at line 41 of file schematic_text_var_adapter.h.

Constructor & Destructor Documentation

◆ SCHEMATIC_TEXT_VAR_ADAPTER()

SCHEMATIC_TEXT_VAR_ADAPTER::SCHEMATIC_TEXT_VAR_ADAPTER ( SCHEMATIC & aSchematic)
explicit

Definition at line 33 of file schematic_text_var_adapter.cpp.

References ExtractSourceKeys(), m_schematic, and m_tracker.

◆ ~SCHEMATIC_TEXT_VAR_ADAPTER()

SCHEMATIC_TEXT_VAR_ADAPTER::~SCHEMATIC_TEXT_VAR_ADAPTER ( )
overridedefault

Member Function Documentation

◆ collectKeys()

std::vector< TEXT_VAR_REF_KEY > SCHEMATIC_TEXT_VAR_ADAPTER::collectKeys ( SCH_ITEM * aItem)
staticprivate

◆ ExtractSourceKeys()

std::vector< TEXT_VAR_REF_KEY > SCHEMATIC_TEXT_VAR_ADAPTER::ExtractSourceKeys ( EDA_ITEM * aItem) const

Return the keys aItem could source as a cross-reference target.

For a SCH_SYMBOL, these are one ${REFDES:*} key and one ${KIID_PATH:*} key per sheet instance. Stored text holds the KIID path form (see SCHEMATIC::ConvertRefsToKIIDs); the refdes form is what users type.

Definition at line 208 of file schematic_text_var_adapter.cpp.

References TEXT_VAR_REF_KEY::CROSS_REF, EDA_ITEM::GetParent(), SCH_SYMBOL::GetRef(), TEXT_VAR_REF_KEY::kind, m_schematic, EDA_ITEM::m_Uuid, path, and TEXT_VAR_REF_KEY::primary.

Referenced by SCHEMATIC_TEXT_VAR_ADAPTER().

◆ handleItemChanged()

void SCHEMATIC_TEXT_VAR_ADAPTER::handleItemChanged ( SCH_ITEM * aItem)
private

Definition at line 103 of file schematic_text_var_adapter.cpp.

References m_tracker, and trackKeys().

Referenced by OnSchItemsChanged(), and OnSchItemsRemoved().

◆ hierarchyScreens()

std::set< SCH_SCREEN * > SCHEMATIC_TEXT_VAR_ADAPTER::hierarchyScreens ( ) const
private

Definition at line 166 of file schematic_text_var_adapter.cpp.

References m_schematic, and path.

Referenced by RebuildIndex(), and SyncToHierarchy().

◆ MarkHierarchyChanged()

void SCHEMATIC_TEXT_VAR_ADAPTER::MarkHierarchyChanged ( )
inline

Force the next SyncToHierarchy() to rebuild.

Definition at line 69 of file schematic_text_var_adapter.h.

References m_hierarchyChanged.

◆ noteSheets()

void SCHEMATIC_TEXT_VAR_ADAPTER::noteSheets ( const std::vector< SCH_ITEM * > & aItems)
private

Definition at line 110 of file schematic_text_var_adapter.cpp.

References m_hierarchyChanged, and SCH_SHEET_T.

Referenced by OnSchItemsAdded(), and OnSchItemsRemoved().

◆ OnSchItemsAdded()

void SCHEMATIC_TEXT_VAR_ADAPTER::OnSchItemsAdded ( SCHEMATIC & aSch,
std::vector< SCH_ITEM * > & aItems )
overridevirtual

◆ OnSchItemsChanged()

void SCHEMATIC_TEXT_VAR_ADAPTER::OnSchItemsChanged ( SCHEMATIC & aSch,
std::vector< SCH_ITEM * > & aItems )
overridevirtual

Reimplemented from SCHEMATIC_LISTENER.

Definition at line 156 of file schematic_text_var_adapter.cpp.

References handleItemChanged(), and trackedItem().

Referenced by BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().

◆ OnSchItemsRemoved()

void SCHEMATIC_TEXT_VAR_ADAPTER::OnSchItemsRemoved ( SCHEMATIC & aSch,
std::vector< SCH_ITEM * > & aItems )
overridevirtual

Reimplemented from SCHEMATIC_LISTENER.

Definition at line 134 of file schematic_text_var_adapter.cpp.

References handleItemChanged(), m_registered, m_tracker, noteSheets(), and trackedItem().

Referenced by BOOST_AUTO_TEST_CASE().

◆ OnSchSelectionChanged()

virtual void SCHEMATIC_LISTENER::OnSchSelectionChanged ( SCHEMATIC & aSch)
inlinevirtualinherited

Reimplemented in DIALOG_SYMBOL_FIELDS_TABLE.

Definition at line 88 of file schematic.h.

Referenced by SCHEMATIC::OnSchSelectionChanged().

◆ OnSchSheetChanged()

virtual void SCHEMATIC_LISTENER::OnSchSheetChanged ( SCHEMATIC & aSch)
inlinevirtualinherited

Reimplemented in DIALOG_SYMBOL_FIELDS_TABLE.

Definition at line 86 of file schematic.h.

Referenced by SCHEMATIC::OnSchSheetChanged().

◆ RebuildIndex()

void SCHEMATIC_TEXT_VAR_ADAPTER::RebuildIndex ( )

Walk every sheet in the hierarchy and register text-bearing items.

Loaders and importers populate screens without per-item notifications, so this runs whenever the whole hierarchy or its connectivity is rebuilt.

Definition at line 189 of file schematic_text_var_adapter.cpp.

References hierarchyScreens(), m_hierarchyChanged, m_indexedScreens, m_registered, m_tracker, and registerItem().

Referenced by SyncToHierarchy().

◆ registerItem()

void SCHEMATIC_TEXT_VAR_ADAPTER::registerItem ( SCH_ITEM * aItem)
private

Definition at line 97 of file schematic_text_var_adapter.cpp.

References m_tracker, and trackKeys().

Referenced by OnSchItemsAdded(), and RebuildIndex().

◆ SyncToHierarchy()

void SCHEMATIC_TEXT_VAR_ADAPTER::SyncToHierarchy ( )

Rebuild only if a sheet was added or removed, or the set of screens in the hierarchy differs from the indexed one.

Cheap enough to run on every hierarchy refresh.

Definition at line 180 of file schematic_text_var_adapter.cpp.

References hierarchyScreens(), m_hierarchyChanged, m_indexedScreens, and RebuildIndex().

◆ trackedItem()

SCH_ITEM * SCHEMATIC_TEXT_VAR_ADAPTER::trackedItem ( SCH_ITEM * aItem)
staticprivate

◆ Tracker() [1/2]

◆ Tracker() [2/2]

const TEXT_VAR_TRACKER & SCHEMATIC_TEXT_VAR_ADAPTER::Tracker ( ) const
inline

Definition at line 48 of file schematic_text_var_adapter.h.

References m_tracker.

◆ trackKeys()

std::vector< TEXT_VAR_REF_KEY > SCHEMATIC_TEXT_VAR_ADAPTER::trackKeys ( SCH_ITEM * aItem)
private

Definition at line 84 of file schematic_text_var_adapter.cpp.

References collectKeys(), and m_registered.

Referenced by handleItemChanged(), and registerItem().

Member Data Documentation

◆ m_hierarchyChanged

bool SCHEMATIC_TEXT_VAR_ADAPTER::m_hierarchyChanged = false
private

◆ m_indexedScreens

std::set<SCH_SCREEN*> SCHEMATIC_TEXT_VAR_ADAPTER::m_indexedScreens
private

Definition at line 92 of file schematic_text_var_adapter.h.

Referenced by RebuildIndex(), and SyncToHierarchy().

◆ m_registered

std::unordered_set<SCH_ITEM*> SCHEMATIC_TEXT_VAR_ADAPTER::m_registered
private

Definition at line 91 of file schematic_text_var_adapter.h.

Referenced by OnSchItemsRemoved(), RebuildIndex(), and trackKeys().

◆ m_schematic

SCHEMATIC& SCHEMATIC_TEXT_VAR_ADAPTER::m_schematic
private

◆ m_tracker

TEXT_VAR_TRACKER SCHEMATIC_TEXT_VAR_ADAPTER::m_tracker
private

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