diff options
Diffstat (limited to 'src/gui/undocommands.h')
-rw-r--r-- | src/gui/undocommands.h | 388 |
1 files changed, 194 insertions, 194 deletions
diff --git a/src/gui/undocommands.h b/src/gui/undocommands.h index 292632e..9164f01 100644 --- a/src/gui/undocommands.h +++ b/src/gui/undocommands.h @@ -1,194 +1,194 @@ -/* - TikZiT - a GUI diagram editor for TikZ - Copyright (C) 2018 Aleks Kissinger - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. -*/ - -/*! - * \file undocommands.h - * - * 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> -#include <QSet> - -class GraphUpdateCommand : public QUndoCommand { -public: - explicit GraphUpdateCommand(TikzScene *scene, - QUndoCommand *parent = 0); - void undo() override; - void redo() override; -protected: - TikzScene *_scene; -}; - -class MoveCommand : public GraphUpdateCommand -{ -public: - explicit MoveCommand(TikzScene *scene, - QMap<Node*,QPointF> oldNodePositions, - QMap<Node*,QPointF> newNodePositions, - QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - QMap<Node*,QPointF> _oldNodePositions; - QMap<Node*,QPointF> _newNodePositions; -}; - -class EdgeBendCommand : public GraphUpdateCommand -{ -public: - explicit EdgeBendCommand(TikzScene *scene, Edge *edge, - float oldWeight, int oldBend, - int oldInAngle, int oldOutAngle, - QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - Edge *_edge; - float _oldWeight; - int _oldBend; - int _oldInAngle; - int _oldOutAngle; - float _newWeight; - int _newBend; - int _newInAngle; - int _newOutAngle; -}; - -class DeleteCommand : public GraphUpdateCommand -{ -public: - explicit DeleteCommand(TikzScene *scene, - QMap<int,Node*> deleteNodes, - QMap<int,Edge*> deleteEdges, - QSet<Edge*> selEdges, - QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - QMap<int,Node*> _deleteNodes; - QMap<int,Edge*> _deleteEdges; - QSet<Edge*> _selEdges; -}; - -class AddNodeCommand : public GraphUpdateCommand -{ -public: - explicit AddNodeCommand(TikzScene *scene, Node *node, QRectF newBounds, - QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - Node *_node; - QRectF _oldBounds; - QRectF _newBounds; -}; - -class AddEdgeCommand : public GraphUpdateCommand -{ -public: - explicit AddEdgeCommand(TikzScene *scene, Edge *edge, QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - Edge *_edge; -}; - -class ChangeEdgeModeCommand : public GraphUpdateCommand -{ -public: - explicit ChangeEdgeModeCommand(TikzScene *scene, Edge *edge, QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - Edge *_edge; -}; - -class ApplyStyleToNodesCommand : public GraphUpdateCommand -{ -public: - explicit ApplyStyleToNodesCommand(TikzScene *scene, QString style, QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - QString _style; - QMap<Node*,QString> _oldStyles; -}; - -class ApplyStyleToEdgesCommand : public GraphUpdateCommand -{ -public: - explicit ApplyStyleToEdgesCommand(TikzScene *scene, QString style, QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - QString _style; - QMap<Edge*, QString> _oldStyles; -}; - -class PasteCommand : public GraphUpdateCommand -{ -public: - explicit PasteCommand(TikzScene *scene, Graph *graph, QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - Graph *_graph; - QSet<Node*> _oldSelectedNodes; - QSet<Edge*> _oldSelectedEdges; -}; - -class ChangeLabelCommand : public GraphUpdateCommand -{ -public: - explicit ChangeLabelCommand(TikzScene *scene, - Graph *graph, - QMap<Node*,QString> oldLabels, - QString newLabel, - QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - Graph *_graph; - QMap<Node*,QString> _oldLabels; - QString _newLabel; -}; - -class ReplaceGraphCommand : public GraphUpdateCommand -{ -public: - explicit ReplaceGraphCommand(TikzScene *scene, - Graph *oldGraph, - Graph *newGraph, - QUndoCommand *parent = 0); - void undo() override; - void redo() override; -private: - Graph *_oldGraph; - Graph *_newGraph; -}; - -#endif // UNDOCOMMANDS_H +/*
+ TikZiT - a GUI diagram editor for TikZ
+ Copyright (C) 2018 Aleks Kissinger
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
+*/
+
+/*!
+ * \file undocommands.h
+ *
+ * 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>
+#include <QSet>
+
+class GraphUpdateCommand : public QUndoCommand {
+public:
+ explicit GraphUpdateCommand(TikzScene *scene,
+ QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+protected:
+ TikzScene *_scene;
+};
+
+class MoveCommand : public GraphUpdateCommand
+{
+public:
+ explicit MoveCommand(TikzScene *scene,
+ QMap<Node*,QPointF> oldNodePositions,
+ QMap<Node*,QPointF> newNodePositions,
+ QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ QMap<Node*,QPointF> _oldNodePositions;
+ QMap<Node*,QPointF> _newNodePositions;
+};
+
+class EdgeBendCommand : public GraphUpdateCommand
+{
+public:
+ explicit EdgeBendCommand(TikzScene *scene, Edge *edge,
+ float oldWeight, int oldBend,
+ int oldInAngle, int oldOutAngle,
+ QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ Edge *_edge;
+ float _oldWeight;
+ int _oldBend;
+ int _oldInAngle;
+ int _oldOutAngle;
+ float _newWeight;
+ int _newBend;
+ int _newInAngle;
+ int _newOutAngle;
+};
+
+class DeleteCommand : public GraphUpdateCommand
+{
+public:
+ explicit DeleteCommand(TikzScene *scene,
+ QMap<int,Node*> deleteNodes,
+ QMap<int,Edge*> deleteEdges,
+ QSet<Edge*> selEdges,
+ QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ QMap<int,Node*> _deleteNodes;
+ QMap<int,Edge*> _deleteEdges;
+ QSet<Edge*> _selEdges;
+};
+
+class AddNodeCommand : public GraphUpdateCommand
+{
+public:
+ explicit AddNodeCommand(TikzScene *scene, Node *node, QRectF newBounds,
+ QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ Node *_node;
+ QRectF _oldBounds;
+ QRectF _newBounds;
+};
+
+class AddEdgeCommand : public GraphUpdateCommand
+{
+public:
+ explicit AddEdgeCommand(TikzScene *scene, Edge *edge, QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ Edge *_edge;
+};
+
+class ChangeEdgeModeCommand : public GraphUpdateCommand
+{
+public:
+ explicit ChangeEdgeModeCommand(TikzScene *scene, Edge *edge, QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ Edge *_edge;
+};
+
+class ApplyStyleToNodesCommand : public GraphUpdateCommand
+{
+public:
+ explicit ApplyStyleToNodesCommand(TikzScene *scene, QString style, QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ QString _style;
+ QMap<Node*,QString> _oldStyles;
+};
+
+class ApplyStyleToEdgesCommand : public GraphUpdateCommand
+{
+public:
+ explicit ApplyStyleToEdgesCommand(TikzScene *scene, QString style, QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ QString _style;
+ QMap<Edge*, QString> _oldStyles;
+};
+
+class PasteCommand : public GraphUpdateCommand
+{
+public:
+ explicit PasteCommand(TikzScene *scene, Graph *graph, QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ Graph *_graph;
+ QSet<Node*> _oldSelectedNodes;
+ QSet<Edge*> _oldSelectedEdges;
+};
+
+class ChangeLabelCommand : public GraphUpdateCommand
+{
+public:
+ explicit ChangeLabelCommand(TikzScene *scene,
+ Graph *graph,
+ QMap<Node*,QString> oldLabels,
+ QString newLabel,
+ QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ Graph *_graph;
+ QMap<Node*,QString> _oldLabels;
+ QString _newLabel;
+};
+
+class ReplaceGraphCommand : public GraphUpdateCommand
+{
+public:
+ explicit ReplaceGraphCommand(TikzScene *scene,
+ Graph *oldGraph,
+ Graph *newGraph,
+ QUndoCommand *parent = 0);
+ void undo() override;
+ void redo() override;
+private:
+ Graph *_oldGraph;
+ Graph *_newGraph;
+};
+
+#endif // UNDOCOMMANDS_H
|