summaryrefslogtreecommitdiff
path: root/src
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
parent1302198001ddba65c825d213476b2e049d376d08 (diff)
add edge implementation 1/2
Diffstat (limited to 'src')
-rw-r--r--src/gui/tikzscene.cpp29
-rw-r--r--src/gui/tikzscene.h2
2 files changed, 24 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);
diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h
index 936d42e..5e236d7 100644
--- a/src/gui/tikzscene.h
+++ b/src/gui/tikzscene.h
@@ -48,6 +48,8 @@ private:
QMap<Edge*,EdgeItem*> _edgeItems;
QGraphicsLineItem *_drawEdgeItem;
EdgeItem *_modifyEdgeItem;
+ NodeItem *_edgeStartNodeItem;
+ NodeItem *_edgeEndNodeItem;
bool _firstControlPoint;
QMap<Node*,QPointF> _oldNodePositions;