diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2017-12-22 13:39:13 +0000 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2017-12-22 13:39:13 +0000 |
commit | d8db367f6a4e49776834c82b092700dbda56cecc (patch) | |
tree | f06b386f2a160a8f0b6e8c10e6f4353b3fed3d47 /tikzit/src/gui/undocommands.cpp | |
parent | 9d8317cd593d47911bb6b2e6fb8ef0077e24ae36 (diff) |
edge bend undo works
Diffstat (limited to 'tikzit/src/gui/undocommands.cpp')
-rw-r--r-- | tikzit/src/gui/undocommands.cpp | 43 |
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; + } + } +} |