summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-04-05 15:07:57 +0200
committerAleks Kissinger <aleks0@gmail.com>2018-04-05 15:07:57 +0200
commit9e2116497660509afd417cc3b952ea80bbb72ce5 (patch)
tree040d4bed1ec5891d2eccaaeb42c7e12935263b07
parente57923c7d767f5a532bc35571d74a5470eb76314 (diff)
can now edit node labels
-rw-r--r--src/data/edge.cpp2
-rw-r--r--src/gui/tikzscene.cpp15
-rw-r--r--src/gui/tikzview.cpp2
-rw-r--r--src/gui/undocommands.cpp23
-rw-r--r--src/gui/undocommands.h16
5 files changed, 57 insertions, 1 deletions
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 <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