mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2026-02-20 02:29:58 +01:00
cross ref item: bugfix
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3035 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -40,7 +40,7 @@ CrossRefItem::CrossRefItem(Element *elmt, QGraphicsItem *parent) :
|
|||||||
connect(elmt, SIGNAL(positionChange(QPointF)), this, SLOT(autoPos()));
|
connect(elmt, SIGNAL(positionChange(QPointF)), this, SLOT(autoPos()));
|
||||||
connect(elmt, SIGNAL(elementInfoChange(DiagramContext)), this, SLOT(updateLabel()));
|
connect(elmt, SIGNAL(elementInfoChange(DiagramContext)), this, SLOT(updateLabel()));
|
||||||
connect(elmt->diagram()->project(), SIGNAL(projectDiagramsOrderChanged(QETProject*,int,int)), this, SLOT(updateLabel()));
|
connect(elmt->diagram()->project(), SIGNAL(projectDiagramsOrderChanged(QETProject*,int,int)), this, SLOT(updateLabel()));
|
||||||
connect(elmt->diagram(), SIGNAL(XRefPropertiesChanged(XRefProperties)), this, SLOT(updateLabel()));
|
connect(elmt->diagram(), SIGNAL(XRefPropertiesChanged(XRefProperties)), this, SLOT(setProperties(XRefProperties)));
|
||||||
updateLabel();
|
updateLabel();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,6 +52,7 @@ CrossRefItem::~CrossRefItem() {
|
|||||||
disconnect(m_element, SIGNAL(positionChange(QPointF)), this, SLOT(autoPos()));
|
disconnect(m_element, SIGNAL(positionChange(QPointF)), this, SLOT(autoPos()));
|
||||||
disconnect(m_element, SIGNAL(elementInfoChange(DiagramContext)), this, SLOT(updateLabel()));
|
disconnect(m_element, SIGNAL(elementInfoChange(DiagramContext)), this, SLOT(updateLabel()));
|
||||||
disconnect(m_element->diagram()->project(), SIGNAL(projectDiagramsOrderChanged(QETProject*,int,int)), this, SLOT(updateLabel()));
|
disconnect(m_element->diagram()->project(), SIGNAL(projectDiagramsOrderChanged(QETProject*,int,int)), this, SLOT(updateLabel()));
|
||||||
|
disconnect(m_element->diagram(), SIGNAL(XRefPropertiesChanged(XRefProperties)), this, SLOT(setProperties(XRefProperties)));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,6 +71,13 @@ QPainterPath CrossRefItem::shape() const{
|
|||||||
return m_shape_path;
|
return m_shape_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CrossRefItem::setProperties(XRefProperties xrp) {
|
||||||
|
if (m_properties != xrp) {
|
||||||
|
m_properties = xrp;
|
||||||
|
updateLabel();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CrossRefItem::updateLabel
|
* @brief CrossRefItem::updateLabel
|
||||||
* Update the content of the item
|
* Update the content of the item
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ class CrossRefItem : public QGraphicsObject
|
|||||||
signals:
|
signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void setProperties (XRefProperties xrp);
|
||||||
void updateLabel();
|
void updateLabel();
|
||||||
void autoPos();
|
void autoPos();
|
||||||
|
|
||||||
|
|||||||
@@ -88,52 +88,36 @@ void MasterElement::unlinkElement(Element *elmt) {
|
|||||||
if (connected_elements.contains(elmt)) {
|
if (connected_elements.contains(elmt)) {
|
||||||
connected_elements.removeOne(elmt);
|
connected_elements.removeOne(elmt);
|
||||||
elmt->unlinkElement(this);
|
elmt->unlinkElement(this);
|
||||||
//update the graphics cross ref
|
|
||||||
disconnect(elmt, SIGNAL(positionChange(QPointF)), cri_, SLOT(updateLabel()));
|
|
||||||
|
|
||||||
bool delete_cri = true;
|
if (cri_) {
|
||||||
|
//update the graphics cross ref
|
||||||
|
disconnect(elmt, SIGNAL(positionChange(QPointF)), cri_, SLOT(updateLabel()));
|
||||||
|
|
||||||
//if power contact isn't show, make sure they are only power contacts linked
|
bool delete_cri = true;
|
||||||
//or nothing befor remove cri_
|
|
||||||
if (!diagram()->defaultXRefProperties().showPowerContact()) {
|
|
||||||
foreach(Element *elmt, linkedElements())
|
|
||||||
if (elmt->kindInformations()["type"].toString() != "power") delete_cri = false;
|
|
||||||
}
|
|
||||||
//else only make sur list is empty
|
|
||||||
else {
|
|
||||||
if (!linkedElements().isEmpty()) delete_cri = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (delete_cri) {
|
//if power contact isn't show, make sure they are only power contacts linked
|
||||||
diagram()->removeItem(cri_);
|
//or nothing befor remove cri_
|
||||||
delete cri_;
|
if (!diagram()->defaultXRefProperties().showPowerContact()) {
|
||||||
cri_ = 0;
|
foreach(Element *elmt, linkedElements())
|
||||||
}
|
if (elmt->kindInformations()["type"].toString() != "power") delete_cri = false;
|
||||||
else {
|
}
|
||||||
cri_->updateLabel();
|
//else only make sur list is empty
|
||||||
|
else {
|
||||||
|
if (!linkedElements().isEmpty()) delete_cri = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (delete_cri) {
|
||||||
|
diagram()->removeItem(cri_);
|
||||||
|
delete cri_;
|
||||||
|
cri_ = 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cri_->updateLabel();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief MasterElement::itemChange
|
|
||||||
* Réimplemente the protected method item change
|
|
||||||
* This is used to make connection/disconnection when this item is added/removed from a diagram
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
QVariant MasterElement::itemChange(GraphicsItemChange change, const QVariant &value) {
|
|
||||||
if (change == QGraphicsItem::ItemSceneChange) {
|
|
||||||
if (diagram())
|
|
||||||
disconnect(diagram(), SIGNAL(XRefPropertiesChanged(XRefProperties)), this, SLOT(reLink()));
|
|
||||||
}
|
|
||||||
else if (change == QGraphicsItem::ItemSceneHasChanged) {
|
|
||||||
if (diagram())
|
|
||||||
connect(diagram(), SIGNAL(XRefPropertiesChanged(XRefProperties)), this, SLOT(reLink()));
|
|
||||||
}
|
|
||||||
return QetGraphicsItem::itemChange(change, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief MasterElement::updateLabel
|
* @brief MasterElement::updateLabel
|
||||||
* update label of this element
|
* update label of this element
|
||||||
@@ -147,17 +131,3 @@ void MasterElement::updateLabel() {
|
|||||||
setTaggedText("label", "_", false):
|
setTaggedText("label", "_", false):
|
||||||
setTaggedText("label", label, true);
|
setTaggedText("label", label, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief MasterElement::reLink
|
|
||||||
* Relink all linked element.
|
|
||||||
* this method is notably used when xref properties changes
|
|
||||||
* for update the content of th e XRef
|
|
||||||
*/
|
|
||||||
void MasterElement::reLink() {
|
|
||||||
QList <Element *> elmt_list = linkedElements();
|
|
||||||
unlinkAllElements();
|
|
||||||
foreach (Element *elmt, elmt_list) {
|
|
||||||
linkToElement(elmt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -32,17 +32,11 @@ class MasterElement : public CustomElement
|
|||||||
virtual void unlinkAllElements();
|
virtual void unlinkAllElements();
|
||||||
virtual void unlinkElement(Element *elmt);
|
virtual void unlinkElement(Element *elmt);
|
||||||
|
|
||||||
protected:
|
|
||||||
QVariant itemChange(GraphicsItemChange change, const QVariant &value);
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateLabel();
|
void updateLabel();
|
||||||
|
|
||||||
private slots:
|
|
||||||
void reLink();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CrossRefItem *cri_;
|
CrossRefItem *cri_;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user