summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tikzit/src/gui/mainwindow.ui4
-rw-r--r--tikzit/src/gui/tikzscene.cpp32
-rw-r--r--tikzit/src/gui/tikzscene.h2
-rw-r--r--tikzit/src/gui/tikzview.cpp1
-rw-r--r--tikzit/src/gui/undocommands.cpp13
-rw-r--r--tikzit/src/gui/undocommands.h4
-rw-r--r--tikzit/tikzit.pro.user2
7 files changed, 50 insertions, 8 deletions
diff --git a/tikzit/src/gui/mainwindow.ui b/tikzit/src/gui/mainwindow.ui
index 8c7e8ae..56a5c2d 100644
--- a/tikzit/src/gui/mainwindow.ui
+++ b/tikzit/src/gui/mainwindow.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>476</width>
- <height>378</height>
+ <width>640</width>
+ <height>480</height>
</rect>
</property>
<property name="windowTitle">
diff --git a/tikzit/src/gui/tikzscene.cpp b/tikzit/src/gui/tikzscene.cpp
index 2d9b49f..3431c0c 100644
--- a/tikzit/src/gui/tikzscene.cpp
+++ b/tikzit/src/gui/tikzscene.cpp
@@ -12,6 +12,16 @@ TikzScene::TikzScene(TikzDocument *tikzDocument, QObject *parent) :
QGraphicsScene(parent), _tikzDocument(tikzDocument)
{
_modifyEdgeItem = 0;
+ _drawEdgeItem = new QGraphicsLineItem();
+ setSceneRect(-310,-230,620,450);
+
+ QPen pen;
+ pen.setColor(QColor::fromRgbF(0.5f, 0.0f, 0.5f));
+ pen.setWidth(3);
+ _drawEdgeItem->setPen(pen);
+ _drawEdgeItem->setLine(0,0,0,0);
+ _drawEdgeItem->setVisible(false);
+ addItem(_drawEdgeItem);
}
TikzScene::~TikzScene() {
@@ -272,7 +282,13 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
QPointF gridPos(round(mousePos.x()/gridSize)*gridSize, round(mousePos.y()/gridSize)*gridSize);
Node *n = new Node();
n->setPoint(fromScreen(gridPos));
- AddNodeCommand *cmd = new AddNodeCommand(this, n);
+
+ 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;
+
+ AddNodeCommand *cmd = new AddNodeCommand(this, n, newBounds);
_tikzDocument->undoStack()->push(cmd);
}
break;
@@ -343,6 +359,20 @@ void TikzScene::refreshAdjacentEdges(QList<Node*> nodes)
}
}
+void TikzScene::setBounds(QRectF bounds)
+{
+ if (bounds != sceneRect()) {
+ if (!views().empty()) {
+ QGraphicsView *v = views().first();
+ QPointF c = v->mapToScene(v->viewport()->rect().center());
+ setSceneRect(bounds);
+ v->centerOn(c);
+ } else {
+ setSceneRect(bounds);
+ }
+ }
+}
+
QMap<Node*,NodeItem *> &TikzScene::nodeItems()
{
return _nodeItems;
diff --git a/tikzit/src/gui/tikzscene.h b/tikzit/src/gui/tikzscene.h
index a9af34b..6817792 100644
--- a/tikzit/src/gui/tikzscene.h
+++ b/tikzit/src/gui/tikzscene.h
@@ -29,6 +29,7 @@ public:
QMap<Node*,NodeItem*> &nodeItems();
QMap<Edge*,EdgeItem*> &edgeItems();
void refreshAdjacentEdges(QList<Node*> nodes);
+ void setBounds(QRectF bounds);
TikzDocument *tikzDocument() const;
void setTikzDocument(TikzDocument *tikzDocument);
@@ -45,6 +46,7 @@ private:
TikzDocument *_tikzDocument;
QMap<Node*,NodeItem*> _nodeItems;
QMap<Edge*,EdgeItem*> _edgeItems;
+ QGraphicsLineItem *_drawEdgeItem;
EdgeItem *_modifyEdgeItem;
bool _firstControlPoint;
diff --git a/tikzit/src/gui/tikzview.cpp b/tikzit/src/gui/tikzview.cpp
index a83c9ec..fe6c401 100644
--- a/tikzit/src/gui/tikzview.cpp
+++ b/tikzit/src/gui/tikzview.cpp
@@ -7,6 +7,7 @@ TikzView::TikzView(QWidget *parent) : QGraphicsView(parent)
{
setRenderHint(QPainter::Antialiasing);
setDragMode(QGraphicsView::RubberBandDrag);
+
_scale = 1.0f;
}
diff --git a/tikzit/src/gui/undocommands.cpp b/tikzit/src/gui/undocommands.cpp
index 997bf75..736c258 100644
--- a/tikzit/src/gui/undocommands.cpp
+++ b/tikzit/src/gui/undocommands.cpp
@@ -2,6 +2,8 @@
#include "nodeitem.h"
#include "edgeitem.h"
+#include <QGraphicsView>
+
MoveCommand::MoveCommand(TikzScene *scene,
QMap<Node*, QPointF> oldNodePositions,
QMap<Node*, QPointF> newNodePositions,
@@ -131,9 +133,10 @@ void DeleteCommand::redo()
}
}
-AddNodeCommand::AddNodeCommand(TikzScene *scene, Node *node) :
- _scene(scene), _node(node)
-{}
+AddNodeCommand::AddNodeCommand(TikzScene *scene, Node *node, QRectF newBounds) :
+ _scene(scene), _node(node), _oldBounds(_scene->sceneRect()), _newBounds(newBounds)
+{
+}
void AddNodeCommand::undo()
{
@@ -143,6 +146,8 @@ void AddNodeCommand::undo()
delete ni;
_scene->graph()->removeNode(_node);
+
+ _scene->setBounds(_oldBounds);
}
void AddNodeCommand::redo()
@@ -152,4 +157,6 @@ void AddNodeCommand::redo()
NodeItem *ni = new NodeItem(_node);
_scene->nodeItems().insert(_node, ni);
_scene->addItem(ni);
+
+ _scene->setBounds(_newBounds);
}
diff --git a/tikzit/src/gui/undocommands.h b/tikzit/src/gui/undocommands.h
index c1b4910..ffff876 100644
--- a/tikzit/src/gui/undocommands.h
+++ b/tikzit/src/gui/undocommands.h
@@ -67,12 +67,14 @@ private:
class AddNodeCommand : public QUndoCommand
{
public:
- explicit AddNodeCommand(TikzScene *scene, Node *node);
+ explicit AddNodeCommand(TikzScene *scene, Node *node, QRectF newBounds);
void undo() override;
void redo() override;
private:
TikzScene *_scene;
Node *_node;
+ QRectF _oldBounds;
+ QRectF _newBounds;
};
#endif // UNDOCOMMANDS_H
diff --git a/tikzit/tikzit.pro.user b/tikzit/tikzit.pro.user
index dd7fece..a068897 100644
--- a/tikzit/tikzit.pro.user
+++ b/tikzit/tikzit.pro.user
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.2.0, 2017-11-05T18:40:52. -->
+<!-- Written by QtCreator 4.2.0, 2017-12-30T20:50:16. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>