summaryrefslogtreecommitdiff
path: root/src/gui/tikzscene.h
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-01-04 16:00:52 +0100
committerAleks Kissinger <aleks0@gmail.com>2018-01-04 16:00:52 +0100
commit738ecbd5fad2b46836bfd6a94aeebf165ae2bbca (patch)
treedf04709807cc9ec8481a3ebc7d80ac25e5b2f457 /src/gui/tikzscene.h
parent0421a96749743868554d44585050b1b3d04864d2 (diff)
relocated source code to the root
Diffstat (limited to 'src/gui/tikzscene.h')
-rw-r--r--src/gui/tikzscene.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h
new file mode 100644
index 0000000..6817792
--- /dev/null
+++ b/src/gui/tikzscene.h
@@ -0,0 +1,62 @@
+/**
+ * Manage the scene, which contains a single Graph, and respond to user input. This serves as
+ * the controller for the MVC (TikzDocument, TikzView, TikzScene).
+ */
+
+#ifndef TIKZSCENE_H
+#define TIKZSCENE_H
+
+#include "graph.h"
+#include "nodeitem.h"
+#include "edgeitem.h"
+#include "tikzdocument.h"
+
+#include <QWidget>
+#include <QGraphicsScene>
+#include <QPainter>
+#include <QRectF>
+#include <QVector>
+#include <QGraphicsEllipseItem>
+#include <QGraphicsSceneMouseEvent>
+
+class TikzScene : public QGraphicsScene
+{
+ Q_OBJECT
+public:
+ TikzScene(TikzDocument *tikzDocument, QObject *parent);
+ ~TikzScene();
+ Graph *graph();
+ QMap<Node*,NodeItem*> &nodeItems();
+ QMap<Edge*,EdgeItem*> &edgeItems();
+ void refreshAdjacentEdges(QList<Node*> nodes);
+ void setBounds(QRectF bounds);
+
+ TikzDocument *tikzDocument() const;
+ void setTikzDocument(TikzDocument *tikzDocument);
+
+public slots:
+ void graphReplaced();
+
+protected:
+ void mousePressEvent(QGraphicsSceneMouseEvent *event) override;
+ void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override;
+ void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override;
+ void keyReleaseEvent(QKeyEvent *event) override;
+private:
+ TikzDocument *_tikzDocument;
+ QMap<Node*,NodeItem*> _nodeItems;
+ QMap<Edge*,EdgeItem*> _edgeItems;
+ QGraphicsLineItem *_drawEdgeItem;
+ EdgeItem *_modifyEdgeItem;
+ bool _firstControlPoint;
+
+ QMap<Node*,QPointF> _oldNodePositions;
+ float _oldWeight;
+ int _oldBend;
+ int _oldInAngle;
+ int _oldOutAngle;
+
+ void getSelection(QSet<Node*> &selNodes, QSet<Edge*> &selEdges);
+};
+
+#endif // TIKZSCENE_H