diff --git a/sources/TerminalStrip/terminalstrip.cpp b/sources/TerminalStrip/terminalstrip.cpp index b39c487e8..9bd675569 100644 --- a/sources/TerminalStrip/terminalstrip.cpp +++ b/sources/TerminalStrip/terminalstrip.cpp @@ -424,6 +424,8 @@ TerminalStripIndex TerminalStrip::index(int index) for(auto &real_term : phy_term->terminals()) { tsi_.m_label.append(real_term->label()); tsi_.m_uuid.append(real_term->elementUuid()); + tsi_.m_is_element.append(real_term->isElement()); + tsi_.m_element.append(static_cast(real_term->element())); } tsi_.m_valid = true; @@ -587,3 +589,23 @@ QUuid TerminalStripIndex::uuid(int level) const return m_uuid.at(level); } + +bool TerminalStripIndex::isElement(int level) const +{ + if (level<0 || + level >= m_is_element.size()) { + return false; + } + + return m_is_element.at(level); +} + +TerminalElement *TerminalStripIndex::element(int level) const +{ + if (level<0 || + level >= m_element.size()) { + return nullptr; + } + + return m_element.at(level); +} diff --git a/sources/TerminalStrip/terminalstrip.h b/sources/TerminalStrip/terminalstrip.h index ee78b0332..5c7cbf136 100644 --- a/sources/TerminalStrip/terminalstrip.h +++ b/sources/TerminalStrip/terminalstrip.h @@ -27,7 +27,15 @@ class RealTerminal; class QETProject; class PhysicalTerminal; class TerminalStripIndex; +class TerminalElement; +/** + * @brief The TerminalStrip class + * This class hold all the datas and configurations + * of a terminal strip (but the not the visual aspect). + * A terminal strip have some informations (name comment etc...) + * and is composed by terminals (draw in a diagram or described in the terminal strip) + */ class TerminalStrip : public QObject { Q_OBJECT @@ -88,11 +96,15 @@ class TerminalStripIndex bool isValid() const; QString label(int level = 0) const; QUuid uuid(int level = 0) const; + bool isElement(int level = 0) const; + TerminalElement *element(int level = 0) const; private: QVector m_label; QVector m_uuid; bool m_valid = false; + QVector m_is_element; + QVector m_element; }; #endif // TERMINALSTRIP_H diff --git a/sources/TerminalStrip/ui/terminalstripeditor.cpp b/sources/TerminalStrip/ui/terminalstripeditor.cpp index d43585134..1a129f643 100644 --- a/sources/TerminalStrip/ui/terminalstripeditor.cpp +++ b/sources/TerminalStrip/ui/terminalstripeditor.cpp @@ -175,6 +175,10 @@ QTreeWidgetItem* TerminalStripEditor::addTerminalStrip(TerminalStrip *terminal_s auto term_item = new QTreeWidgetItem(strip_item, QStringList(index.label()), TerminalStripTreeWidget::Terminal); term_item->setData(0, TerminalStripTreeWidget::UUID_USER_ROLE, index.uuid().toString()); term_item->setIcon(0, QET::Icons::ElementTerminal); + + if (index.isElement()) { + m_uuid_terminal_H.insert(index.uuid(), index.element()); + } } m_item_strip_H.insert(strip_item, terminal_strip);