mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-19 14:50:53 +01:00
Les deplacements d'elements sont desormais annulables
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@137 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
32
element.cpp
32
element.cpp
@@ -3,6 +3,7 @@
|
||||
#include "diagram.h"
|
||||
#include "conducer.h"
|
||||
#include "elementtextitem.h"
|
||||
#include "diagramcommands.h"
|
||||
#include <QtDebug>
|
||||
|
||||
/**
|
||||
@@ -238,32 +239,43 @@ void Element::moveOtherElements(const QPointF &diff) {
|
||||
if (diff.isNull()) return;
|
||||
|
||||
// recupere le schema parent
|
||||
if (!scene()) return;
|
||||
Diagram *diagram = qobject_cast<Diagram *>(scene());
|
||||
if (!diagram) return;
|
||||
Diagram *diagram_ptr = diagram();
|
||||
if (!diagram_ptr) return;
|
||||
|
||||
diagram_ptr -> current_movement += diff;
|
||||
|
||||
// deplace les elements selectionnes
|
||||
foreach(Element *element, diagram -> elementsToMove()) {
|
||||
foreach(Element *element, diagram_ptr -> elementsToMove()) {
|
||||
if (element == this) continue;
|
||||
element -> setPos(element -> pos() + diff);
|
||||
};
|
||||
}
|
||||
|
||||
// deplace certains conducteurs
|
||||
foreach(Conducer *conducer, diagram -> conducersToMove()) {
|
||||
foreach(Conducer *conducer, diagram_ptr -> conducersToMove()) {
|
||||
conducer -> setPos(conducer -> pos() + diff);
|
||||
}
|
||||
|
||||
// recalcule les autres conducteurs
|
||||
const QHash<Conducer *, Terminal *> &conducers_modify = diagram -> conducersToUpdate();
|
||||
const QHash<Conducer *, Terminal *> &conducers_modify = diagram_ptr -> conducersToUpdate();
|
||||
foreach(Conducer *conducer, conducers_modify.keys()) {
|
||||
conducer -> updateWithNewPos(QRectF(), conducers_modify[conducer], conducers_modify[conducer] -> amarrageConducer());
|
||||
}
|
||||
}
|
||||
|
||||
void Element::mouseReleaseEvent(QGraphicsSceneMouseEvent *e) {
|
||||
if (scene()) {
|
||||
Diagram *diagram = qobject_cast<Diagram *>(scene());
|
||||
if (diagram) diagram -> invalidateMovedElements();
|
||||
Diagram *diagram_ptr = diagram();
|
||||
if (diagram_ptr && !diagram_ptr -> current_movement.isNull()) {
|
||||
diagram_ptr -> undoStack().push(
|
||||
new MoveElementsCommand(
|
||||
diagram_ptr,
|
||||
diagram_ptr -> elementsToMove(),
|
||||
diagram_ptr -> conducersToMove(),
|
||||
diagram_ptr -> conducersToUpdate(),
|
||||
diagram_ptr -> current_movement
|
||||
)
|
||||
);
|
||||
diagram_ptr -> invalidateMovedElements();
|
||||
diagram_ptr -> current_movement = QPointF();
|
||||
}
|
||||
QGraphicsItem::mouseReleaseEvent(e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user