|
KiCad PCB EDA Suite
|
Bridges SCHEMATIC's listener stream into the generic TEXT_VAR_TRACKER. More...
#include <schematic_text_var_adapter.h>
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 |
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.
|
explicit |
Definition at line 33 of file schematic_text_var_adapter.cpp.
References ExtractSourceKeys(), m_schematic, and m_tracker.
|
overridedefault |
|
staticprivate |
Definition at line 55 of file schematic_text_var_adapter.cpp.
References FilterTrackable(), NO_RECURSE, SCH_ITEM::RunOnChildren(), SCH_GROUP_T, text, and EDA_ITEM::Type().
Referenced by trackKeys().
| 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().
|
private |
Definition at line 103 of file schematic_text_var_adapter.cpp.
References m_tracker, and trackKeys().
Referenced by OnSchItemsChanged(), and OnSchItemsRemoved().
|
private |
Definition at line 166 of file schematic_text_var_adapter.cpp.
References m_schematic, and path.
Referenced by RebuildIndex(), and SyncToHierarchy().
|
inline |
Force the next SyncToHierarchy() to rebuild.
Definition at line 69 of file schematic_text_var_adapter.h.
References m_hierarchyChanged.
|
private |
Definition at line 110 of file schematic_text_var_adapter.cpp.
References m_hierarchyChanged, and SCH_SHEET_T.
Referenced by OnSchItemsAdded(), and OnSchItemsRemoved().
|
overridevirtual |
Reimplemented from SCHEMATIC_LISTENER.
Definition at line 122 of file schematic_text_var_adapter.cpp.
References noteSheets(), registerItem(), and trackedItem().
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().
|
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().
|
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().
|
inlinevirtualinherited |
Reimplemented in DIALOG_SYMBOL_FIELDS_TABLE.
Definition at line 88 of file schematic.h.
Referenced by SCHEMATIC::OnSchSelectionChanged().
|
inlinevirtualinherited |
Reimplemented in DIALOG_SYMBOL_FIELDS_TABLE.
Definition at line 86 of file schematic.h.
Referenced by SCHEMATIC::OnSchSheetChanged().
| 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().
|
private |
Definition at line 97 of file schematic_text_var_adapter.cpp.
References m_tracker, and trackKeys().
Referenced by OnSchItemsAdded(), and RebuildIndex().
| 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().
Definition at line 44 of file schematic_text_var_adapter.cpp.
References EDA_ITEM::GetParent(), and SCH_ITEM::IsType().
Referenced by OnSchItemsAdded(), OnSchItemsChanged(), and OnSchItemsRemoved().
|
inline |
Definition at line 47 of file schematic_text_var_adapter.h.
References m_tracker.
Referenced by BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), BOOST_AUTO_TEST_CASE(), and BOOST_AUTO_TEST_CASE().
|
inline |
Definition at line 48 of file schematic_text_var_adapter.h.
References m_tracker.
|
private |
Definition at line 84 of file schematic_text_var_adapter.cpp.
References collectKeys(), and m_registered.
Referenced by handleItemChanged(), and registerItem().
|
private |
Definition at line 93 of file schematic_text_var_adapter.h.
Referenced by MarkHierarchyChanged(), noteSheets(), RebuildIndex(), and SyncToHierarchy().
|
private |
Definition at line 92 of file schematic_text_var_adapter.h.
Referenced by RebuildIndex(), and SyncToHierarchy().
|
private |
Definition at line 91 of file schematic_text_var_adapter.h.
Referenced by OnSchItemsRemoved(), RebuildIndex(), and trackKeys().
|
private |
Definition at line 89 of file schematic_text_var_adapter.h.
Referenced by ExtractSourceKeys(), hierarchyScreens(), and SCHEMATIC_TEXT_VAR_ADAPTER().
|
private |
Definition at line 90 of file schematic_text_var_adapter.h.
Referenced by handleItemChanged(), OnSchItemsRemoved(), RebuildIndex(), registerItem(), SCHEMATIC_TEXT_VAR_ADAPTER(), Tracker(), and Tracker().