summaryrefslogtreecommitdiff
path: root/src/gui/tikzscene.cpp
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-09-23 12:30:08 +0200
committerAleks Kissinger <aleks0@gmail.com>2018-09-23 12:30:08 +0200
commitfa3d7da179b25d2ece40b56f5f9adddb3831906e (patch)
treed72e9857113920d6aeda060ec43b4dc83c4ea26f /src/gui/tikzscene.cpp
parent1ca36f064da2a3619f0f8058f48e9f9dc6d07436 (diff)
added reordering of nodes and edges
Diffstat (limited to 'src/gui/tikzscene.cpp')
-rw-r--r--src/gui/tikzscene.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp
index 39f8b76..b9afe4a 100644
--- a/src/gui/tikzscene.cpp
+++ b/src/gui/tikzscene.cpp
@@ -179,6 +179,35 @@ void TikzScene::extendSelectionRight()
}
}
+void TikzScene::reorderSelection(bool toFront)
+{
+ QVector<Node*> nodeOrd, nodeOrd1;
+ QVector<Edge*> edgeOrd, edgeOrd1;
+ QSet<Node*> selNodes;
+ QSet<Edge*> selEdges;
+ getSelection(selNodes, selEdges);
+ foreach (Node *n, graph()->nodes()) {
+ if (selNodes.contains(n)) nodeOrd1 << n;
+ else nodeOrd << n;
+ }
+
+ foreach (Edge *e, graph()->edges()) {
+ if (selEdges.contains(e)) edgeOrd1 << e;
+ else edgeOrd << e;
+ }
+
+ if (toFront) {
+ nodeOrd += nodeOrd1;
+ edgeOrd += edgeOrd1;
+ } else {
+ nodeOrd = nodeOrd1 + nodeOrd;
+ edgeOrd = edgeOrd1 + edgeOrd;
+ }
+
+ ReorderCommand *cmd = new ReorderCommand(this, graph()->nodes(), nodeOrd, graph()->edges(), edgeOrd);
+ _tikzDocument->undoStack()->push(cmd);
+}
+
void TikzScene::refreshZIndices()
{
qreal z = 0.0;