mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-21 16:50:53 +01:00
Fix wrong behavior with conductor text item when use "past here"
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3487 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -576,15 +576,16 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// chargement de tous les textes du fichiers XML
|
// Load text
|
||||||
QList<IndependentTextItem *> added_texts;
|
QList<IndependentTextItem *> added_texts;
|
||||||
foreach (QDomElement text_xml, QET::findInDomElement(root, "inputs", "input")) {
|
foreach (QDomElement text_xml, QET::findInDomElement(root, "inputs", "input")) {
|
||||||
IndependentTextItem *iti = new IndependentTextItem(this);
|
IndependentTextItem *iti = new IndependentTextItem(this);
|
||||||
iti -> fromXml(text_xml);
|
iti -> fromXml(text_xml);
|
||||||
addItem(iti);
|
addItem(iti);
|
||||||
added_texts << iti;
|
added_texts << iti;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load image
|
||||||
QList<DiagramImageItem *> added_images;
|
QList<DiagramImageItem *> added_images;
|
||||||
foreach (QDomElement image_xml, QET::findInDomElement(root, "images", "image")) {
|
foreach (QDomElement image_xml, QET::findInDomElement(root, "images", "image")) {
|
||||||
DiagramImageItem *dii = new DiagramImageItem ();
|
DiagramImageItem *dii = new DiagramImageItem ();
|
||||||
@@ -593,6 +594,7 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
|
|||||||
added_images << dii;
|
added_images << dii;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load shape
|
||||||
QList<QetShapeItem *> added_shapes;
|
QList<QetShapeItem *> added_shapes;
|
||||||
foreach (QDomElement shape_xml, QET::findInDomElement(root, "shapes", "shape")) {
|
foreach (QDomElement shape_xml, QET::findInDomElement(root, "shapes", "shape")) {
|
||||||
QetShapeItem *dii = new QetShapeItem (QPointF(0,0));
|
QetShapeItem *dii = new QetShapeItem (QPointF(0,0));
|
||||||
@@ -600,47 +602,8 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
|
|||||||
addItem(dii);
|
addItem(dii);
|
||||||
added_shapes << dii;
|
added_shapes << dii;
|
||||||
}
|
}
|
||||||
|
|
||||||
// gere la translation des nouveaux elements et texte si celle-ci est demandee
|
// Load conductor
|
||||||
if (position != QPointF()) {
|
|
||||||
// determine quel est le coin superieur gauche du rectangle entourant les elements ajoutes
|
|
||||||
qreal minimum_x = 0, minimum_y = 0;
|
|
||||||
bool init = false;
|
|
||||||
QList<QGraphicsItem *> added_items;
|
|
||||||
foreach (Element *added_element, added_elements) added_items << added_element;
|
|
||||||
foreach (DiagramTextItem *added_text, added_texts) added_items << added_text;
|
|
||||||
foreach (DiagramImageItem *added_image, added_images) added_items << added_image;
|
|
||||||
foreach (QetShapeItem *added_shape, added_shapes) added_items << added_shape;
|
|
||||||
foreach (QGraphicsItem *item, added_items) {
|
|
||||||
QPointF csg = item -> mapToScene(item -> boundingRect()).boundingRect().topLeft();
|
|
||||||
qreal px = csg.x();
|
|
||||||
qreal py = csg.y();
|
|
||||||
if (!init) {
|
|
||||||
minimum_x = px;
|
|
||||||
minimum_y = py;
|
|
||||||
init = true;
|
|
||||||
} else {
|
|
||||||
if (px < minimum_x) minimum_x = px;
|
|
||||||
if (py < minimum_y) minimum_y = py;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
qreal diff_x = position.x() - minimum_x;
|
|
||||||
qreal diff_y = position.y() - minimum_y;
|
|
||||||
foreach (Element *added_element, added_elements) {
|
|
||||||
added_element -> setPos(added_element -> pos().x() + diff_x, added_element -> pos().y() + diff_y);
|
|
||||||
}
|
|
||||||
foreach (DiagramTextItem *added_text, added_texts) {
|
|
||||||
added_text -> setPos(added_text -> pos().x() + diff_x, added_text -> pos().y() + diff_y);
|
|
||||||
}
|
|
||||||
foreach (DiagramImageItem *added_image, added_images) {
|
|
||||||
added_image -> setPos(added_image -> pos().x() + diff_x, added_image -> pos().y() + diff_y);
|
|
||||||
}
|
|
||||||
foreach (QetShapeItem *added_shape, added_shapes) {
|
|
||||||
added_shape -> setPos(added_shape -> pos().x() + diff_x, added_shape -> pos().y() + diff_y);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// chargement de tous les Conducteurs du fichier XML
|
|
||||||
QList<Conductor *> added_conductors;
|
QList<Conductor *> added_conductors;
|
||||||
foreach (QDomElement f, QET::findInDomElement(root, "conductors", "conductor")) {
|
foreach (QDomElement f, QET::findInDomElement(root, "conductors", "conductor")) {
|
||||||
if (!Conductor::valideXml(f)) continue;
|
if (!Conductor::valideXml(f)) continue;
|
||||||
@@ -667,6 +630,31 @@ bool Diagram::fromXml(QDomElement &document, QPointF position, bool consider_inf
|
|||||||
}
|
}
|
||||||
} else qDebug() << "Diagram::fromXml() : Le chargement du conducteur" << id_p1 << id_p2 << "a echoue";
|
} else qDebug() << "Diagram::fromXml() : Le chargement du conducteur" << id_p1 << id_p2 << "a echoue";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Translate items if a new position was given in parameter
|
||||||
|
if (position != QPointF()) {
|
||||||
|
|
||||||
|
QList<QGraphicsItem *> added_items;
|
||||||
|
foreach (Element *added_element, added_elements ) added_items << added_element;
|
||||||
|
foreach (Conductor *added_cond, added_conductors) added_items << added_cond;
|
||||||
|
foreach (QetShapeItem *added_shape, added_shapes ) added_items << added_shape;
|
||||||
|
foreach (DiagramTextItem *added_text, added_texts ) added_items << added_text;
|
||||||
|
foreach (DiagramImageItem *added_image, added_images ) added_items << added_image;
|
||||||
|
|
||||||
|
//Get the top left corner of the rectangle that contain all added items
|
||||||
|
QRectF items_rect;
|
||||||
|
foreach (QGraphicsItem *item, added_items) {
|
||||||
|
items_rect = items_rect.united(item -> mapToScene(item -> boundingRect()).boundingRect());
|
||||||
|
}
|
||||||
|
|
||||||
|
QPointF point_ = items_rect.topLeft();
|
||||||
|
QPointF pos_ = Diagram::snapToGrid(QPointF (position.x() - point_.x(),
|
||||||
|
position.y() - point_.y()));
|
||||||
|
|
||||||
|
//Translate all added items
|
||||||
|
foreach (QGraphicsItem *qgi, added_items)
|
||||||
|
qgi -> setPos( qgi -> pos() += pos_);
|
||||||
|
}
|
||||||
|
|
||||||
// remplissage des listes facultatives
|
// remplissage des listes facultatives
|
||||||
if (content_ptr) {
|
if (content_ptr) {
|
||||||
|
|||||||
Reference in New Issue
Block a user