From 9e2116497660509afd417cc3b952ea80bbb72ce5 Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Thu, 5 Apr 2018 15:07:57 +0200 Subject: can now edit node labels --- src/gui/tikzscene.cpp | 15 +++++++++++++++ src/gui/tikzview.cpp | 2 +- src/gui/undocommands.cpp | 23 +++++++++++++++++++++++ src/gui/undocommands.h | 16 ++++++++++++++++ 4 files changed, 55 insertions(+), 1 deletion(-) (limited to 'src/gui') 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 #include #include +#include #include @@ -444,6 +445,20 @@ void TikzScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) _tikzDocument->undoStack()->push(cmd); break; } + + if (NodeItem *ni = dynamic_cast(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 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 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 _oldSelection; }; +class ChangeLabelCommand : public GraphUpdateCommand +{ +public: + explicit ChangeLabelCommand(TikzScene *scene, + Graph *graph, + QMap oldLabels, + QString newLabel, + QUndoCommand *parent = 0); + void undo() override; + void redo() override; +private: + Graph *_graph; + QMap _oldLabels; + QString _newLabel; +}; + #endif // UNDOCOMMANDS_H -- cgit v1.2.3