diff options
Diffstat (limited to 'tikzit')
-rw-r--r-- | tikzit/src/gui/mainwindow.ui | 4 | ||||
-rw-r--r-- | tikzit/src/gui/tikzscene.cpp | 32 | ||||
-rw-r--r-- | tikzit/src/gui/tikzscene.h | 2 | ||||
-rw-r--r-- | tikzit/src/gui/tikzview.cpp | 1 | ||||
-rw-r--r-- | tikzit/src/gui/undocommands.cpp | 13 | ||||
-rw-r--r-- | tikzit/src/gui/undocommands.h | 4 | ||||
-rw-r--r-- | tikzit/tikzit.pro.user | 2 |
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> |