/** * 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 #include #include #include #include #include #include class TikzScene : public QGraphicsScene { Q_OBJECT public: TikzScene(TikzDocument *tikzDocument, QObject *parent); ~TikzScene(); Graph *graph() const; QVector nodeItems() const; QVector edgeItems() const; void refreshAdjacentEdges(QList nodes); TikzDocument *tikzDocument() const; void setTikzDocument(TikzDocument *tikzDocument); public slots: void graphReplaced(); protected: void mousePressEvent(QGraphicsSceneMouseEvent *event); void mouseMoveEvent(QGraphicsSceneMouseEvent *event); void mouseReleaseEvent(QGraphicsSceneMouseEvent *event); private: TikzDocument *_tikzDocument; QVector _nodeItems; QVector _edgeItems; EdgeItem *_modifyEdgeItem; bool _firstControlPoint; QMap _oldNodePositions; float _oldWeight; int _oldBend; int _oldInAngle; int _oldOutAngle; }; #endif // TIKZSCENE_H