Index: properties/xrefproperties.cpp =================================================================== --- properties/xrefproperties.cpp (Revision 5947) +++ properties/xrefproperties.cpp (Arbeitskopie) @@ -31,6 +31,7 @@ m_master_label = "%f-%l%c"; m_slave_label = "(%f-%l%c)"; m_offset = 0; + m_xref_pos = XRefProperties::enXrefPos::PosBottom; } /** @@ -51,6 +52,16 @@ settings.setValue(prefix + "master_label", master_label); QString slave_label = m_slave_label; settings.setValue(prefix + "slave_label", slave_label); + + + + if (m_xref_pos == XRefProperties::enXrefPos::PosTop) settings.setValue(prefix + "xrefpos", "top"); + else if (m_xref_pos == XRefProperties::enXrefPos::PosLeft) settings.setValue(prefix + "xrefpos", "left"); + else if (m_xref_pos == XRefProperties::enXrefPos::PosRight) settings.setValue(prefix + "xrefpos", "right"); + else if (m_xref_pos == XRefProperties::enXrefPos::PosTextAignment) settings.setValue(prefix + "xrefpos", "alignment"); + else settings.setValue(prefix + "xrefpos", "bottom"); + + foreach (QString key, m_prefix.keys()) { settings.setValue(prefix + key + "prefix", m_prefix.value(key)); } @@ -71,7 +82,13 @@ m_offset = settings.value(prefix + "offset", "0").toInt(); 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) { + QString xrefpos = settings.value(prefix + "xrefpos", "bottom").toString(); + if(xrefpos == "top") m_xref_pos = XRefProperties::enXrefPos::PosTop; + else if(xrefpos == "left") m_xref_pos = XRefProperties::enXrefPos::PosLeft; + else if(xrefpos == "right") m_xref_pos = XRefProperties::enXrefPos::PosRight; + else if(xrefpos == "alignment") m_xref_pos = XRefProperties::enXrefPos::PosTextAignment; + else m_xref_pos = XRefProperties::enXrefPos::PosBottom; + foreach (QString key, m_prefix_keys) { m_prefix.insert(key, settings.value(prefix + key + "prefix").toString()); } } @@ -87,7 +104,18 @@ xml_element.setAttribute("displayhas", display); QString snap = m_snap_to == Bottom? "bottom" : "label"; xml_element.setAttribute("snapto", snap); - int offset = m_offset; + + QString xrefpos; + + + if (m_xref_pos == XRefProperties::enXrefPos::PosTop) xrefpos = "top"; + if (m_xref_pos == XRefProperties::enXrefPos::PosLeft) xrefpos = "left"; + else if (m_xref_pos == XRefProperties::enXrefPos::PosRight) xrefpos = "right"; + else if (m_xref_pos == XRefProperties::enXrefPos::PosTextAignment) xrefpos = "alignment"; + else xrefpos = "bottom"; + + xml_element.setAttribute("xrefpos", xrefpos); + int offset = m_offset; xml_element.setAttribute("offset", QString::number(offset)); QString master_label = m_master_label; xml_element.setAttribute("master_label", master_label); @@ -109,6 +137,17 @@ display == "cross"? m_display = Cross : m_display = Contacts; QString snap = xml_element.attribute("snapto", "label"); snap == "bottom"? m_snap_to = Bottom : m_snap_to = Label; + + QString xrefpos = xml_element.attribute("xrefpos","Left"); + + if(xrefpos == "top") m_xref_pos = XRefProperties::enXrefPos::PosTop; + else if(xrefpos == "left") m_xref_pos = XRefProperties::enXrefPos::PosLeft; + else if(xrefpos == "right") m_xref_pos = XRefProperties::enXrefPos::PosRight; + else if(xrefpos == "alignment") m_xref_pos = XRefProperties::enXrefPos::PosTextAignment; + else m_xref_pos = XRefProperties::enXrefPos::PosBottom; + + + m_offset = xml_element.attribute("offset", "0").toInt(); m_master_label = xml_element.attribute("master_label", "%f-%l%c"); m_slave_label = xml_element.attribute("slave_label","(%f-%l%c)"); @@ -150,7 +189,8 @@ m_prefix == xrp.m_prefix && m_master_label == xrp.m_master_label && m_slave_label == xrp.m_slave_label && - m_offset == xrp.m_offset); + m_offset == xrp.m_offset && + m_xref_pos == xrp.m_xref_pos ); } bool XRefProperties::operator !=(const XRefProperties &xrp) const { Index: properties/xrefproperties.h =================================================================== --- properties/xrefproperties.h (Revision 5947) +++ properties/xrefproperties.h (Arbeitskopie) @@ -40,6 +40,15 @@ Label }; + enum enXrefPos { + PosLeft, + PosRight, + PosTop, + PosBottom, + PosTextAignment + }; + + void toSettings (QSettings &settings, const QString = QString()) const override; void fromSettings (const QSettings &settings, const QString = QString()) override; void toXml (QDomElement &xml_element) const override; @@ -59,7 +68,10 @@ 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);} + void setXrefPos(const enXrefPos xref) {m_xref_pos = xref;} + enXrefPos getXrefPos() const {return m_xref_pos;} + + 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;} @@ -75,6 +87,7 @@ bool m_show_power_ctc; DisplayHas m_display; SnapTo m_snap_to; + enXrefPos m_xref_pos; QHash m_prefix; QStringList m_prefix_keys; QString m_master_label; Index: qetgraphicsitem/dynamicelementtextitem.cpp =================================================================== --- qetgraphicsitem/dynamicelementtextitem.cpp (Revision 5947) +++ qetgraphicsitem/dynamicelementtextitem.cpp (Arbeitskopie) @@ -1289,9 +1289,49 @@ m_slave_Xref_item->setPlainText(xref_label); QRectF r = boundingRect(); - QPointF pos(r.center().x() - m_slave_Xref_item->boundingRect().width()/2, - r.bottom()); - m_slave_Xref_item->setPos(pos); + QPointF pos; + + + //QPointF pos(r.center().x() - m_slave_Xref_item->boundingRect().width()/2,r.top()); + if (xrp.getXrefPos() == XRefProperties::enXrefPos::PosBottom) + { + pos = QPointF(r.center().x() - m_slave_Xref_item->boundingRect().width()/2,r.bottom()); + } + else if (xrp.getXrefPos() == XRefProperties::enXrefPos::PosTop) + { + pos = QPointF(r.center().x() - m_slave_Xref_item->boundingRect().width()/2,r.top() - m_slave_Xref_item->boundingRect().height()); + } + else if (xrp.getXrefPos() == XRefProperties::enXrefPos::PosLeft) // + { + pos = QPointF(r.left() - m_slave_Xref_item->boundingRect().width(),r.center().y() - m_slave_Xref_item->boundingRect().height()/2); + } + else if (xrp.getXrefPos() == XRefProperties::enXrefPos::PosRight) // + { + pos = QPointF(r.right() + m_slave_Xref_item->boundingRect().width(),r.center().y() - m_slave_Xref_item->boundingRect().height()/2); + } + else if (xrp.getXrefPos() == XRefProperties::enXrefPos::PosTextAignment) // + { + if(this->alignment() &Qt::AlignBottom) + { + pos = QPointF(r.left() - m_slave_Xref_item->boundingRect().width(),r.center().y() - m_slave_Xref_item->boundingRect().height()/2); + } + else if(this->alignment() &Qt::AlignTop) + { + + } + else if(this->alignment() &Qt::AlignLeft) + { + + } + else if(this->alignment() &Qt::AlignRight) + { + + } + } + + + m_slave_Xref_item->setPos(pos); + return; } } @@ -1327,7 +1367,8 @@ if (update_alignment) { prepareAlignment(); } - + + DiagramTextItem::setPlainText(text); //User define a text width @@ -1353,10 +1394,24 @@ else if (m_slave_Xref_item) { QRectF r = boundingRect(); - QPointF pos(r.center().x() - m_slave_Xref_item->boundingRect().width()/2, - r.bottom()); - m_slave_Xref_item->setPos(pos); - } + QPointF pos; + + if(this->alignment() &Qt::AlignBottom) + { + pos = QPointF(r.center().x() - m_slave_Xref_item->boundingRect().width()/2,r.bottom()); + } + else if(this->alignment() &Qt::AlignTop) + { + pos = QPointF(r.center().x() - m_slave_Xref_item->boundingRect().width()/2,r.top()-m_slave_Xref_item->boundingRect().height()); + } + else + { + pos = QPointF(r.left() - m_slave_Xref_item->boundingRect().width(),r.center().y() - m_slave_Xref_item->boundingRect().height()/2); + } + m_slave_Xref_item->setPos(pos); + + + } } void DynamicElementTextItem::setTextWidth(qreal width) Index: ui/xrefpropertieswidget.cpp =================================================================== --- ui/xrefpropertieswidget.cpp (Revision 5947) +++ ui/xrefpropertieswidget.cpp (Arbeitskopie) @@ -100,6 +100,12 @@ ui -> m_snap_to_cb -> addItem(tr("En bas de page"), "bottom"); ui -> m_snap_to_cb -> addItem(tr("Sous le label de l'élément"), "label"); + ui -> m_xrefpos_cb -> addItem(tr("Top"),"top"); + ui -> m_xrefpos_cb -> addItem(tr("Bottom"),"bottom"); + ui -> m_xrefpos_cb -> addItem(tr("Left"),"left"); + ui -> m_xrefpos_cb -> addItem(tr("Rigth"),"right"); + ui -> m_xrefpos_cb -> addItem(tr("Text alignment"),"alignment"); + m_previous_type_index = ui -> m_type_cb -> currentIndex(); } @@ -117,7 +123,15 @@ if (ui->m_snap_to_cb->itemData(ui->m_snap_to_cb->currentIndex()).toString() == "bottom") xrp.setSnapTo(XRefProperties::Bottom); else xrp.setSnapTo(XRefProperties::Label); - xrp.setShowPowerContac(ui->m_show_power_cb->isChecked()); + + if(ui->m_xrefpos_cb->itemData(ui->m_xrefpos_cb->currentIndex()).toString() == "bottom") xrp.setXrefPos(XRefProperties::enXrefPos::PosBottom); + else if(ui->m_xrefpos_cb->itemData(ui->m_xrefpos_cb->currentIndex()).toString() == "top") xrp.setXrefPos(XRefProperties::enXrefPos::PosTop); + else if(ui->m_xrefpos_cb->itemData(ui->m_xrefpos_cb->currentIndex()).toString() == "left") xrp.setXrefPos(XRefProperties::enXrefPos::PosLeft); + else if(ui->m_xrefpos_cb->itemData(ui->m_xrefpos_cb->currentIndex()).toString() == "right") xrp.setXrefPos(XRefProperties::enXrefPos::PosRight); + else if(ui->m_xrefpos_cb->itemData(ui->m_xrefpos_cb->currentIndex()).toString() == "alignment") xrp.setXrefPos(XRefProperties::enXrefPos::PosTextAignment); + + + xrp.setShowPowerContac(ui->m_show_power_cb->isChecked()); 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()); @@ -161,7 +175,14 @@ ui->m_snap_to_cb->setCurrentIndex(ui->m_snap_to_cb->findData("label")); ui->m_offset_sb->setEnabled(false); } - ui->m_show_power_cb->setChecked(xrp.showPowerContact()); + + if(xrp.getXrefPos() == XRefProperties::enXrefPos::PosTop) ui->m_xrefpos_cb->setCurrentIndex(ui->m_xrefpos_cb->findData("top")); + else if(xrp.getXrefPos() == XRefProperties::enXrefPos::PosLeft) ui->m_xrefpos_cb->setCurrentIndex(ui->m_xrefpos_cb->findData("left")); + else if(xrp.getXrefPos() == XRefProperties::enXrefPos::PosRight) ui->m_xrefpos_cb->setCurrentIndex(ui->m_xrefpos_cb->findData("right")); + else if(xrp.getXrefPos() == XRefProperties::enXrefPos::PosTextAignment) ui->m_xrefpos_cb->setCurrentIndex(ui->m_xrefpos_cb->findData("alignment")); + else if(xrp.getXrefPos() == XRefProperties::enXrefPos::PosBottom) ui->m_xrefpos_cb->setCurrentIndex(ui->m_xrefpos_cb->findData("bottom")); + + ui->m_show_power_cb->setChecked(xrp.showPowerContact()); ui->m_power_prefix_le-> setText(xrp.prefix("power")); ui->m_delay_prefix_le-> setText(xrp.prefix("delay")); ui->m_switch_prefix_le->setText(xrp.prefix("switch")); Index: ui/xrefpropertieswidget.ui =================================================================== --- ui/xrefpropertieswidget.ui (Revision 5947) +++ ui/xrefpropertieswidget.ui (Arbeitskopie) @@ -2,6 +2,14 @@ XRefPropertiesWidget + + + 0 + 0 + 376 + 608 + + Form @@ -22,6 +30,12 @@ + + + 0 + 0 + + Représentation: @@ -83,6 +97,20 @@ + + + + + XRef slave position + + + + + + + + +