mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-10-09 05:24:14 +02:00
Clear stale xref data from PLC slave elementInformations on unlink and position change
This commit is contained in:
@@ -764,6 +764,8 @@ QVariant DynamicElementTextItem::itemChange(QGraphicsItem::GraphicsItemChange ch
|
||||
if(m_parent_element.data()->linkType() == Element::Slave)
|
||||
{
|
||||
connect(m_parent_element.data(), &Element::linkedElementChanged, this, &DynamicElementTextItem::masterChanged);
|
||||
if(m_parent_element.data()->diagram())
|
||||
connect(m_parent_element.data()->diagram()->project(), &QETProject::XRefPropertiesChanged, this, &DynamicElementTextItem::updateXref);
|
||||
//The parent is already linked, wa call master changed for init the connection
|
||||
if(!m_parent_element.data()->linkedElements().isEmpty())
|
||||
masterChanged();
|
||||
@@ -1497,6 +1499,18 @@ void DynamicElementTextItem::updateXref()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Remove stale "xref" from elementInformations when no longer needed
|
||||
if(m_parent_element->linkType() == Element::Slave &&
|
||||
m_text_from == ElementInfo && m_info_name == "xref")
|
||||
{
|
||||
DiagramContext dc = m_parent_element->elementInformations();
|
||||
if(!dc.value("xref").toString().isEmpty())
|
||||
{
|
||||
dc.remove("xref");
|
||||
m_parent_element->setElementInformations(dc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DynamicElementTextItem::setPlainText(const QString &text)
|
||||
|
||||
@@ -59,6 +59,11 @@ ElementTextItemGroup::ElementTextItemGroup(const QString &name,
|
||||
&Element::linkedElementChanged,
|
||||
this,
|
||||
&ElementTextItemGroup::updateXref);
|
||||
if(parent->diagram())
|
||||
connect(parent->diagram()->project(),
|
||||
&QETProject::XRefPropertiesChanged,
|
||||
this,
|
||||
&ElementTextItemGroup::updateXref);
|
||||
}
|
||||
|
||||
ElementTextItemGroup::~ElementTextItemGroup()
|
||||
@@ -898,6 +903,25 @@ void ElementTextItemGroup::updateXref()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Remove stale "xref" from elementInformations when no longer needed
|
||||
if(m_parent_element->linkType() == Element::Slave &&
|
||||
m_parent_element->diagram())
|
||||
{
|
||||
for(DynamicElementTextItem *deti : texts())
|
||||
{
|
||||
if(deti->textFrom() == DynamicElementTextItem::ElementInfo && deti->infoName() == "xref")
|
||||
{
|
||||
DiagramContext dc = m_parent_element->elementInformations();
|
||||
if(!dc.value("xref").toString().isEmpty())
|
||||
{
|
||||
dc.remove("xref");
|
||||
m_parent_element->setElementInformations(dc);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ElementTextItemGroup::adjustSlaveXrefPos(int slave_offset)
|
||||
|
||||
@@ -111,6 +111,7 @@ void MasterElement::unlinkElement(Element *elmt)
|
||||
ctx.remove(QETInformation::ELMT_PLC_COMMENT);
|
||||
ctx.remove(QETInformation::ELMT_PLC_CROSSREF);
|
||||
ctx.remove(QETInformation::ELMT_LABEL);
|
||||
ctx.remove(QStringLiteral("xref"));
|
||||
elmt->setElementInformations(ctx);
|
||||
|
||||
setGroupIndexForElement(elmt, -1);
|
||||
|
||||
@@ -254,6 +254,7 @@ void LinkElementCommand::undo()
|
||||
ctx.remove(QETInformation::ELMT_PLC_COMMENT);
|
||||
ctx.remove(QETInformation::ELMT_PLC_CROSSREF);
|
||||
ctx.remove(QETInformation::ELMT_LABEL);
|
||||
ctx.remove(QStringLiteral("xref"));
|
||||
m_element->setElementInformations(ctx);
|
||||
|
||||
foreach(Element *elmt, m_element->linkedElements())
|
||||
@@ -291,6 +292,7 @@ void LinkElementCommand::undo()
|
||||
ctx.remove(QETInformation::ELMT_PLC_COMMENT);
|
||||
ctx.remove(QETInformation::ELMT_PLC_CROSSREF);
|
||||
ctx.remove(QETInformation::ELMT_LABEL);
|
||||
ctx.remove(QStringLiteral("xref"));
|
||||
slave->setElementInformations(ctx);
|
||||
}
|
||||
|
||||
@@ -622,6 +624,7 @@ void LinkElementCommand::makeLink(const QList<Element *> &element_list)
|
||||
ctx.remove(QETInformation::ELMT_PLC_COMMENT);
|
||||
ctx.remove(QETInformation::ELMT_PLC_CROSSREF);
|
||||
ctx.remove(QETInformation::ELMT_LABEL);
|
||||
ctx.remove(QStringLiteral("xref"));
|
||||
slave->setElementInformations(ctx);
|
||||
}
|
||||
m_element->unlinkElement(elmt);
|
||||
|
||||
Reference in New Issue
Block a user