diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-09-22 14:05:32 +0200 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-09-22 14:05:32 +0200 |
commit | 82e1e16580b4832e1241ceb9e38906e660baec85 (patch) | |
tree | 9e3cc867e7c455e1b5652380dc18878e48de5a67 /src/gui/tikzscene.cpp | |
parent | 93cf29d4f47ac20cc0b1162284304b2e75bb777c (diff) |
extend selection
Diffstat (limited to 'src/gui/tikzscene.cpp')
-rw-r--r-- | src/gui/tikzscene.cpp | 75 |
1 files changed, 72 insertions, 3 deletions
diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index 1c6f0bb..947620f 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -105,6 +105,78 @@ void TikzScene::graphReplaced() } } +void TikzScene::extendSelectionUp() +{ + bool found = false; + float m = 0.0f; + foreach (Node *n, getSelectedNodes()) { + if (!found) { + m = n->point().y(); + found = true; + } else { + if (n->point().y() > m) m = n->point().y(); + } + } + + foreach (NodeItem *ni, nodeItems().values()) { + if (ni->node()->point().y() >= m) ni->setSelected(true); + } +} + +void TikzScene::extendSelectionDown() +{ + bool found = false; + float m = 0.0f; + foreach (Node *n, getSelectedNodes()) { + if (!found) { + m = n->point().y(); + found = true; + } else { + if (n->point().y() < m) m = n->point().y(); + } + } + + foreach (NodeItem *ni, nodeItems().values()) { + if (ni->node()->point().y() <= m) ni->setSelected(true); + } +} + +void TikzScene::extendSelectionLeft() +{ + bool found = false; + float m = 0.0f; + foreach (Node *n, getSelectedNodes()) { + if (!found) { + m = n->point().x(); + found = true; + } else { + if (n->point().x() < m) m = n->point().x(); + } + } + + foreach (NodeItem *ni, nodeItems().values()) { + if (ni->node()->point().x() <= m) ni->setSelected(true); + } +} + +void TikzScene::extendSelectionRight() +{ + bool found = false; + float m = 0.0f; + foreach (Node *n, getSelectedNodes()) { + if (!found) { + m = n->point().x(); + found = true; + } else { + if (n->point().x() < m) m = n->point().x(); + } + } + + foreach (NodeItem *ni, nodeItems().values()) { + if (ni->node()->point().x() >= m) ni->setSelected(true); + } +} + void TikzScene::mousePressEvent(QGraphicsSceneMouseEvent *event) { if (!_enabled) return; @@ -642,11 +714,8 @@ void TikzScene::pasteFromClipboard() // attempt to parse whatever's on the clipboard, if we get a // non-empty tikz graph, insert it. if (ass.parse(tikz) && !g->nodes().isEmpty()) { - qDebug() << "CLIPBOARD:" << tikz; - qDebug() << "PARSED:" << g->tikz(); // make sure names in the new subgraph are fresh g->renameApart(graph()); - qDebug() << "FRESH:" << g->tikz(); QRectF srcRect = g->realBbox(); QRectF tgtRect = graph()->realBbox(); |