mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-03-27 18:59:58 +01:00
Dynamic element text item can display information of parent element
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@5010 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -76,6 +76,14 @@ QDomElement DynamicElementTextItem::toXml(QDomDocument &dom_doc) const
|
||||
QDomElement dom_text = dom_doc.createElement("text");
|
||||
dom_text.appendChild(dom_doc.createTextNode(toPlainText()));
|
||||
root_element.appendChild(dom_text);
|
||||
|
||||
//Info name
|
||||
if(!m_info_name.isEmpty())
|
||||
{
|
||||
QDomElement dom_info_name = dom_doc.createElement("info_name");
|
||||
dom_info_name.appendChild(dom_doc.createTextNode(m_info_name));
|
||||
root_element.appendChild(dom_info_name);
|
||||
}
|
||||
|
||||
//tagg
|
||||
if (!m_tagg.isEmpty())
|
||||
@@ -116,12 +124,24 @@ void DynamicElementTextItem::fromXml(const QDomElement &dom_elmt)
|
||||
|
||||
QMetaEnum me = metaObject()->enumerator(metaObject()->indexOfEnumerator("TextFrom"));
|
||||
m_text_from = DynamicElementTextItem::TextFrom(me.keyToValue(dom_elmt.attribute("text_from").toStdString().data()));
|
||||
setNoEditable(m_text_from == ElementInfo? true : false);
|
||||
if(m_text_from == ElementInfo)
|
||||
{
|
||||
setNoEditable(true);
|
||||
connect(m_parent_element, &Element::elementInfoChange, this, &DynamicElementTextItem::elementInfoChanged);
|
||||
}
|
||||
else {
|
||||
setNoEditable(false);
|
||||
}
|
||||
|
||||
//Text
|
||||
QDomElement dom_text = dom_elmt.firstChildElement("text");
|
||||
if (!dom_text.isNull())
|
||||
setPlainText(dom_text.text());
|
||||
|
||||
//Info name
|
||||
QDomElement dom_info_name = dom_elmt.firstChildElement("info_name");
|
||||
if(!dom_info_name.isNull())
|
||||
m_info_name = dom_info_name.text();
|
||||
|
||||
//tagg
|
||||
QDomElement dom_tagg = dom_elmt.firstChildElement("tagg");
|
||||
@@ -159,6 +179,18 @@ void DynamicElementTextItem::setTextFrom(DynamicElementTextItem::TextFrom text_f
|
||||
{
|
||||
m_text_from = text_from;
|
||||
setNoEditable(m_text_from == ElementInfo? true : false);
|
||||
|
||||
if(m_text_from == UserText)
|
||||
{
|
||||
setPlainText(m_text);
|
||||
disconnect(m_parent_element, &Element::elementInfoChange, this, &DynamicElementTextItem::elementInfoChanged);
|
||||
}
|
||||
else if (m_text_from == ElementInfo && m_parent_element)
|
||||
{
|
||||
setPlainText(m_parent_element->elementInformations().value(m_info_name).toString());
|
||||
connect(m_parent_element, &Element::elementInfoChange, this, &DynamicElementTextItem::elementInfoChanged);
|
||||
}
|
||||
|
||||
emit TextFromChanged(m_text_from);
|
||||
}
|
||||
|
||||
@@ -201,6 +233,26 @@ void DynamicElementTextItem::setText(const QString &text)
|
||||
emit textChanged(m_text);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief DynamicElementTextItem::setInfoName
|
||||
* Set the information name of the parent element.
|
||||
* @param info_name
|
||||
*/
|
||||
void DynamicElementTextItem::setInfoName(const QString &info_name)
|
||||
{
|
||||
m_info_name = info_name;
|
||||
|
||||
if(m_parent_element) {
|
||||
setPlainText(m_parent_element->elementInformations().value(info_name).toString());
|
||||
}
|
||||
|
||||
emit InfoNameChanged(info_name);
|
||||
}
|
||||
|
||||
QString DynamicElementTextItem::infoName() const {
|
||||
return m_info_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief DynamicElementTextItem::mouseMoveEvent
|
||||
* @param event
|
||||
@@ -253,3 +305,8 @@ void DynamicElementTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
|
||||
QGraphicsTextItem::mouseReleaseEvent(event);
|
||||
}
|
||||
|
||||
void DynamicElementTextItem::elementInfoChanged()
|
||||
{
|
||||
setPlainText(m_parent_element->elementInformations().value(m_info_name).toString());
|
||||
}
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@ class DynamicElementTextItem : public DiagramTextItem
|
||||
Q_PROPERTY(QString tagg READ tagg WRITE setTagg NOTIFY taggChanged)
|
||||
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
|
||||
Q_PROPERTY(TextFrom textFrom READ textFrom WRITE setTextFrom NOTIFY TextFromChanged)
|
||||
Q_PROPERTY(QString infoName READ infoName WRITE setInfoName NOTIFY InfoNameChanged)
|
||||
|
||||
public:
|
||||
Q_ENUMS(TextFrom)
|
||||
@@ -50,6 +51,7 @@ class DynamicElementTextItem : public DiagramTextItem
|
||||
void taggChanged(QString tagg);
|
||||
void textChanged(QString text);
|
||||
void TextFromChanged(DynamicElementTextItem::TextFrom text_from);
|
||||
void InfoNameChanged(QString info);
|
||||
|
||||
public:
|
||||
DynamicElementTextItem(Element *parent_element);
|
||||
@@ -70,16 +72,21 @@ class DynamicElementTextItem : public DiagramTextItem
|
||||
QString text() const;
|
||||
void setText(const QString &text);
|
||||
static QString xmlTaggName() {return QString("dynamic_elmt_text");}
|
||||
void setInfoName(const QString &info_name);
|
||||
QString infoName() const;
|
||||
|
||||
protected:
|
||||
void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
|
||||
void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
|
||||
|
||||
private:
|
||||
void elementInfoChanged();
|
||||
|
||||
private:
|
||||
Element *m_parent_element = nullptr;
|
||||
QString m_tagg,
|
||||
m_text,
|
||||
m_elmt_info_name;
|
||||
m_info_name;
|
||||
DynamicElementTextItem::TextFrom m_text_from = UserText;
|
||||
QUuid m_uuid;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user