From b7af46fb5b23890387628528c2cf6e310fc96c25 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Sun, 14 Jan 2018 18:50:34 +0100 Subject: add edge implementation 1/2 --- src/gui/tikzscene.cpp | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'src/gui/tikzscene.cpp') diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index edc1af4..1d7ebd0 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -12,6 +12,7 @@ TikzScene::TikzScene(TikzDocument *tikzDocument, QObject *parent) : QGraphicsScene(parent), _tikzDocument(tikzDocument) { _modifyEdgeItem = 0; + _edgeStartNodeItem = 0; _drawEdgeItem = new QGraphicsLineItem(); setSceneRect(-310,-230,620,450); @@ -124,10 +125,15 @@ void TikzScene::mousePressEvent(QGraphicsSceneMouseEvent *event) case ToolPalette::VERTEX: break; case ToolPalette::EDGE: - { - QLineF line(mousePos,mousePos); - _drawEdgeItem->setLine(line); - _drawEdgeItem->setVisible(true); + foreach (QGraphicsItem *gi, items(mousePos)) { + if (NodeItem *ni = dynamic_cast(gi)){ + _edgeStartNodeItem = ni; + _edgeEndNodeItem = ni; + QLineF line(toScreen(ni->node()->point()), mousePos); + _drawEdgeItem->setLine(line); + _drawEdgeItem->setVisible(true); + break; + } } break; case ToolPalette::CROP: @@ -232,8 +238,17 @@ void TikzScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event) break; case ToolPalette::EDGE: if (_drawEdgeItem->isVisible()) { + _edgeEndNodeItem = 0; + foreach (QGraphicsItem *gi, items(mousePos)) { + if (NodeItem *ni = dynamic_cast(gi)){ + _edgeEndNodeItem = ni; + break; + } + } QPointF p1 = _drawEdgeItem->line().p1(); - QLineF line(p1, mousePos); + QPointF p2 = (_edgeEndNodeItem != 0) ? toScreen(_edgeEndNodeItem->node()->point()) : mousePos; + QLineF line(p1, p2); + _drawEdgeItem->setLine(line); } break; @@ -295,8 +310,8 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) QRectF grow(gridPos.x() - GLOBAL_SCALEF, gridPos.y() - GLOBAL_SCALEF, 2 * GLOBAL_SCALEF, 2 * GLOBAL_SCALEF); QRectF newBounds = sceneRect().united(grow); - qDebug() << grow; - qDebug() << newBounds; + //qDebug() << grow; + //qDebug() << newBounds; AddNodeCommand *cmd = new AddNodeCommand(this, n, newBounds); _tikzDocument->undoStack()->push(cmd); -- cgit v1.2.3