diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-04-05 15:07:57 +0200 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-04-05 15:07:57 +0200 |
commit | 9e2116497660509afd417cc3b952ea80bbb72ce5 (patch) | |
tree | 040d4bed1ec5891d2eccaaeb42c7e12935263b07 /src/gui | |
parent | e57923c7d767f5a532bc35571d74a5470eb76314 (diff) |
can now edit node labels
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/tikzscene.cpp | 15 | ||||
-rw-r--r-- | src/gui/tikzview.cpp | 2 | ||||
-rw-r--r-- | src/gui/undocommands.cpp | 23 | ||||
-rw-r--r-- | src/gui/undocommands.h | 16 |
4 files changed, 55 insertions, 1 deletions
diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index 8378f5e..ffc111c 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -8,6 +8,7 @@ #include <QBrush> #include <QDebug> #include <QClipboard> +#include <QInputDialog> #include <cmath> @@ -444,6 +445,20 @@ void TikzScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) _tikzDocument->undoStack()->push(cmd); break; } + + if (NodeItem *ni = dynamic_cast<NodeItem*>(gi)) { + bool ok; + QString newLabel = QInputDialog::getText(views()[0], tr("Node label"), + tr("Label:"), QLineEdit::Normal, + ni->node()->label(), &ok); + if (ok && !newLabel.isEmpty()) { + QMap<Node*,QString> oldLabels; + oldLabels.insert(ni->node(), ni->node()->label()); + ChangeLabelCommand *cmd = new ChangeLabelCommand(this, graph(), oldLabels, newLabel); + _tikzDocument->undoStack()->push(cmd); + } + break; + } } } diff --git a/src/gui/tikzview.cpp b/src/gui/tikzview.cpp index 60dc2bc..60db665 100644 --- a/src/gui/tikzview.cpp +++ b/src/gui/tikzview.cpp @@ -6,7 +6,7 @@ TikzView::TikzView(QWidget *parent) : QGraphicsView(parent) { - setRenderHint(QPainter::Antialiasing); + //setRenderHint(QPainter::Antialiasing); //setDragMode(QGraphicsView::RubberBandDrag); _scale = 1.0f; diff --git a/src/gui/undocommands.cpp b/src/gui/undocommands.cpp index f64b1db..32fafbe 100644 --- a/src/gui/undocommands.cpp +++ b/src/gui/undocommands.cpp @@ -328,3 +328,26 @@ void PasteCommand::redo() GraphUpdateCommand::redo(); } + +ChangeLabelCommand::ChangeLabelCommand(TikzScene *scene, Graph *graph, QMap<Node *, QString> oldLabels, QString newLabel, QUndoCommand *parent) : + GraphUpdateCommand(scene, parent), _oldLabels(oldLabels), _newLabel(newLabel) +{ +} + +void ChangeLabelCommand::undo() +{ + foreach (Node *n, _oldLabels.keys()) { + n->setLabel(_oldLabels[n]); + } + + GraphUpdateCommand::undo(); +} + +void ChangeLabelCommand::redo() +{ + foreach (Node *n, _oldLabels.keys()) { + n->setLabel(_newLabel); + } + + GraphUpdateCommand::redo(); +} diff --git a/src/gui/undocommands.h b/src/gui/undocommands.h index 354e455..e716458 100644 --- a/src/gui/undocommands.h +++ b/src/gui/undocommands.h @@ -130,4 +130,20 @@ private: QList<QGraphicsItem*> _oldSelection; }; +class ChangeLabelCommand : public GraphUpdateCommand +{ +public: + explicit ChangeLabelCommand(TikzScene *scene, + Graph *graph, + QMap<Node*,QString> oldLabels, + QString newLabel, + QUndoCommand *parent = 0); + void undo() override; + void redo() override; +private: + Graph *_graph; + QMap<Node*,QString> _oldLabels; + QString _newLabel; +}; + #endif // UNDOCOMMANDS_H |