diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-01-04 16:00:52 +0100 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-01-04 16:00:52 +0100 |
commit | 738ecbd5fad2b46836bfd6a94aeebf165ae2bbca (patch) | |
tree | df04709807cc9ec8481a3ebc7d80ac25e5b2f457 /src/gui/undocommands.h | |
parent | 0421a96749743868554d44585050b1b3d04864d2 (diff) |
relocated source code to the root
Diffstat (limited to 'src/gui/undocommands.h')
-rw-r--r-- | src/gui/undocommands.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/gui/undocommands.h b/src/gui/undocommands.h new file mode 100644 index 0000000..ffff876 --- /dev/null +++ b/src/gui/undocommands.h @@ -0,0 +1,80 @@ +/** + * All changes to a TikzDocument are done via subclasses of QUndoCommand. When a controller + * (e.g. TikzScene) gets input from the user to change the document, it will push one of + * these commands onto the TikzDocument's undo stack, which automatically calls the redo() + * method of the command. + */ + +#ifndef UNDOCOMMANDS_H +#define UNDOCOMMANDS_H + +#include "tikzscene.h" + +#include <QUndoCommand> + +class MoveCommand : public QUndoCommand +{ +public: + explicit MoveCommand(TikzScene *scene, + QMap<Node*,QPointF> oldNodePositions, + QMap<Node*,QPointF> newNodePositions, + QUndoCommand *parent = 0); + void undo() override; + void redo() override; +private: + TikzScene *_scene; + QMap<Node*,QPointF> _oldNodePositions; + QMap<Node*,QPointF> _newNodePositions; +}; + +class EdgeBendCommand : public QUndoCommand +{ +public: + explicit EdgeBendCommand(TikzScene *scene, Edge *edge, + float oldWeight, int oldBend, + int oldInAngle, int oldOutAngle); + void undo() override; + void redo() override; +private: + TikzScene *_scene; + Edge *_edge; + float _oldWeight; + int _oldBend; + int _oldInAngle; + int _oldOutAngle; + float _newWeight; + int _newBend; + int _newInAngle; + int _newOutAngle; +}; + +class DeleteCommand : public QUndoCommand +{ +public: + explicit DeleteCommand(TikzScene *scene, + QMap<int,Node*> deleteNodes, + QMap<int,Edge*> deleteEdges, + QSet<Edge*> selEdges); + void undo() override; + void redo() override; +private: + TikzScene *_scene; + QMap<int,Node*> _deleteNodes; + QMap<int,Edge*> _deleteEdges; + QSet<Edge*> _selEdges; +}; + +class AddNodeCommand : public QUndoCommand +{ +public: + explicit AddNodeCommand(TikzScene *scene, Node *node, QRectF newBounds); + void undo() override; + void redo() override; +private: + TikzScene *_scene; + Node *_node; + QRectF _oldBounds; + QRectF _newBounds; +}; + +#endif // UNDOCOMMANDS_H |