summaryrefslogtreecommitdiff
path: root/src/gui/tikzscene.cpp
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-01-14 18:50:34 +0100
committerAleks Kissinger <aleks0@gmail.com>2018-01-14 18:50:34 +0100
commitb7af46fb5b23890387628528c2cf6e310fc96c25 (patch)
tree639c9e1fa5d6e39210a4403875c7816e3759e68d /src/gui/tikzscene.cpp
parent1302198001ddba65c825d213476b2e049d376d08 (diff)
add edge implementation 1/2
Diffstat (limited to 'src/gui/tikzscene.cpp')
-rw-r--r--src/gui/tikzscene.cpp29
1 files changed, 22 insertions, 7 deletions
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<NodeItem*>(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<NodeItem*>(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);