diff --git a/sources/properties/xrefproperties.cpp b/sources/properties/xrefproperties.cpp index 4630404f7..5953d747a 100644 --- a/sources/properties/xrefproperties.cpp +++ b/sources/properties/xrefproperties.cpp @@ -27,8 +27,9 @@ XRefProperties::XRefProperties() m_show_power_ctc = true; m_display = Cross; m_snap_to = Bottom; - m_view_mode = Index; m_prefix_keys << "power" << "delay" << "switch"; + m_master_label = "%f-%l%c"; + m_slave_label = "(%f-%l%c)"; } /** @@ -41,10 +42,12 @@ void XRefProperties::toSettings(QSettings &settings, const QString prefix) const settings.setValue(prefix + "showpowerctc", m_show_power_ctc); QString display = m_display == Cross? "cross" : "contacts"; settings.setValue(prefix + "displayhas", display); - QString view_mode = m_view_mode == Index? "index" : "foliolabel"; - settings.setValue(prefix + "viewmode", view_mode); QString snap = m_snap_to == Bottom? "bottom" : "label"; settings.setValue(prefix + "snapto", snap); + QString master_label = m_master_label; + settings.setValue(prefix + "master_label", master_label); + QString slave_label = m_slave_label; + settings.setValue(prefix + "slave_label", slave_label); foreach (QString key, m_prefix.keys()) { settings.setValue(prefix + key + "prefix", m_prefix.value(key)); } @@ -60,10 +63,10 @@ void XRefProperties::fromSettings(const QSettings &settings, const QString prefi m_show_power_ctc = settings.value(prefix + "showpowerctc", false).toBool(); QString display = settings.value(prefix + "displayhas", "cross").toString(); display == "cross"? m_display = Cross : m_display = Contacts; - QString view_mode = settings.value(prefix + "viewmode", "index").toString(); - view_mode == "index"? m_view_mode = Index : m_view_mode = FolioLabel; QString snap = settings.value(prefix + "snapto", "label").toString(); snap == "bottom"? m_snap_to = Bottom : m_snap_to = Label; + m_master_label = settings.value(prefix + "master_label", "%f-%l%c").toString(); + m_slave_label = settings.value(prefix + "slave_label", "(%f-%l%c)").toString(); foreach (QString key, m_prefix_keys) { m_prefix.insert(key, settings.value(prefix + key + "prefix").toString()); } @@ -78,10 +81,12 @@ void XRefProperties::toXml(QDomElement &xml_element) const { xml_element.setAttribute("showpowerctc", m_show_power_ctc? "true" : "false"); QString display = m_display == Cross? "cross" : "contacts"; xml_element.setAttribute("displayhas", display); - QString view_mode = m_view_mode == Index? "index" : "foliolabel"; - xml_element.setAttribute("viewmode", view_mode); QString snap = m_snap_to == Bottom? "bottom" : "label"; xml_element.setAttribute("snapto", snap); + QString master_label = m_master_label; + xml_element.setAttribute("master_label", master_label); + QString slave_label = m_slave_label; + xml_element.setAttribute("slave_label", slave_label); foreach (QString key, m_prefix.keys()) { xml_element.setAttribute(key + "prefix", m_prefix.value(key)); } @@ -96,10 +101,10 @@ void XRefProperties::fromXml(const QDomElement &xml_element) { m_show_power_ctc = xml_element.attribute("showpowerctc") == "true"; QString display = xml_element.attribute("displayhas", "cross"); display == "cross"? m_display = Cross : m_display = Contacts; - QString view_mode = xml_element.attribute("viewmode", "index"); - view_mode == "index"? m_view_mode = Index : m_view_mode = FolioLabel; QString snap = xml_element.attribute("snapto", "label"); snap == "bottom"? m_snap_to = Bottom : m_snap_to = Label; + m_master_label = xml_element.attribute("master_label", "%f-%l%c"); + m_slave_label = xml_element.attribute("slave_label","(%f-%l%c)"); foreach (QString key, m_prefix_keys) { m_prefix.insert(key, xml_element.attribute(key + "prefix")); } @@ -134,9 +139,10 @@ QHash XRefProperties::defaultProperties() bool XRefProperties::operator ==(const XRefProperties &xrp) const{ return (m_show_power_ctc == xrp.m_show_power_ctc && m_display == xrp.m_display && - m_view_mode == xrp.m_view_mode && m_snap_to == xrp.m_snap_to && - m_prefix == xrp.m_prefix); + m_prefix == xrp.m_prefix && + m_master_label == xrp.m_master_label && + m_slave_label == xrp.m_slave_label); } bool XRefProperties::operator !=(const XRefProperties &xrp) const { diff --git a/sources/properties/xrefproperties.h b/sources/properties/xrefproperties.h index 51a3b7e05..7c7667964 100644 --- a/sources/properties/xrefproperties.h +++ b/sources/properties/xrefproperties.h @@ -35,11 +35,6 @@ class XRefProperties : public PropertiesInterface Contacts }; - enum ViewMode { - Index, - FolioLabel - }; - enum SnapTo { Bottom, Label @@ -61,22 +56,26 @@ class XRefProperties : public PropertiesInterface void setDisplayHas (const DisplayHas dh) {m_display = dh;} DisplayHas displayHas () const {return m_display;} - void setViewMode (const ViewMode vm) {m_view_mode = vm;} - ViewMode viewMode () const {return m_view_mode;} - void setSnapTo (const SnapTo st) {m_snap_to = st;} SnapTo snapTo () const {return m_snap_to;} void setPrefix (const QString &key, const QString &value) {m_prefix.insert(key, value);} QString prefix (const QString &key) const {return m_prefix.value(key);} + void setMasterLabel (const QString master) {m_master_label = master;} + QString masterLabel () const {return m_master_label;} + + void setSlaveLabel(const QString slave) {m_slave_label = slave;} + QString slaveLabel () const {return m_slave_label;} + private: bool m_show_power_ctc; DisplayHas m_display; - ViewMode m_view_mode; SnapTo m_snap_to; QHash m_prefix; QStringList m_prefix_keys; + QString m_master_label; + QString m_slave_label; }; #endif // XREFPROPERTIES_H diff --git a/sources/qetgraphicsitem/crossrefitem.cpp b/sources/qetgraphicsitem/crossrefitem.cpp index 204ceaa21..a2a4ac2e7 100644 --- a/sources/qetgraphicsitem/crossrefitem.cpp +++ b/sources/qetgraphicsitem/crossrefitem.cpp @@ -91,16 +91,13 @@ QPainterPath CrossRefItem::shape() const{ QString CrossRefItem::elementPositionText(const Element *elmt, const bool &add_prefix) const{ QString txt; - XRefProperties::ViewMode vw = m_properties.viewMode(); - if (vw == XRefProperties::Index) - { - txt += QString::number(elmt->diagram()->folioIndex() + 1); - } - else if (vw == XRefProperties::FolioLabel){ - txt += elmt->diagram()->border_and_titleblock.folio(); - } - txt += "-"; - txt += elmt->diagram()->convertPosition(elmt -> scenePos()).toString(); + XRefProperties xrp = m_element->diagram()->defaultXRefProperties(m_element->kindInformations()["type"].toString()); + txt = xrp.masterLabel(); + txt.replace("%f", QString::number(elmt->diagram()->folioIndex()+1)); + txt.replace("%F", elmt->diagram() -> border_and_titleblock.folio()); + txt.replace("%c", QString::number(elmt->diagram() -> convertPosition(elmt -> scenePos()).number())); + txt.replace("%l", elmt->diagram() -> convertPosition(elmt -> scenePos()).letter()); + if (add_prefix) { if (elmt->kindInformations()["type"].toString() == "power") txt.prepend(m_properties.prefix("power")); else if (elmt->kindInformations()["type"].toString().contains("delay")) txt.prepend(m_properties.prefix("delay")); diff --git a/sources/qetgraphicsitem/crossrefitem.h b/sources/qetgraphicsitem/crossrefitem.h index 181b7f6f5..d1737ff38 100644 --- a/sources/qetgraphicsitem/crossrefitem.h +++ b/sources/qetgraphicsitem/crossrefitem.h @@ -62,6 +62,8 @@ class CrossRefItem : public QGraphicsObject virtual QPainterPath shape () const; QString elementPositionText (const Element *elmt, const bool &add_prefix = false) const; void allElementsPositionText (QString &no_str, QString &nc_str,const bool &add_prefix = false) const; + void setTextLabel(QString label); + signals: diff --git a/sources/qetgraphicsitem/slaveelement.cpp b/sources/qetgraphicsitem/slaveelement.cpp index e2c0383cf..c91879ef7 100644 --- a/sources/qetgraphicsitem/slaveelement.cpp +++ b/sources/qetgraphicsitem/slaveelement.cpp @@ -122,6 +122,7 @@ void SlaveElement::unlinkElement(Element *elmt) * and add a qgraphicstextitem for show the position of the master */ void SlaveElement::updateLabel() { + QString label("_"); QString Xreflabel; bool no_editable = false; @@ -131,19 +132,12 @@ void SlaveElement::updateLabel() { no_editable = true; Element *elmt = linkedElements().first(); label = elmt -> elementInformations()["label"].toString(); - XRefProperties m_properties = elmt->diagram()->defaultXRefProperties(elmt->kindInformations()["type"].toString()); - Xreflabel = "("; - XRefProperties::ViewMode vw = m_properties.viewMode(); - if (vw == XRefProperties::Index) - { - Xreflabel += QString::number(elmt->diagram()->folioIndex()+1); - } - else if (vw == XRefProperties::FolioLabel){ - Xreflabel += elmt->diagram()->border_and_titleblock.folio(); - } - Xreflabel += "-"; - Xreflabel += elmt->diagram() -> convertPosition(elmt -> scenePos()).toString(); - Xreflabel += ")"; + 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()); } // set the new label diff --git a/sources/qetgraphicsitem/slaveelement.h b/sources/qetgraphicsitem/slaveelement.h index 836359904..1186e91e2 100644 --- a/sources/qetgraphicsitem/slaveelement.h +++ b/sources/qetgraphicsitem/slaveelement.h @@ -38,8 +38,6 @@ class SlaveElement : public CustomElement private: QGraphicsTextItem *Xref_item; - //XRefProperties m_properties; - }; #endif // SLAVEELEMENT_H diff --git a/sources/ui/xrefpropertieswidget.cpp b/sources/ui/xrefpropertieswidget.cpp index 45a655366..d139d5af0 100644 --- a/sources/ui/xrefpropertieswidget.cpp +++ b/sources/ui/xrefpropertieswidget.cpp @@ -110,8 +110,6 @@ void XRefPropertiesWidget::saveProperties(int index) { if (ui->m_display_has_cross_rb->isChecked()) xrp.setDisplayHas(XRefProperties::Cross); else if (ui->m_display_has_contacts_rb->isChecked()) xrp.setDisplayHas(XRefProperties::Contacts); - if (ui->m_display_folio_index_rb->isChecked()) xrp.setViewMode (XRefProperties::Index); - else if (ui->m_display_folio_label_rb->isChecked()) xrp.setViewMode (XRefProperties::FolioLabel); if (ui->m_snap_to_cb->itemData(ui->m_snap_to_cb->currentIndex()).toString() == "bottom") xrp.setSnapTo(XRefProperties::Bottom); else xrp.setSnapTo(XRefProperties::Label); @@ -119,6 +117,8 @@ void XRefPropertiesWidget::saveProperties(int index) { xrp.setPrefix("power", ui->m_power_prefix_le->text()); xrp.setPrefix("delay", ui->m_delay_prefix_le->text()); xrp.setPrefix("switch", ui->m_switch_prefix_le->text()); + xrp.setMasterLabel(ui->m_master_le->text()); + xrp.setSlaveLabel(ui->m_slave_le->text()); m_properties.insert(type, xrp); } @@ -139,13 +139,11 @@ void XRefPropertiesWidget::updateDisplay() { ui->m_display_has_contacts_rb->setChecked(true); } - XRefProperties::ViewMode vw = xrp.viewMode(); - if (vw == XRefProperties::Index) { - ui->m_display_folio_index_rb->setChecked(true); - } - else if (vw == XRefProperties::FolioLabel) { - ui->m_display_folio_label_rb->setChecked(true); - } + QString master = xrp.masterLabel(); + ui->m_master_le->setText(master); + + QString slave = xrp.slaveLabel(); + ui->m_slave_le->setText(slave); if (xrp.snapTo() == XRefProperties::Bottom) ui->m_snap_to_cb->setCurrentIndex(ui->m_snap_to_cb->findData("bottom")); diff --git a/sources/ui/xrefpropertieswidget.ui b/sources/ui/xrefpropertieswidget.ui index 4730c1565..5ef858e4b 100644 --- a/sources/ui/xrefpropertieswidget.ui +++ b/sources/ui/xrefpropertieswidget.ui @@ -7,7 +7,7 @@ 0 0 484 - 475 + 649 @@ -75,26 +75,84 @@ - Mode d'affichage + Cross Reference Labels - + - - - Label de Folio - - - true - - + + + + + + 0 + 0 + + + + + 48 + 0 + + + + Master + + + + + + + + + + %f-%l%c + + + + - + + + + + + 0 + 0 + + + + + 48 + 0 + + + + Slave + + + false + + + + + + + (%f-%l%c) + + + + + + + - Index de Folio - - - true + You can use variables for the displayed label of XRef: + The variables are: + %f: Folio Index + %F: Folio label + %l: Line + %c: Colunm