summaryrefslogtreecommitdiff
path: root/tikzit/src/gui/undocommands.cpp
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2017-12-22 13:39:13 +0000
committerAleks Kissinger <aleks0@gmail.com>2017-12-22 13:39:13 +0000
commitd8db367f6a4e49776834c82b092700dbda56cecc (patch)
treef06b386f2a160a8f0b6e8c10e6f4353b3fed3d47 /tikzit/src/gui/undocommands.cpp
parent9d8317cd593d47911bb6b2e6fb8ef0077e24ae36 (diff)
edge bend undo works
Diffstat (limited to 'tikzit/src/gui/undocommands.cpp')
-rw-r--r--tikzit/src/gui/undocommands.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/tikzit/src/gui/undocommands.cpp b/tikzit/src/gui/undocommands.cpp
index c28611f..54741c8 100644
--- a/tikzit/src/gui/undocommands.cpp
+++ b/tikzit/src/gui/undocommands.cpp
@@ -35,3 +35,46 @@ void MoveCommand::redo()
_scene->refreshAdjacentEdges(_newNodePositions.keys());
}
+
+EdgeBendCommand::EdgeBendCommand(TikzScene *scene, Edge *edge,
+ float oldWeight, int oldBend,
+ int oldInAngle, int oldOutAngle) :
+ _scene(scene), _edge(edge),
+ _oldWeight(oldWeight), _oldBend(oldBend),
+ _oldInAngle(oldInAngle), _oldOutAngle(oldOutAngle)
+{
+ _newWeight = edge->weight();
+ _newBend = edge->bend();
+ _newInAngle = edge->inAngle();
+ _newOutAngle = edge->outAngle();
+}
+
+void EdgeBendCommand::undo()
+{
+ _edge->setWeight(_oldWeight);
+ _edge->setBend(_oldBend);
+ _edge->setInAngle(_oldInAngle);
+ _edge->setOutAngle(_oldOutAngle);
+
+ foreach(EdgeItem *ei, _scene->edgeItems()) {
+ if (ei->edge() == _edge) {
+ ei->readPos();
+ break;
+ }
+ }
+}
+
+void EdgeBendCommand::redo()
+{
+ _edge->setWeight(_newWeight);
+ _edge->setBend(_newBend);
+ _edge->setInAngle(_newInAngle);
+ _edge->setOutAngle(_newOutAngle);
+
+ foreach(EdgeItem *ei, _scene->edgeItems()) {
+ if (ei->edge() == _edge) {
+ ei->readPos();
+ break;
+ }
+ }
+}