diff --git a/sources/projectconfigpages.cpp b/sources/projectconfigpages.cpp index 29a9c7125..b7736b458 100644 --- a/sources/projectconfigpages.cpp +++ b/sources/projectconfigpages.cpp @@ -382,7 +382,6 @@ void ProjectAutoNumConfigPage::buildConnections() { // Auto Folio Numbering connect (m_faw, SIGNAL (applyPressed()), this, SLOT (applyAutoNum())); - connect (m_faw, SIGNAL (m_autonumber_tabs_rb_clicked()), this, SLOT (tabChanged(int))); } /** diff --git a/sources/qetgraphicsitem/customelement.cpp b/sources/qetgraphicsitem/customelement.cpp index 9e6372244..8d68100fc 100644 --- a/sources/qetgraphicsitem/customelement.cpp +++ b/sources/qetgraphicsitem/customelement.cpp @@ -23,6 +23,7 @@ #include "elementdefinition.h" #include #include "terminal.h" +#include "diagramposition.h" /** Constructeur de la classe CustomElement. Permet d'instancier un element @@ -986,3 +987,11 @@ ElementTextItem* CustomElement::taggedText(const QString &tagg) const { } return NULL; } + +QString CustomElement::assignVariables(QString label, Element *elmt){ + label.replace("%f", QString::number(elmt->diagram()->folioIndex()+1)); + label.replace("%F", elmt->diagram() -> border_and_titleblock.folio()); + label.replace("%c", QString::number(elmt->diagram() -> convertPosition(elmt -> scenePos()).number())); + label.replace("%l", elmt->diagram() -> convertPosition(elmt -> scenePos()).letter()); + return label; +} diff --git a/sources/qetgraphicsitem/customelement.h b/sources/qetgraphicsitem/customelement.h index 53305de33..2e332b847 100644 --- a/sources/qetgraphicsitem/customelement.h +++ b/sources/qetgraphicsitem/customelement.h @@ -93,6 +93,7 @@ class CustomElement : public FixedElement virtual bool validOrientationAttribute(const QDomElement &); virtual void setPainterStyle(QDomElement &, QPainter &); ElementTextItem* setTaggedText(const QString &tagg, const QString &newstr, const bool noeditable=false); + QString assignVariables (QString, Element *); }; /** diff --git a/sources/qetgraphicsitem/masterelement.cpp b/sources/qetgraphicsitem/masterelement.cpp index de98c9ff7..ea073002d 100644 --- a/sources/qetgraphicsitem/masterelement.cpp +++ b/sources/qetgraphicsitem/masterelement.cpp @@ -33,6 +33,8 @@ MasterElement::MasterElement(const ElementsLocation &location, QGraphicsItem *qg { link_type_ = Master; 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())); } /** @@ -117,18 +119,35 @@ void MasterElement::initLink(QETProject *project) { updateLabel(DiagramContext(), elementInformations()); } +/** + * @brief MasterElement::changeElementInfo() + * Update label if it contains %c, %l, %f or %F variables + */ +void MasterElement::changeElementInfo(){ + QString temp_label = this->elementInformations()["label"].toString(); + if (temp_label.contains("\%l")||temp_label.contains("\%c")||temp_label.contains("\%f")||temp_label.contains("\%F")) { + if (this->diagram()!=NULL) + this->updateLabel(this->elementInformations(),this->elementInformations()); + } +} + /** * @brief MasterElement::updateLabel * update label of this element * and the comment item if he's displayed. */ void MasterElement::updateLabel(DiagramContext old_info, DiagramContext new_info) { + QString newstr = new_info["label"].toString(); + Element *elmt = this; + newstr = assignVariables(newstr, elmt); + //Label of element - if (old_info["label"].toString() != new_info["label"].toString()) { + if (old_info["label"].toString() != newstr) { if (new_info["label"].toString().isEmpty()) setTaggedText("label", "_", false); - else - setTaggedText("label", new_info["label"].toString(), true); + else { + setTaggedText("label", newstr, true); + } } if (ElementTextItem *eti = taggedText("label")) { diff --git a/sources/qetgraphicsitem/masterelement.h b/sources/qetgraphicsitem/masterelement.h index 84c0925ca..a14ac66f6 100644 --- a/sources/qetgraphicsitem/masterelement.h +++ b/sources/qetgraphicsitem/masterelement.h @@ -45,6 +45,7 @@ class MasterElement : public CustomElement public slots: void updateLabel(DiagramContext old_info, DiagramContext new_info); + void changeElementInfo(); private: bool aboutDeleteXref (); diff --git a/sources/qetgraphicsitem/simpleelement.cpp b/sources/qetgraphicsitem/simpleelement.cpp index 89191f1d4..1dcec11ca 100644 --- a/sources/qetgraphicsitem/simpleelement.cpp +++ b/sources/qetgraphicsitem/simpleelement.cpp @@ -18,6 +18,7 @@ #include "simpleelement.h" #include "commentitem.h" #include "elementtextitem.h" + /** * @brief SimpleElement::SimpleElement * @param location @@ -31,6 +32,8 @@ SimpleElement::SimpleElement(const ElementsLocation &location, QGraphicsItem *qg { link_type_ = Simple; 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())); } /** @@ -51,17 +54,34 @@ void SimpleElement::initLink(QETProject *project) { updateLabel(DiagramContext(), elementInformations()); } +/** + * @brief SimpleElement::changeElementInfo() + * Update label if it contains %c, %l, %f or %F variables + */ +void SimpleElement::changeElementInfo(){ + QString temp_label = this->elementInformations()["label"].toString(); + if (temp_label.contains("\%l")||temp_label.contains("\%c")||temp_label.contains("\%f")||temp_label.contains("\%F")) { + if (this->diagram()!=NULL) + this->updateLabel(this->elementInformations(),this->elementInformations()); + } +} + /** * @brief SimpleElement::updateLabel * update label of this element */ void SimpleElement::updateLabel(DiagramContext old_info, DiagramContext new_info) { + QString label = new_info["label"].toString(); + Element *elmt = this; + label = assignVariables(label,elmt); + //Label of element - if (old_info["label"].toString() != new_info["label"].toString()) { + if (old_info["label"].toString() != label) { if (new_info["label"].toString().isEmpty()) setTaggedText("label", "_", false); - else - setTaggedText("label", new_info["label"].toString(), true); + else { + setTaggedText("label", label, true); + } } if (ElementTextItem *eti = taggedText("label")) { diff --git a/sources/qetgraphicsitem/simpleelement.h b/sources/qetgraphicsitem/simpleelement.h index 0fd81bdf5..6329adb97 100644 --- a/sources/qetgraphicsitem/simpleelement.h +++ b/sources/qetgraphicsitem/simpleelement.h @@ -41,6 +41,7 @@ class SimpleElement : public CustomElement { public slots: void updateLabel(DiagramContext old_info, DiagramContext new_info); + void changeElementInfo(); private: CommentItem *m_comment_item; diff --git a/sources/qetgraphicsitem/slaveelement.cpp b/sources/qetgraphicsitem/slaveelement.cpp index c91879ef7..0324dda5e 100644 --- a/sources/qetgraphicsitem/slaveelement.cpp +++ b/sources/qetgraphicsitem/slaveelement.cpp @@ -134,10 +134,8 @@ void SlaveElement::updateLabel() { label = elmt -> elementInformations()["label"].toString(); XRefProperties xrp = elmt->diagram()->defaultXRefProperties(elmt->kindInformations()["type"].toString()); Xreflabel = xrp.slaveLabel(); - Xreflabel.replace("%f", QString::number(elmt->diagram()->folioIndex()+1)); - Xreflabel.replace("%F", elmt->diagram() -> border_and_titleblock.folio()); - Xreflabel.replace("%c", QString::number(elmt->diagram() -> convertPosition(elmt -> scenePos()).number())); - Xreflabel.replace("%l", elmt->diagram() -> convertPosition(elmt -> scenePos()).letter()); + Xreflabel = assignVariables(Xreflabel, elmt); + label = assignVariables(label, elmt); } // set the new label