diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-09-23 12:30:08 +0200 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-09-23 12:30:08 +0200 |
commit | fa3d7da179b25d2ece40b56f5f9adddb3831906e (patch) | |
tree | d72e9857113920d6aeda060ec43b4dc83c4ea26f /src/gui/tikzscene.cpp | |
parent | 1ca36f064da2a3619f0f8058f48e9f9dc6d07436 (diff) |
added reordering of nodes and edges
Diffstat (limited to 'src/gui/tikzscene.cpp')
-rw-r--r-- | src/gui/tikzscene.cpp | 29 |
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; |