diff --git a/sources/borderproperties.cpp b/sources/borderproperties.cpp index eaa7b21c6..a65071fc2 100644 --- a/sources/borderproperties.cpp +++ b/sources/borderproperties.cpp @@ -90,12 +90,12 @@ bool BorderProperties::operator!=(const BorderProperties &bp) { \~French Element XML auquel seront ajoutes des attributs */ void BorderProperties::toXmlPriv(QDomElement& e) const { - e.appendChild(QETXML::createXmlProperty("cols", columns_count)); - e.appendChild(QETXML::createXmlProperty("colsize", columns_width)); - e.appendChild(QETXML::createXmlProperty("rows", rows_count)); - e.appendChild(QETXML::createXmlProperty("rowsize", rows_height)); - e.appendChild(QETXML::createXmlProperty("displayrows", display_rows)); - e.appendChild(QETXML::createXmlProperty("displaycols", display_columns)); + e.setAttribute("cols", columns_count); + e.setAttribute("colsize", QString("%1").arg(columns_width)); + e.setAttribute("rows", rows_count); + e.setAttribute("rowsize", QString("%1").arg(rows_height)); + e.setAttribute("displaycols", display_columns ? "true" : "false"); + e.setAttribute("displayrows", display_rows ? "true" : "false"); } /*!RETURNS True diff --git a/sources/conductorproperties.cpp b/sources/conductorproperties.cpp index 5aebf2f30..0af11f042 100644 --- a/sources/conductorproperties.cpp +++ b/sources/conductorproperties.cpp @@ -215,12 +215,10 @@ void SingleLineProperties::drawPen(QPainter *painter, */ void SingleLineProperties::toXmlPriv(QDomElement& e) const { - e.appendChild(QETXML::createXmlProperty("ground", hasGround)); - e.appendChild(QETXML::createXmlProperty("neutral", hasNeutral)); - e.appendChild(QETXML::createXmlProperty("phase", phases)); - - if (isPen()) - e.appendChild(QETXML::createXmlProperty("pen", true)); + e.setAttribute("ground", hasGround ? "true" : "false"); + e.setAttribute("neutral", hasNeutral ? "true" : "false"); + e.setAttribute("phase", phases); + if (isPen()) e.setAttribute("pen", "true"); } /** @@ -284,42 +282,44 @@ ConductorProperties::~ConductorProperties() void ConductorProperties::toXmlPriv(QDomElement& e) const { - e.appendChild(QETXML::createXmlProperty("type", typeToString(type))); - e.appendChild(QETXML::createXmlProperty("color", color)); + e.setAttribute("type", typeToString(type)); - e.appendChild(QETXML::createXmlProperty("bicolor", m_bicolor)); - e.appendChild(QETXML::createXmlProperty("color2", m_color_2)); - e.appendChild(QETXML::createXmlProperty("dash-size", m_dash_size)); + if (color != QColor(Qt::black)) + e.setAttribute("color", color.name()); - if (type == Single) + e.setAttribute("bicolor", m_bicolor? "true" : "false"); + e.setAttribute("color2", m_color_2.name()); + e.setAttribute("dash-size", QString::number(m_dash_size)); + + if (type == Single) { - QDomDocument doc; - e.appendChild(singleLineProperties.toXml(doc)); + QDomDocument doc = e.ownerDocument(); + singleLineProperties.toXml(doc); } - e.appendChild(QETXML::createXmlProperty("num", text)); - e.appendChild(QETXML::createXmlProperty("text_color", text_color)); - e.appendChild(QETXML::createXmlProperty("formula", m_formula)); - e.appendChild(QETXML::createXmlProperty("function", m_function)); - e.appendChild(QETXML::createXmlProperty("tension_protocol", m_tension_protocol)); - e.appendChild(QETXML::createXmlProperty("conductor_color", m_wire_color)); - e.appendChild(QETXML::createXmlProperty("conductor_section", m_wire_section)); - e.appendChild(QETXML::createXmlProperty("numsize", text_size)); - e.appendChild(QETXML::createXmlProperty("condsize", cond_size)); - e.appendChild(QETXML::createXmlProperty("displaytext", m_show_text)); - e.appendChild(QETXML::createXmlProperty("onetextperfolio", m_one_text_per_folio)); - e.appendChild(QETXML::createXmlProperty("vertirotatetext", verti_rotate_text)); - e.appendChild(QETXML::createXmlProperty("horizrotatetext", horiz_rotate_text)); -// TODO: implement -//e.setAttribute("cable", m_cable); -// e.setAttribute("bus", m_bus); - QMetaEnum me = QMetaEnum::fromType(); - e.appendChild(QETXML::createXmlProperty("horizontal-alignment", me.valueToKey(m_horizontal_alignment))); - e.appendChild(QETXML::createXmlProperty("vertical-alignment", me.valueToKey(m_vertical_alignment))); + e.setAttribute("num", text); + e.setAttribute("text_color", text_color.name()); + e.setAttribute("formula", m_formula); + e.setAttribute("cable", m_cable); + e.setAttribute("bus", m_bus); + e.setAttribute("function", m_function); + e.setAttribute("tension_protocol", m_tension_protocol); + e.setAttribute("conductor_color", m_wire_color); + e.setAttribute("conductor_section", m_wire_section); + e.setAttribute("numsize", QString::number(text_size)); + e.setAttribute("condsize", QString::number(cond_size)); + e.setAttribute("displaytext", m_show_text); + e.setAttribute("onetextperfolio", m_one_text_per_folio); + e.setAttribute("vertirotatetext", QString::number(verti_rotate_text)); + e.setAttribute("horizrotatetext", QString::number(horiz_rotate_text)); - QString conductor_style = writeStyle(); - if (!conductor_style.isEmpty()) - e.appendChild(QETXML::createXmlProperty("style", conductor_style)); + QMetaEnum me = QMetaEnum::fromType(); + e.setAttribute("horizontal-alignment", me.valueToKey(m_horizontal_alignment)); + e.setAttribute("vertical-alignment", me.valueToKey(m_vertical_alignment)); + + QString conductor_style = writeStyle(); + if (!conductor_style.isEmpty()) + e.setAttribute("style", conductor_style); } diff --git a/sources/editor/graphicspart/partarc.cpp b/sources/editor/graphicspart/partarc.cpp index 719203844..f51e8edb2 100644 --- a/sources/editor/graphicspart/partarc.cpp +++ b/sources/editor/graphicspart/partarc.cpp @@ -103,22 +103,18 @@ void PartArc::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, @param xml_document : Xml document to use for create the xml element. @return : an xml element that describe this arc */ -void PartArc::toXmlPriv(QDomElement& e) const +void PartArc::toXmlPriv(QDomElement& xml_element) const { - e.setTagName("arc"); - QPointF top_left(sceneTopLeft()); - - e.appendChild(QETXML::createXmlProperty("x", top_left.x())); - e.appendChild(QETXML::createXmlProperty("y", top_left.y())); - e.appendChild(QETXML::createXmlProperty("width", rect().width())); - e.appendChild(QETXML::createXmlProperty("height", rect().height())); - - //to maintain compatibility with the previous version, we write the angle in degrees. - e.appendChild(QETXML::createXmlProperty("start", m_start_angle / 16)); - e.appendChild(QETXML::createXmlProperty("angle", m_span_angle / 16)); - - - stylesToXml(e); + xml_element.setTagName("arc"); + QPointF top_left(sceneTopLeft()); + xml_element.setAttribute("x", QString("%1").arg(top_left.x())); + xml_element.setAttribute("y", QString("%1").arg(top_left.y())); + xml_element.setAttribute("width", QString("%1").arg(rect().width())); + xml_element.setAttribute("height", QString("%1").arg(rect().height())); + //to maintain compatibility with the previous version, we write the angle in degrees. + xml_element.setAttribute("start", QString("%1").arg(m_start_angle / 16)); + xml_element.setAttribute("angle", QString("%1").arg(m_span_angle / 16)); + stylesToXml(xml_element); } /** diff --git a/sources/editor/graphicspart/partarc.h b/sources/editor/graphicspart/partarc.h index 9da63a99f..65c926335 100644 --- a/sources/editor/graphicspart/partarc.h +++ b/sources/editor/graphicspart/partarc.h @@ -51,7 +51,7 @@ class PartArc : public AbstractPartEllipse //Name and XML QString name() const override { return(QObject::tr("arc", "element part name")); } QString xmlName() const override { return(QString("arc")); } - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&xml_element) const override; bool fromXmlPriv (const QDomElement &) override; static bool valideXml(QDomElement& element); void toSettings(QSettings &,const QString & = QString()) const override {/*TODO: implement*/} diff --git a/sources/editor/graphicspart/partdynamictextfield.cpp b/sources/editor/graphicspart/partdynamictextfield.cpp index 57f8c6ad8..d3b292865 100644 --- a/sources/editor/graphicspart/partdynamictextfield.cpp +++ b/sources/editor/graphicspart/partdynamictextfield.cpp @@ -96,65 +96,60 @@ void PartDynamicTextField::handleUserTransformation( @param dom_doc @return */ -void PartDynamicTextField::toXmlPriv(QDomElement& e) const +void PartDynamicTextField::toXmlPriv(QDomElement& root_element) const { - e.appendChild(QETXML::createXmlProperty("x", pos().x())); - e.appendChild(QETXML::createXmlProperty("y", pos().y())); - e.appendChild(QETXML::createXmlProperty("z", zValue())); - e.appendChild(QETXML::createXmlProperty("rotation", QET::correctAngle(rotation()))); + root_element.setAttribute("x", QString::number(pos().x())); + root_element.setAttribute("y", QString::number(pos().y())); + root_element.setAttribute("z", QString::number(zValue())); + root_element.setAttribute("rotation", QString::number(QET::correctAngle(rotation()))); + root_element.setAttribute("font", font().toString()); + root_element.setAttribute("uuid", m_uuid.toString()); + root_element.setAttribute("frame", m_frame? "true" : "false"); + root_element.setAttribute("text_width", QString::number(m_text_width)); - e.appendChild(QETXML::createXmlProperty("font", font().toString())); - e.appendChild(QETXML::createXmlProperty("uuid", m_uuid)); - e.appendChild(QETXML::createXmlProperty("frame", m_frame)); - e.appendChild(QETXML::createXmlProperty("text_width", m_text_width)); + QMetaEnum me = DynamicElementTextItem::textFromMetaEnum(); + root_element.setAttribute("text_from", me.valueToKey(m_text_from)); - QMetaEnum me = DynamicElementTextItem::textFromMetaEnum(); - e.appendChild(QETXML::createXmlProperty("text_from", me.valueToKey(m_text_from))); + me = QMetaEnum::fromType(); + if(this -> alignment() &Qt::AlignRight) + root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignRight)); + else if(this -> alignment() &Qt::AlignLeft) + root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignLeft)); + else if(this -> alignment() &Qt::AlignHCenter) + root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignHCenter)); - me = QMetaEnum::fromType(); - if(this -> alignment() &Qt::AlignRight) - e.appendChild(QETXML::createXmlProperty("Halignment", me.valueToKey(Qt::AlignRight))); - else if(this -> alignment() &Qt::AlignLeft) - e.appendChild(QETXML::createXmlProperty("Halignment", me.valueToKey(Qt::AlignLeft))); - else if(this -> alignment() &Qt::AlignHCenter) - e.appendChild(QETXML::createXmlProperty("Halignment", me.valueToKey(Qt::AlignHCenter))); + if(this -> alignment() &Qt::AlignBottom) + root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignBottom)); + else if(this -> alignment() & Qt::AlignTop) + root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignTop)); + else if(this -> alignment() &Qt::AlignVCenter) + root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignVCenter)); - if(this -> alignment() &Qt::AlignBottom) - e.appendChild(QETXML::createXmlProperty("Valignment", me.valueToKey(Qt::AlignBottom))); - else if(this -> alignment() & Qt::AlignTop) - e.appendChild(QETXML::createXmlProperty("Valignment", me.valueToKey(Qt::AlignTop))); - else if(this -> alignment() &Qt::AlignVCenter) - e.appendChild(QETXML::createXmlProperty("Valignment", me.valueToKey(Qt::AlignVCenter))); + QDomElement dom_text = root_element.ownerDocument().createElement("text"); + dom_text.appendChild(root_element.ownerDocument().createTextNode(toPlainText())); + root_element.appendChild(dom_text); - QDomDocument dom_doc; - QDomElement dom_text = dom_doc.createElement("text"); - dom_text.appendChild(dom_doc.createTextNode(toPlainText())); - e.appendChild(dom_text); + //Info name + if(!m_info_name.isEmpty()) { + QDomElement dom_info_name = root_element.ownerDocument().createElement("info_name"); + dom_info_name.appendChild(root_element.ownerDocument().createTextNode(m_info_name)); + root_element.appendChild(dom_info_name); + } - //Info name - // TODO: move it into a property - if(!m_info_name.isEmpty()) { - QDomElement dom_info_name = dom_doc.createElement("info_name"); - dom_info_name.appendChild(dom_doc.createTextNode(m_info_name)); - e.appendChild(dom_info_name); - } + //Composite text + if(!m_composite_text.isEmpty()) { + QDomElement dom_comp_text = root_element.ownerDocument().createElement("composite_text"); + dom_comp_text.appendChild(root_element.ownerDocument().createTextNode(m_composite_text)); + root_element.appendChild(dom_comp_text); + } - //Composite text - // TODO: move it into a property - if(!m_composite_text.isEmpty()) { - QDomElement dom_comp_text = dom_doc.createElement("composite_text"); - dom_comp_text.appendChild(dom_doc.createTextNode(m_composite_text)); - e.appendChild(dom_comp_text); - } - - //Color - // TODO: move it into a property - if(color() != QColor(Qt::black)) { - QDomElement dom_color = dom_doc.createElement("color"); - dom_color.appendChild(dom_doc.createTextNode(color().name())); - e.appendChild(dom_color); - } + //Color + if(color() != QColor(Qt::black)) { + QDomElement dom_color = root_element.ownerDocument().createElement("color"); + dom_color.appendChild(root_element.ownerDocument().createTextNode(color().name())); + root_element.appendChild(dom_color); + } } /** diff --git a/sources/editor/graphicspart/partdynamictextfield.h b/sources/editor/graphicspart/partdynamictextfield.h index 5563ff455..99a0d67f6 100644 --- a/sources/editor/graphicspart/partdynamictextfield.h +++ b/sources/editor/graphicspart/partdynamictextfield.h @@ -75,7 +75,7 @@ class PartDynamicTextField : public QGraphicsTextItem, public CustomElementPart void startUserTransformation(const QRectF &initial_selection_rect) override; void handleUserTransformation(const QRectF &initial_selection_rect, const QRectF &new_selection_rect) override; - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&root_element) const override; bool fromXmlPriv(const QDomElement &dom_elmt) override; void fromTextFieldXml(const QDomElement &dom_element); static bool valideXml(QDomElement& dom_elmt); diff --git a/sources/editor/graphicspart/partellipse.cpp b/sources/editor/graphicspart/partellipse.cpp index c34c9f036..eb6d6a24b 100644 --- a/sources/editor/graphicspart/partellipse.cpp +++ b/sources/editor/graphicspart/partellipse.cpp @@ -85,25 +85,25 @@ void PartEllipse::paint(QPainter *painter, const QStyleOptionGraphicsItem *optio Export this ellipse in xml @return : an xml element that describe this ellipse */ -void PartEllipse::toXmlPriv(QDomElement& e) const +void PartEllipse::toXmlPriv(QDomElement& xml_element) const { - if (qFuzzyCompare(rect().width(), rect().height())) - { - e.setTagName("circle"); - e.appendChild(QETXML::createXmlProperty("diameter", rect().width())); - } - else - { - e.setTagName("ellipse"); - e.appendChild(QETXML::createXmlProperty("width", rect().width())); - e.appendChild(QETXML::createXmlProperty("height", rect().height())); - } + if (qFuzzyCompare(rect().width(), rect().height())) + { + xml_element.setTagName("circle"); + xml_element.setAttribute("diameter", QString("%1").arg(rect().width())); + } + else + { + xml_element.setTagName("ellipse"); + xml_element.setAttribute("width", QString("%1").arg(rect().width())); + xml_element.setAttribute("height", QString("%1").arg(rect().height())); + } - QPointF top_left(sceneTopLeft()); - e.appendChild(QETXML::createXmlProperty("x", top_left.x())); - e.appendChild(QETXML::createXmlProperty("y", top_left.y())); + QPointF top_left(sceneTopLeft()); + xml_element.setAttribute("x", QString("%1").arg(top_left.x())); + xml_element.setAttribute("y", QString("%1").arg(top_left.y())); - stylesToXml(e); + stylesToXml(xml_element); } /** diff --git a/sources/editor/graphicspart/partellipse.h b/sources/editor/graphicspart/partellipse.h index 8e99b7005..cd8ccc377 100644 --- a/sources/editor/graphicspart/partellipse.h +++ b/sources/editor/graphicspart/partellipse.h @@ -52,7 +52,7 @@ class PartEllipse : public AbstractPartEllipse //Name and XML QString name() const override { return(QObject::tr("ellipse", "element part name")); } QString xmlName() const override { return(QString("ellipse")); } - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&xml_element) const override; bool fromXmlPriv(const QDomElement &) override; static bool valideXml(QDomElement& element); void toSettings(QSettings &,const QString & = QString()) const override {/*TODO: implement*/} diff --git a/sources/editor/graphicspart/partline.cpp b/sources/editor/graphicspart/partline.cpp index 108071e3b..1e80834da 100644 --- a/sources/editor/graphicspart/partline.cpp +++ b/sources/editor/graphicspart/partline.cpp @@ -109,22 +109,21 @@ void PartLine::paint(QPainter *painter, const QStyleOptionGraphicsItem *options, @param xml_document : Xml document to use for create the xml element. @return an xml element that describe this line */ -void PartLine::toXmlPriv(QDomElement& e) const +void PartLine::toXmlPriv(QDomElement& xml_element) const { - QPointF p1(sceneP1()); - QPointF p2(sceneP2()); + QPointF p1(sceneP1()); + QPointF p2(sceneP2()); - e.appendChild(QETXML::createXmlProperty("x1", p1.x())); - e.appendChild(QETXML::createXmlProperty("y1", p1.y())); - e.appendChild(QETXML::createXmlProperty("x2", p2.x())); - e.appendChild(QETXML::createXmlProperty("y2", p2.y())); + xml_element.setAttribute("x1", QString("%1").arg(p1.x())); + xml_element.setAttribute("y1", QString("%1").arg(p1.y())); + xml_element.setAttribute("x2", QString("%1").arg(p2.x())); + xml_element.setAttribute("y2", QString("%1").arg(p2.y())); + xml_element.setAttribute("end1", Qet::endTypeToString(first_end)); + xml_element.setAttribute("length1", QString("%1").arg(first_length)); + xml_element.setAttribute("end2", Qet::endTypeToString(second_end)); + xml_element.setAttribute("length2", QString("%1").arg(second_length)); - e.appendChild(QETXML::createXmlProperty("end1", Qet::endTypeToString(first_end))); - e.appendChild(QETXML::createXmlProperty("length1", first_length)); - e.appendChild(QETXML::createXmlProperty("end2", Qet::endTypeToString(second_end))); - e.appendChild(QETXML::createXmlProperty("length2", second_length)); - - stylesToXml(e); + stylesToXml(xml_element); } /** diff --git a/sources/editor/graphicspart/partline.h b/sources/editor/graphicspart/partline.h index f85042c65..69f61782b 100644 --- a/sources/editor/graphicspart/partline.h +++ b/sources/editor/graphicspart/partline.h @@ -70,7 +70,7 @@ class PartLine : public CustomElementGraphicPart void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget * = nullptr) override; QString name() const override { return(QObject::tr("ligne", "element part name")); } QString xmlName() const override { return(QString("line")); } - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&xml_element) const override; bool fromXmlPriv(const QDomElement &) override; bool valideXml(QDomElement& element) const; void toSettings(QSettings &,const QString & = QString()) const override {/*TODO: implement*/} diff --git a/sources/editor/graphicspart/partpolygon.cpp b/sources/editor/graphicspart/partpolygon.cpp index d6267d41c..1d5434ec7 100644 --- a/sources/editor/graphicspart/partpolygon.cpp +++ b/sources/editor/graphicspart/partpolygon.cpp @@ -130,19 +130,17 @@ bool PartPolygon::fromXmlPriv(const QDomElement &qde) Export this polygin in xml @param e: properties get part of this DomElement */ -void PartPolygon::toXmlPriv(QDomElement& e) const +void PartPolygon::toXmlPriv(QDomElement& xml_element) const { - int i = 1; - foreach(QPointF point, m_polygon) { - point = mapToScene(point); - e.appendChild(QETXML::createXmlProperty(QString("x%1").arg(i), point.x())); - e.appendChild(QETXML::createXmlProperty(QString("y%1").arg(i), point.y())); - ++ i; - } - - e.appendChild(QETXML::createXmlProperty("closed", m_closed)); - - stylesToXml(e); + int i = 1; + foreach(QPointF point, m_polygon) { + point = mapToScene(point); + xml_element.setAttribute(QString("x%1").arg(i), QString("%1").arg(point.x())); + xml_element.setAttribute(QString("y%1").arg(i), QString("%1").arg(point.y())); + ++ i; + } + if (!m_closed) xml_element.setAttribute("closed", "false"); + stylesToXml(xml_element); } bool PartPolygon::valideXml(QDomElement& element) { diff --git a/sources/editor/graphicspart/partpolygon.h b/sources/editor/graphicspart/partpolygon.h index 96a337f1a..2f651e133 100644 --- a/sources/editor/graphicspart/partpolygon.h +++ b/sources/editor/graphicspart/partpolygon.h @@ -62,7 +62,7 @@ class PartPolygon : public CustomElementGraphicPart QString name() const override { return(QObject::tr("polygone", "element part name")); } QString xmlName() const override { return(QString("polygon")); } bool fromXmlPriv(const QDomElement &) override; - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&xml_element) const override; static bool valideXml(QDomElement& element); void toSettings(QSettings &,const QString & = QString()) const override {/*TODO: implement*/} void fromSettings(QSettings &,const QString & = QString()) override{/*TODO: implement*/} diff --git a/sources/editor/graphicspart/partrectangle.cpp b/sources/editor/graphicspart/partrectangle.cpp index 9923bd950..9ca1e0719 100644 --- a/sources/editor/graphicspart/partrectangle.cpp +++ b/sources/editor/graphicspart/partrectangle.cpp @@ -89,32 +89,28 @@ void PartRectangle::paint(QPainter *painter, const QStyleOptionGraphicsItem *opt @param xml_document : Xml document to use for create the xml element. @return an xml element that describe this ellipse */ -void PartRectangle::toXmlPriv(QDomElement& e) const +void PartRectangle::toXmlPriv(QDomElement& xml_element) const { - QPointF top_left(sceneTopLeft()); + QPointF top_left(sceneTopLeft()); + xml_element.setAttribute("x", QString("%1").arg(top_left.x())); + xml_element.setAttribute("y", QString("%1").arg(top_left.y())); + xml_element.setAttribute("width", QString("%1").arg(m_rect.width())); + xml_element.setAttribute("height", QString("%1").arg(m_rect.height())); - e.appendChild(QETXML::createXmlProperty("x", top_left.x())); - e.appendChild(QETXML::createXmlProperty("y", top_left.y())); - e.appendChild(QETXML::createXmlProperty("width", m_rect.width())); - e.appendChild(QETXML::createXmlProperty("height", m_rect.height())); + QRectF rect = m_rect.normalized(); + qreal x = m_xRadius; + if (x > rect.width()/2) { + x = rect.width()/2; + } + qreal y = m_yRadius; + if (y > rect.height()/2) { + y = rect.height()/2; + } - QRectF rect = m_rect.normalized(); - qreal x = m_xRadius; - if (x > rect.width()/2) { - x = rect.width()/2; - } - qreal y = m_yRadius; - if (y > rect.height()/2) { - y = rect.height()/2; - } + xml_element.setAttribute("rx", QString::number(m_xRadius)); + xml_element.setAttribute("ry", QString::number(m_yRadius)); - e.setAttribute("rx", QString::number(m_xRadius)); - e.setAttribute("ry", QString::number(m_yRadius)); - - e.appendChild(QETXML::createXmlProperty("rx", m_xRadius)); - e.appendChild(QETXML::createXmlProperty("ry", m_yRadius)); - - stylesToXml(e); + stylesToXml(xml_element); } /** diff --git a/sources/editor/graphicspart/partrectangle.h b/sources/editor/graphicspart/partrectangle.h index 4fffb516f..d1678a158 100644 --- a/sources/editor/graphicspart/partrectangle.h +++ b/sources/editor/graphicspart/partrectangle.h @@ -60,7 +60,7 @@ class PartRectangle : public CustomElementGraphicPart QString name () const override { return(QObject::tr("rectangle", "element part name")); } QString xmlName () const override { return(QString("rect")); } - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&xml_element) const override; bool fromXmlPriv (const QDomElement &) override; static bool valideXml(QDomElement& element); void toSettings(QSettings &,const QString & = QString()) const override {/*TODO: implement*/} diff --git a/sources/editor/graphicspart/partterminal.cpp b/sources/editor/graphicspart/partterminal.cpp index 5c176e6de..eb83c96c3 100644 --- a/sources/editor/graphicspart/partterminal.cpp +++ b/sources/editor/graphicspart/partterminal.cpp @@ -72,13 +72,12 @@ bool PartTerminal::fromXmlPriv(const QDomElement &xml_elmt) { */ void PartTerminal::toXmlPriv(QDomElement& e) const { - e.appendChild(QETXML::createXmlProperty("uuid", d->m_uuid)); + e.setAttribute("uuid", d->m_uuid.toString()); - d->m_pos = pos(); + d->m_pos = pos(); - // Do not store terminal data in its own child QDomDocument doc = e.ownerDocument(); - e.appendChild(d->toXml(doc)); + e.appendChild(d -> toXml(doc)); } diff --git a/sources/editor/graphicspart/partterminal.h b/sources/editor/graphicspart/partterminal.h index 4de842328..0f44579f9 100644 --- a/sources/editor/graphicspart/partterminal.h +++ b/sources/editor/graphicspart/partterminal.h @@ -57,7 +57,7 @@ class PartTerminal : public CustomElementGraphicPart int type() const override { return Type; } QString xmlName() const override { return(QString("terminal")); } bool fromXmlPriv(const QDomElement &) override; - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&xml_element) const override; static bool valideXml(QDomElement& element); void toSettings(QSettings &,const QString & = QString()) const override {/*TODO: implement*/} void fromSettings(QSettings &,const QString & = QString()) override{/*TODO: implement*/} diff --git a/sources/editor/graphicspart/parttext.cpp b/sources/editor/graphicspart/parttext.cpp index bbd3f1781..b52368510 100644 --- a/sources/editor/graphicspart/parttext.cpp +++ b/sources/editor/graphicspart/parttext.cpp @@ -119,16 +119,14 @@ bool PartText::fromXmlPriv(const QDomElement &xml_element) @param xml_document Document XML a utiliser pour creer l'element XML @return un element XML decrivant le texte statique */ -void PartText::toXmlPriv(QDomElement& e) const +void PartText::toXmlPriv(QDomElement& xml_element) const { - //QDomElement xml_element = xml_document.createElement(xmlName()); - - e.appendChild(QETXML::createXmlProperty("x", pos().x())); - e.appendChild(QETXML::createXmlProperty("y", pos().y())); - e.appendChild(QETXML::createXmlProperty("text", toPlainText())); - e.appendChild(QETXML::createXmlProperty("font", font().toString())); - e.appendChild(QETXML::createXmlProperty("rotation", rotation())); - e.appendChild(QETXML::createXmlProperty("color", defaultTextColor().name())); + xml_element.setAttribute("x", QString::number(pos().x())); + xml_element.setAttribute("y", QString::number(pos().y())); + xml_element.setAttribute("text", toPlainText()); + xml_element.setAttribute("font", font().toString()); + xml_element.setAttribute("rotation", QString::number(rotation())); + xml_element.setAttribute("color", defaultTextColor().name()); } bool PartText::valideXml(QDomElement& element) { diff --git a/sources/editor/graphicspart/parttext.h b/sources/editor/graphicspart/parttext.h index 2b5f67955..3cc9c5bbf 100644 --- a/sources/editor/graphicspart/parttext.h +++ b/sources/editor/graphicspart/parttext.h @@ -63,7 +63,7 @@ class PartText : public QGraphicsTextItem, public CustomElementPart { static bool valideXml(QDomElement& element); void toSettings(QSettings &,const QString & = QString()) const override {/*TODO: implement*/} void fromSettings(QSettings &,const QString & = QString()) override{/*TODO: implement*/} - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&xml_element) const override; void setRotation(qreal angle) {(QGraphicsObject::setRotation(QET::correctAngle(angle)));} bool isUseless() const override; QRectF sceneGeometricRect() const override; diff --git a/sources/properties/terminaldata.cpp b/sources/properties/terminaldata.cpp index db9cd5719..dd3f094bd 100644 --- a/sources/properties/terminaldata.cpp +++ b/sources/properties/terminaldata.cpp @@ -93,19 +93,18 @@ void TerminalData::fromSettings(QSettings &settings, const QString& prefix) @param e: element to store the properties the name, number, position and orientation of the terminal */ -void TerminalData::toXmlPriv(QDomElement& e) const +void TerminalData::toXmlPriv(QDomElement& xml_element) const { - // TODO: - //QDomElement xml_element = xml_document.createElement("terminaldata"); + xml_element.setAttribute("x", QString("%1").arg(q->scenePos().x())); + xml_element.setAttribute("y", QString("%1").arg(q->scenePos().y())); - // m_pos cannot be stored, because in the partterminal it will not be updated. - // In PartTerminal m_pos is the position of the dock, in Terminal m_pos is the second side of the terminal - // This is hold for legacy compability reason - e.appendChild(QETXML::createXmlProperty("x", m_pos.x())); - e.appendChild(QETXML::createXmlProperty("y", m_pos.y())); - e.appendChild(QETXML::createXmlProperty("name", m_name)); - e.appendChild(QETXML::createXmlProperty("orientation", orientationToString(m_orientation))); - e.appendChild(QETXML::createXmlProperty("type", typeToString(m_type))); + xml_element.setAttribute("uuid", m_uuid.toString()); + xml_element.setAttribute("name", m_name); + + xml_element.setAttribute("orientation", + orientationToString(m_orientation)); + + xml_element.setAttribute("type", typeToString(m_type)); } /* diff --git a/sources/properties/terminaldata.h b/sources/properties/terminaldata.h index 26d0fdbff..6690c9c78 100644 --- a/sources/properties/terminaldata.h +++ b/sources/properties/terminaldata.h @@ -56,7 +56,7 @@ class TerminalData : public PropertiesInterface const QString& prefix = QString()) const override; void fromSettings(QSettings &settings, const QString& = QString()) override; - void toXmlPriv(QDomElement &) const override; + void toXmlPriv(QDomElement &xml_element) const override; bool fromXmlPriv(const QDomElement &xml_element) override; static bool valideXml(const QDomElement &xml_element); diff --git a/sources/properties/xrefproperties.cpp b/sources/properties/xrefproperties.cpp index 5395c8381..0e872c4c8 100644 --- a/sources/properties/xrefproperties.cpp +++ b/sources/properties/xrefproperties.cpp @@ -95,24 +95,30 @@ void XRefProperties::fromSettings(QSettings &settings, @param xml_document : QDomElement to use for saving @return QDomElement */ -void XRefProperties::toXmlPriv(QDomElement& e) const +void XRefProperties::toXmlPriv(QDomElement& xml_element) const { + xml_element.setAttribute("type", m_key); - e.appendChild(QETXML::createXmlProperty("type", m_key)); - e.appendChild(QETXML::createXmlProperty("showpowerctc", m_show_power_ctc)); - e.appendChild(QETXML::createXmlProperty("displayhas", m_display == Cross? "cross" : "contacts")); - e.appendChild(QETXML::createXmlProperty("snapto", m_snap_to == Bottom? "bottom" : "label")); + xml_element.setAttribute("showpowerctc", m_show_power_ctc? "true" : "false"); + QString display = m_display == Cross? "cross" : "contacts"; + xml_element.setAttribute("displayhas", display); + QString snap = m_snap_to == Bottom? "bottom" : "label"; + xml_element.setAttribute("snapto", snap); + QString xrefpos; - QMetaEnum var = QMetaEnum::fromType(); - e.appendChild(QETXML::createXmlProperty("xrefpos", var.valueToKey(m_xref_pos))); - e.appendChild(QETXML::createXmlProperty("offset", m_offset)); - e.appendChild(QETXML::createXmlProperty("master_label", m_master_label)); - e.appendChild(QETXML::createXmlProperty("slave_label", m_slave_label)); + QMetaEnum var = QMetaEnum::fromType(); + xml_element.setAttribute("xrefpos", var.valueToKey(m_xref_pos)); - foreach (QString key, m_prefix.keys()) { - e.appendChild(QETXML::createXmlProperty(key + "prefix", m_prefix.value(key))); - } + int offset = m_offset; + xml_element.setAttribute("offset", QString::number(offset)); + 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)); + } } /** RETURNS True diff --git a/sources/properties/xrefproperties.h b/sources/properties/xrefproperties.h index 324e9795e..aa3b4a7e2 100644 --- a/sources/properties/xrefproperties.h +++ b/sources/properties/xrefproperties.h @@ -45,7 +45,7 @@ class XRefProperties : public PropertiesInterface void toSettings (QSettings &settings, const QString& = QString()) const override; void fromSettings (QSettings &settings, const QString& = QString()) override; - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&xml_element) const override; bool fromXmlPriv(const QDomElement &xml_element) override; static QHash defaultProperties(); diff --git a/sources/qetgraphicsitem/conductor.cpp b/sources/qetgraphicsitem/conductor.cpp index 638a55210..e1187fa31 100644 --- a/sources/qetgraphicsitem/conductor.cpp +++ b/sources/qetgraphicsitem/conductor.cpp @@ -1002,66 +1002,56 @@ bool Conductor::fromXmlPriv(const QDomElement &dom_element) bornes dans le document XML et leur adresse en memoire @return Un element XML representant le conducteur */ -void Conductor::toXmlPriv(QDomElement& e) const { +void Conductor::toXmlPriv(QDomElement& dom_element) const { - e.appendChild(QETXML::createXmlProperty("x", pos().x())); - e.appendChild(QETXML::createXmlProperty("y", pos().y())); + dom_element.setAttribute("x", QString::number(pos().x())); + dom_element.setAttribute("y", QString::number(pos().y())); - // Terminal is uniquely identified by the uuid of the terminal and the element - QUuid terminal = terminal1->uuid(); - QUuid terminalParent = terminal1->parentElement()->uuid(); - if (terminalParent.isNull() || terminal.isNull()) { - // legacy when the terminal does not have a valid uuid - // do not store element1 information, because this is used to determine in the fromXml - // process that legacy file format - e.appendChild(QETXML::createXmlProperty("terminal1", terminal1->ID())); - } else { - e.appendChild(QETXML::createXmlProperty("element1", terminalParent)); - e.appendChild(QETXML::createXmlProperty("terminal1", terminal)); - } + // Terminal is uniquely identified by the uuid of the terminal and the element + if (terminal1->uuid().isNull()) { + // legacy method to identify the terminal + dom_element.setAttribute("terminal1", terminal1->ID()); // for backward compability + } else { + dom_element.setAttribute("element1", terminal1->parentElement()->uuid().toString()); + dom_element.setAttribute("terminal1", terminal1->uuid().toString()); + } - terminal = terminal2->uuid(); - terminalParent = terminal2->parentElement()->uuid(); - if (terminalParent.isNull() || terminal.isNull()) { - // legacy when the terminal does not have a valid uuid - // do not store element1 information, because this is used to determine in the fromXml - // process that legacy file format - e.appendChild(QETXML::createXmlProperty("terminal2", terminal2->ID())); - } else { - e.appendChild(QETXML::createXmlProperty("element2", terminal2->parentElement()->uuid())); - e.appendChild(QETXML::createXmlProperty("terminal2", terminal2->uuid())); - } + if (terminal2->uuid().isNull()) { + // legacy method to identify the terminal + dom_element.setAttribute("terminal2", terminal2->ID()); // for backward compability + } else { + dom_element.setAttribute("element2", terminal2->parentElement()->uuid().toString()); + dom_element.setAttribute("terminal2", terminal2->uuid().toString()); + } + dom_element.setAttribute("freezeLabel", m_freeze_label? "true" : "false"); - e.appendChild(QETXML::createXmlProperty("freezeLabel", m_freeze_label)); + // on n'exporte les segments du conducteur que si ceux-ci ont + // ete modifies par l'utilisateur + if (modified_path) + { + // parcours et export des segments + QDomElement current_segment; + foreach(ConductorSegment *segment, segmentsList()) + { + current_segment = dom_element.ownerDocument().createElement("segment"); + current_segment.setAttribute("orientation", segment -> isHorizontal() ? "horizontal" : "vertical"); + current_segment.setAttribute("length", QString("%1").arg(segment -> length())); + dom_element.appendChild(current_segment); + } + } + QDomDocument doc = dom_element.ownerDocument(); + QDomElement dom_seq = m_autoNum_seq.toXml(doc); + dom_element.appendChild(dom_seq); - QDomDocument doc; - - // on n'exporte les segments du conducteur que si ceux-ci ont - // ete modifies par l'utilisateur - if (modified_path) - { - // parcours et export des segments - QDomElement current_segment; - foreach(ConductorSegment *segment, segmentsList()) - { - current_segment = doc.createElement("segment"); - current_segment.appendChild(QETXML::createXmlProperty("orientation", segment->isHorizontal() ? "horizontal": "vertical")); - current_segment.appendChild(QETXML::createXmlProperty("length", segment -> length())); - e.appendChild(current_segment); - } - } - - QDomElement dom_seq = m_autoNum_seq.toXml(doc); // swquentialNumbers tag - e.appendChild(dom_seq); - - // Export the properties and text - QDomElement conductorProperties = m_properties.toXml(doc); - for (int i=0; i < conductorProperties.childNodes().count(); i++) { - QDomNode node = conductorProperties.childNodes().at(i).cloneNode(); // cloneNode() is important! - e.appendChild(node); - } - - m_text_item->toXml(e); + // Export the properties and text + m_properties. toXml(doc); + if(m_text_item->wasMovedByUser()) + { + dom_element.setAttribute("userx", QString::number(m_text_item->pos().x())); + dom_element.setAttribute("usery", QString::number(m_text_item->pos().y())); + } + if(m_text_item->wasRotateByUser()) + dom_element.setAttribute("rotation", QString::number(m_text_item->rotation())); } /** diff --git a/sources/qetgraphicsitem/conductor.h b/sources/qetgraphicsitem/conductor.h index 4cd82ead4..da1287860 100644 --- a/sources/qetgraphicsitem/conductor.h +++ b/sources/qetgraphicsitem/conductor.h @@ -103,7 +103,7 @@ class Conductor : public QGraphicsObject, public PropertiesInterface public: static bool valideXml (QDomElement &); bool fromXmlPriv(const QDomElement &) override; - void toXmlPriv(QDomElement&) const override; + void toXmlPriv(QDomElement&dom_element) const override; void toSettings(QSettings &, const QString & = QString()) const override {} void fromSettings(QSettings &, const QString & = QString()) override {} private: diff --git a/sources/qetgraphicsitem/terminal.cpp b/sources/qetgraphicsitem/terminal.cpp index ab012a2d5..df85d4baa 100644 --- a/sources/qetgraphicsitem/terminal.cpp +++ b/sources/qetgraphicsitem/terminal.cpp @@ -760,15 +760,12 @@ QList Terminal::conductors() const */ void Terminal::toXmlPriv(QDomElement &qdo) const { - qdo.appendChild(QETXML::createXmlProperty("number", number_terminal_)); - qdo.appendChild(QETXML::createXmlProperty("nameHidden", name_terminal_hidden)); + // for backward compatibility + qdo.setAttribute("x", QString("%1").arg(dock_elmt_.x())); + qdo.setAttribute("y", QString("%1").arg(dock_elmt_.y())); + // end for backward compatibility - // Do not store terminal data in its own child - // Bad hack. The problem is that in the diagrams the terminal is described by the position and in the Collection by the dock. - QPointF tempPos = d->m_pos; - d->m_pos = dock_elmt_; - d->toXmlPriv(qdo); // TerminalData - d->m_pos = tempPos; + qdo.setAttribute("orientation", d->m_orientation); } /** diff --git a/sources/titleblockproperties.cpp b/sources/titleblockproperties.cpp index 01bd284df..69b321c7a 100644 --- a/sources/titleblockproperties.cpp +++ b/sources/titleblockproperties.cpp @@ -73,20 +73,21 @@ bool TitleBlockProperties::operator!=(const TitleBlockProperties &ip) { @param e Element XML auquel seront ajoutes des attributs */ void TitleBlockProperties::toXmlPriv(QDomElement& e) const { - e.appendChild(QETXML::createXmlProperty("author", author)); - e.appendChild(QETXML::createXmlProperty("title", title)); - e.appendChild(QETXML::createXmlProperty("filename", filename)); - e.appendChild(QETXML::createXmlProperty("plant", plant)); - e.appendChild(QETXML::createXmlProperty("locmach", locmach)); - e.appendChild(QETXML::createXmlProperty("indexrev", indexrev)); - e.appendChild(QETXML::createXmlProperty("version", version)); - e.appendChild(QETXML::createXmlProperty("folio", folio)); - e.appendChild(QETXML::createXmlProperty("date", exportDate())); - e.appendChild(QETXML::createXmlProperty("display_at", display_at == Qt::BottomEdge? "bottom" : "right")); + e.setAttribute("author", author); + e.setAttribute("title", title); + e.setAttribute("filename", filename); + e.setAttribute("plant", plant); + e.setAttribute("locmach", locmach); + e.setAttribute("indexrev",indexrev); + e.setAttribute("version", version); + e.setAttribute("folio", folio); + e.setAttribute("auto_page_num", auto_page_num); + e.setAttribute("date", exportDate()); + e.setAttribute("displayAt", (display_at == Qt::BottomEdge? "bottom" : "right")); if (!template_name.isEmpty()) { - e.appendChild(QETXML::createXmlProperty("titleblocktemplate", template_name)); - e.appendChild(QETXML::createXmlProperty("titleblocktemplateCollection", QET::qetCollectionToString(collection))); + e.setAttribute("titleblocktemplate", template_name); + e.setAttribute("titleblocktemplateCollection", QET::qetCollectionToString(collection)); } if (context.keys().count()) { @@ -94,7 +95,6 @@ void TitleBlockProperties::toXmlPriv(QDomElement& e) const { context.toXml(properties); e.appendChild(properties); } - } /** RETURNS True