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/data/edge.cpp | 2 ++ src/gui/tikzscene.cpp | 15 +++++++++++++++ src/gui/tikzview.cpp | 2 +- src/gui/undocommands.cpp | 23 +++++++++++++++++++++++ src/gui/undocommands.h | 16 ++++++++++++++++ 5 files changed, 57 insertions(+), 1 deletion(-) diff --git a/src/data/edge.cpp b/src/data/edge.cpp index bcf127f..5c49aba 100644 --- a/src/data/edge.cpp +++ b/src/data/edge.cpp @@ -248,6 +248,8 @@ void Edge::updateData() if (_source == _target) _data->setAtom("loop"); if (!isSelfLoop() && !isStraight() && _weight != 0.4f) _data->setProperty("looseness", QString::number(_weight*2.5f, 'f', 2)); + if (_source->style()->isNone()) _sourceAnchor = "center"; + if (_target->style()->isNone()) _targetAnchor = "center"; } 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