diff options
Diffstat (limited to 'tikzit/src/gui/tikzscene.cpp')
-rw-r--r-- | tikzit/src/gui/tikzscene.cpp | 61 |
1 files changed, 55 insertions, 6 deletions
diff --git a/tikzit/src/gui/tikzscene.cpp b/tikzit/src/gui/tikzscene.cpp index 058835d..cd88f4e 100644 --- a/tikzit/src/gui/tikzscene.cpp +++ b/tikzit/src/gui/tikzscene.cpp @@ -1,3 +1,8 @@ +/** + * Manage the scene, which contains a single Graph, and respond to user input. This serves as + * the controller for the MVC (Graph, TikzView, TikzScene). + */ + #include "tikzit.h" #include "tikzscene.h" @@ -9,7 +14,9 @@ TikzScene::TikzScene(Graph *graph, QObject *parent) : QGraphicsScene(parent), _graph(graph) { +} +TikzScene::~TikzScene() { } Graph *TikzScene::graph() const @@ -52,23 +59,65 @@ void TikzScene::graphReplaced() void TikzScene::mousePressEvent(QGraphicsSceneMouseEvent *event) { - // TODO: check if we grabbed a control point + QPointF mousePos(event->buttonDownScenePos(Qt::LeftButton).x(), + event->buttonDownScenePos(Qt::LeftButton).y()); - QGraphicsScene::mousePressEvent(event); + + switch (tikzit->toolPalette()->currentTool()) { + case ToolPalette::SELECT: + // TODO: check if we grabbed a control point + QGraphicsScene::mousePressEvent(event); + if (!selectedItems().empty() && !items(mousePos).empty()) { + _oldNodePositions = new QHash<NodeItem*,QPointF>(); + for (QGraphicsItem *gi : selectedItems()) { + if (NodeItem *ni = dynamic_cast<NodeItem*>(gi)) { + _oldNodePositions-> + } + } + qDebug() << "I am dragging"; + } + break; + case ToolPalette::VERTEX: + break; + case ToolPalette::EDGE: + break; + case ToolPalette::CROP: + break; + } } void TikzScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) { - //foreach (Edge *e, _graph->edges()) { e->updateControls(); } + switch (tikzit->toolPalette()->currentTool()) { + case ToolPalette::SELECT: + QGraphicsScene::mouseMoveEvent(event); + break; + case ToolPalette::VERTEX: + break; + case ToolPalette::EDGE: + break; + case ToolPalette::CROP: + break; + } + + // TODO: only sync edges that change foreach (EdgeItem *ei, edgeItems) { ei->edge()->updateControls(); ei->syncPos(); } - - QGraphicsScene::mouseMoveEvent(event); } void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) { - QGraphicsScene::mouseReleaseEvent(event); + switch (tikzit->toolPalette()->currentTool()) { + case ToolPalette::SELECT: + QGraphicsScene::mouseReleaseEvent(event); + break; + case ToolPalette::VERTEX: + break; + case ToolPalette::EDGE: + break; + case ToolPalette::CROP: + break; + } } |