diff --git a/sources/qetgraphicsitem/terminalelement.cpp b/sources/qetgraphicsitem/terminalelement.cpp index f7510ffa3..ec846519c 100644 --- a/sources/qetgraphicsitem/terminalelement.cpp +++ b/sources/qetgraphicsitem/terminalelement.cpp @@ -33,10 +33,9 @@ TerminalElement::TerminalElement(const ElementsLocation &location, QGraphicsItem m_location_item (nullptr) { link_type_ = Terminale; + connect(this, SIGNAL(elementInfoChange(DiagramContext, DiagramContext)), this, SLOT(updateLabel(DiagramContext, DiagramContext))); - connect(this, SIGNAL(xChanged()),this, SLOT(changeElementInfo())); - connect(this, SIGNAL(yChanged()),this, SLOT(changeElementInfo())); - connect(this, SIGNAL(updateLabel()),this,SLOT(changeElementInfo())); + connect(this, &Element::updateLabel, [this]() {this->updateLabel(this->elementInformations(), this->elementInformations());}); } TerminalElement::~TerminalElement() { @@ -52,40 +51,36 @@ void TerminalElement::initLink(QETProject *project) { updateLabel(DiagramContext(), elementInformations()); } -/** - * @brief SimpleElement::changeElementInfo() - * Update label if it contains %c, %l, %f or %F variables - */ -void TerminalElement::changeElementInfo(){ - QString temp_label = this->elementInformations()["label"].toString(); - if (temp_label.contains("\%")) { - if (this->diagram()!=NULL) - this->updateLabel(this->elementInformations(),this->elementInformations()); - } -} - /** * @brief SimpleElement::updateLabel * update label of this element */ void TerminalElement::updateLabel(DiagramContext old_info, DiagramContext new_info) { - QString label = autonum::AssignVariables::formulaToLabel(new_info["label"].toString(), m_autoNum_seq, diagram(), this); + QString old_formula = old_info["formula"].toString(); + QString new_formula = new_info["formula"].toString(); - //Label of element - if (old_info["label"].toString() != label) { - if (new_info["label"].toString().isEmpty()) - setTaggedText("label", "_", false); - else { - setTaggedText("label", label, true); - } + setUpConnectionForFormula(old_formula, new_formula); + + QString label = autonum::AssignVariables::formulaToLabel(new_formula, m_autoNum_seq, diagram(), this); + + if (label.isEmpty()) + { + setTaggedText("label", new_info["label"].toString()); + } + else + { + bool visible = m_element_informations.contains("label") ? m_element_informations.keyMustShow("label") : true; + m_element_informations.addValue("label", label, visible); + setTaggedText("label", label); } - if (ElementTextItem *eti = taggedText("label")) { + if (ElementTextItem *eti = taggedText("label")) + { new_info["label"].toString().isEmpty() ? eti->setVisible(true) : eti -> setVisible(new_info.keyMustShow("label")); } - //Comment and Location of element + //Comment and Location of element QString comment = new_info["comment"].toString(); bool must_show = new_info.keyMustShow("comment"); QString location = new_info["location"].toString(); diff --git a/sources/qetgraphicsitem/terminalelement.h b/sources/qetgraphicsitem/terminalelement.h index 954e1ca6d..6687f7e2f 100644 --- a/sources/qetgraphicsitem/terminalelement.h +++ b/sources/qetgraphicsitem/terminalelement.h @@ -30,12 +30,9 @@ class TerminalElement : public CustomElement TerminalElement(const ElementsLocation &, QGraphicsItem * = 0, int * = 0); ~TerminalElement(); virtual void initLink(QETProject *project); - - signals: public slots: void updateLabel(DiagramContext old_info, DiagramContext new_info); - void changeElementInfo(); private: CommentItem *m_comment_item;