mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-04-02 09:29:59 +02:00
Add userProperties
This commit is contained in:
@@ -80,6 +80,7 @@ Conductor::Conductor(Terminal *p1, Terminal* p2) :
|
||||
terminal1(p1),
|
||||
terminal2(p2)
|
||||
{
|
||||
setTagName("conductor");
|
||||
//set Zvalue at 11 to be upper than the DiagramImageItem and element
|
||||
setZValue(11);
|
||||
m_previous_z_value = zValue();
|
||||
@@ -962,7 +963,7 @@ void Conductor::pointsToSegments(const QList<QPointF>& points_list) {
|
||||
@param dom_element
|
||||
@return true is loading success else return false
|
||||
*/
|
||||
bool Conductor::fromXml(const QDomElement &dom_element)
|
||||
bool Conductor::fromXmlPriv(const QDomElement &dom_element)
|
||||
{
|
||||
// TODO: seems to short!
|
||||
double x=0, y=0;
|
||||
@@ -990,7 +991,7 @@ bool Conductor::fromXml(const QDomElement &dom_element)
|
||||
|
||||
// does not support legacy method
|
||||
/*!
|
||||
@brief Conductor::toXml
|
||||
@brief Conductor::toXmlPriv
|
||||
Exporte les caracteristiques du conducteur sous forme d'une element XML.
|
||||
@param dom_document :
|
||||
Le document XML a utiliser pour creer l'element XML
|
||||
@@ -999,12 +1000,10 @@ bool Conductor::fromXml(const QDomElement &dom_element)
|
||||
bornes dans le document XML et leur adresse en memoire
|
||||
@return Un element XML representant le conducteur
|
||||
*/
|
||||
QDomElement Conductor::toXml(QDomDocument & doc) const {
|
||||
QDomElement dom_element = doc.createElement("conductor");
|
||||
void Conductor::toXmlPriv(QDomElement& e) const {
|
||||
|
||||
|
||||
dom_element.appendChild(createXmlProperty(doc, "x", pos().x()));
|
||||
dom_element.appendChild(createXmlProperty(doc, "y", pos().y()));
|
||||
e.appendChild(createXmlProperty("x", pos().x()));
|
||||
e.appendChild(createXmlProperty("y", pos().y()));
|
||||
|
||||
// Terminal is uniquely identified by the uuid of the terminal and the element
|
||||
QUuid terminal = terminal1->uuid();
|
||||
@@ -1013,10 +1012,10 @@ QDomElement Conductor::toXml(QDomDocument & doc) const {
|
||||
// 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
|
||||
dom_element.appendChild(createXmlProperty(doc, "terminal1", terminal1->ID()));
|
||||
e.appendChild(createXmlProperty("terminal1", terminal1->ID()));
|
||||
} else {
|
||||
dom_element.appendChild(createXmlProperty(doc, "element1", terminalParent));
|
||||
dom_element.appendChild(createXmlProperty(doc, "terminal1", terminal));
|
||||
e.appendChild(createXmlProperty("element1", terminalParent));
|
||||
e.appendChild(createXmlProperty("terminal1", terminal));
|
||||
}
|
||||
|
||||
terminal = terminal2->uuid();
|
||||
@@ -1025,13 +1024,15 @@ QDomElement Conductor::toXml(QDomDocument & doc) const {
|
||||
// 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
|
||||
dom_element.appendChild(createXmlProperty(doc, "terminal2", terminal2->ID()));
|
||||
e.appendChild(createXmlProperty("terminal2", terminal2->ID()));
|
||||
} else {
|
||||
dom_element.appendChild(createXmlProperty(doc, "element2", terminal2->parentElement()->uuid()));
|
||||
dom_element.appendChild(createXmlProperty(doc, "terminal2", terminal2->uuid()));
|
||||
e.appendChild(createXmlProperty("element2", terminal2->parentElement()->uuid()));
|
||||
e.appendChild(createXmlProperty("terminal2", terminal2->uuid()));
|
||||
}
|
||||
|
||||
dom_element.appendChild(createXmlProperty(doc, "freezeLabel", m_freeze_label));
|
||||
e.appendChild(createXmlProperty("freezeLabel", m_freeze_label));
|
||||
|
||||
QDomDocument doc;
|
||||
|
||||
// on n'exporte les segments du conducteur que si ceux-ci ont
|
||||
// ete modifies par l'utilisateur
|
||||
@@ -1042,25 +1043,23 @@ QDomElement Conductor::toXml(QDomDocument & doc) const {
|
||||
foreach(ConductorSegment *segment, segmentsList())
|
||||
{
|
||||
current_segment = doc.createElement("segment");
|
||||
current_segment.appendChild(createXmlProperty(doc, "orientation", segment->isHorizontal() ? "horizontal": "vertical"));
|
||||
current_segment.appendChild(createXmlProperty(doc, "length", segment -> length()));
|
||||
dom_element.appendChild(current_segment);
|
||||
current_segment.appendChild(createXmlProperty("orientation", segment->isHorizontal() ? "horizontal": "vertical"));
|
||||
current_segment.appendChild(createXmlProperty("length", segment -> length()));
|
||||
e.appendChild(current_segment);
|
||||
}
|
||||
}
|
||||
|
||||
QDomElement dom_seq = m_autoNum_seq.toXml(doc); // swquentialNumbers tag
|
||||
dom_element.appendChild(dom_seq);
|
||||
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!
|
||||
dom_element.appendChild(node);
|
||||
e.appendChild(node);
|
||||
}
|
||||
|
||||
m_text_item->toXml(doc, dom_element);
|
||||
|
||||
return(dom_element);
|
||||
m_text_item->toXml(e);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -102,8 +102,8 @@ class Conductor : public QGraphicsObject, public PropertiesInterface
|
||||
|
||||
public:
|
||||
static bool valideXml (QDomElement &);
|
||||
bool fromXml (const QDomElement &) override;
|
||||
QDomElement toXml (QDomDocument &doc) const override;
|
||||
bool fromXmlPriv(const QDomElement &) override;
|
||||
void toXmlPriv(QDomElement&) const override;
|
||||
void toSettings(QSettings &, const QString & = QString()) const override {}
|
||||
void fromSettings(QSettings &, const QString & = QString()) override {}
|
||||
private:
|
||||
|
||||
@@ -61,14 +61,14 @@ Conductor *ConductorTextItem::parentConductor() const
|
||||
return(parent_conductor_);
|
||||
}
|
||||
|
||||
void ConductorTextItem::toXml(QDomDocument& doc, QDomElement& e) {
|
||||
void ConductorTextItem::toXml(QDomElement& e) {
|
||||
if(moved_by_user_)
|
||||
{
|
||||
e.appendChild(PropertiesInterface::createXmlProperty(doc, "userx", pos().x()));
|
||||
e.appendChild(PropertiesInterface::createXmlProperty(doc, "usery", pos().y()));
|
||||
e.appendChild(PropertiesInterface::createXmlProperty("userx", pos().x()));
|
||||
e.appendChild(PropertiesInterface::createXmlProperty("usery", pos().y()));
|
||||
}
|
||||
if(rotate_by_user_)
|
||||
e.appendChild(PropertiesInterface::createXmlProperty(doc, "rotation", rotation()));
|
||||
e.appendChild(PropertiesInterface::createXmlProperty("rotation", rotation()));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class ConductorTextItem : public DiagramTextItem
|
||||
enum { Type = UserType + 1006 };
|
||||
Conductor *parentConductor() const;
|
||||
void fromXml(const QDomElement &) override;
|
||||
void toXml(QDomDocument& doc, QDomElement& e);
|
||||
void toXml(QDomElement& e);
|
||||
int type() const override { return Type; }
|
||||
virtual bool wasMovedByUser() const;
|
||||
virtual bool wasRotateByUser() const;
|
||||
|
||||
@@ -86,36 +86,36 @@ DynamicElementTextItem::DynamicElementTextItem()
|
||||
@param dom_doc
|
||||
@return
|
||||
*/
|
||||
QDomElement DynamicElementTextItem::toXml(QDomDocument &dom_doc) const
|
||||
QDomElement DynamicElementTextItem::toXml(QDomDocument& dom_doc) const
|
||||
{
|
||||
QDomElement root_element = dom_doc.createElement(xmlTagName());
|
||||
QDomElement root_element = dom_doc.createElement(xmlTagName());
|
||||
|
||||
root_element.setAttribute("x", QString::number(pos().x()));
|
||||
root_element.setAttribute("y", QString::number(pos().y()));
|
||||
root_element.setAttribute("rotation", QString::number(QET::correctAngle(rotation())));
|
||||
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));
|
||||
root_element.setAttribute("font", font().toString());
|
||||
root_element.setAttribute("keep_visual_rotation", m_keep_visual_rotation ? "true" : "false");
|
||||
root_element.setAttribute("x", QString::number(pos().x()));
|
||||
root_element.setAttribute("y", QString::number(pos().y()));
|
||||
root_element.setAttribute("rotation", QString::number(QET::correctAngle(rotation())));
|
||||
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));
|
||||
root_element.setAttribute("font", font().toString());
|
||||
root_element.setAttribute("keep_visual_rotation", m_keep_visual_rotation ? "true" : "false");
|
||||
|
||||
QMetaEnum me = textFromMetaEnum();
|
||||
root_element.setAttribute("text_from", me.valueToKey(m_text_from));
|
||||
root_element.setAttribute("text_from", me.valueToKey(m_text_from));
|
||||
|
||||
me = QMetaEnum::fromType<Qt::Alignment>();
|
||||
if(this->alignment() &Qt::AlignRight)
|
||||
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignRight));
|
||||
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignRight));
|
||||
else if(this->alignment() &Qt::AlignLeft)
|
||||
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignLeft));
|
||||
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignLeft));
|
||||
else if(this->alignment() &Qt::AlignHCenter)
|
||||
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignHCenter));
|
||||
root_element.setAttribute("Halignment", me.valueToKey(Qt::AlignHCenter));
|
||||
|
||||
if(this->alignment() &Qt::AlignBottom)
|
||||
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignBottom));
|
||||
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignBottom));
|
||||
else if(this->alignment() & Qt::AlignTop)
|
||||
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignTop));
|
||||
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignTop));
|
||||
else if(this->alignment() &Qt::AlignVCenter)
|
||||
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignVCenter));
|
||||
root_element.setAttribute("Valignment", me.valueToKey(Qt::AlignVCenter));
|
||||
|
||||
|
||||
QDomElement dom_text = dom_doc.createElement("text");
|
||||
|
||||
@@ -82,7 +82,7 @@ class DynamicElementTextItem : public DiagramTextItem
|
||||
DynamicElementTextItem(const DynamicElementTextItem &);
|
||||
|
||||
public:
|
||||
QDomElement toXml(QDomDocument &dom_doc) const override;
|
||||
QDomElement toXml(QDomDocument&) const override;
|
||||
void fromXml(const QDomElement &dom_elmt) override;
|
||||
|
||||
Element *parentElement() const;
|
||||
|
||||
@@ -40,7 +40,7 @@ class IndependentTextItem : public DiagramTextItem
|
||||
int type() const override { return Type; }
|
||||
|
||||
void fromXml(const QDomElement &) override;
|
||||
QDomElement toXml(QDomDocument &) const override;
|
||||
QDomElement toXml(QDomDocument&) const override;
|
||||
|
||||
protected:
|
||||
void focusOutEvent(QFocusEvent *event) override;
|
||||
|
||||
@@ -92,6 +92,7 @@ void Terminal::init(
|
||||
QString name,
|
||||
bool hiddenName)
|
||||
{
|
||||
setTagName("terminal");
|
||||
// definition du pount d'amarrage pour un conducteur
|
||||
d->m_pos = pf;
|
||||
|
||||
@@ -750,34 +751,22 @@ QList<Conductor *> Terminal::conductors() const
|
||||
}
|
||||
|
||||
/**
|
||||
@brief Terminal::toXml
|
||||
@brief Terminal::toXmlPriv
|
||||
Methode d'export en XML
|
||||
@param doc Le Document XML a utiliser pour creer l'element XML
|
||||
@return un QDomElement representant cette borne
|
||||
*/
|
||||
QDomElement Terminal::toXml(QDomDocument &doc) const
|
||||
void Terminal::toXmlPriv(QDomElement &qdo) const
|
||||
{
|
||||
QDomElement qdo = doc.createElement("terminal");
|
||||
|
||||
qdo.appendChild(createXmlProperty(doc, "number", number_terminal_));
|
||||
qdo.appendChild(createXmlProperty(doc, "nameHidden", name_terminal_hidden));
|
||||
|
||||
// store terminal data too!
|
||||
qdo.appendChild(createXmlProperty("number", number_terminal_));
|
||||
qdo.appendChild(createXmlProperty("nameHidden", name_terminal_hidden));
|
||||
|
||||
// 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_;
|
||||
QDomElement terminalDataElement = d->toXml(doc);
|
||||
d->toXmlPriv(qdo); // TerminalData
|
||||
d->m_pos = tempPos;
|
||||
|
||||
int childsCount = terminalDataElement.childNodes().count();
|
||||
for (int i=0; i < childsCount; i++) {
|
||||
QDomNode node = terminalDataElement.childNodes().at(i).cloneNode(); // cloneNode() is important, otherwise no deep clone is made
|
||||
qdo.appendChild(node);
|
||||
}
|
||||
|
||||
return(qdo);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -812,7 +801,7 @@ bool Terminal::valideXml(const QDomElement &terminal)
|
||||
@return true si la borne "se reconnait"
|
||||
(memes coordonnes, meme orientation), false sinon
|
||||
*/
|
||||
bool Terminal::fromXml(const QDomElement &terminal) {
|
||||
bool Terminal::fromXmlPriv(const QDomElement &terminal) {
|
||||
propertyString(terminal, "number", &number_terminal_);
|
||||
|
||||
propertyBool(terminal, "nameHidden", &name_terminal_hidden);
|
||||
|
||||
@@ -100,8 +100,8 @@ class Terminal : public QGraphicsObject, public PropertiesInterface
|
||||
|
||||
// methods related to XML import/export
|
||||
static bool valideXml(const QDomElement &);
|
||||
bool fromXml (const QDomElement &) override;
|
||||
QDomElement toXml (QDomDocument &) const override;
|
||||
bool fromXmlPriv (const QDomElement &) override;
|
||||
void toXmlPriv(QDomElement &) const override;
|
||||
|
||||
void toSettings(QSettings &,const QString & = QString()) const override {/*TODO: implement*/}
|
||||
void fromSettings(QSettings &,const QString & = QString()) override{/*TODO: implement*/}
|
||||
|
||||
Reference in New Issue
Block a user