summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2019-01-11 11:53:45 +0100
committerAleks Kissinger <aleks0@gmail.com>2019-01-11 11:53:45 +0100
commit710fdcc3eefc8bd0c206f6f105d02381b0b0c9bd (patch)
tree4ff927dee9553d65e4647632b80f1003af07b149
parent26941b7e35a46637047890247c1bfc87f85bcd4a (diff)
adjust edge weight with arrow keys
-rw-r--r--src/gui/tikzscene.cpp39
1 files changed, 25 insertions, 14 deletions
diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp
index 15d47cd..8c1e853 100644
--- a/src/gui/tikzscene.cpp
+++ b/src/gui/tikzscene.cpp
@@ -234,14 +234,12 @@ void TikzScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
_draggingNodes = false;
- // disable rubber band drag, which will clear the selection. Only re-enable it
- // for the SELECT tool, and when no control point has been clicked.
- //views()[0]->setDragMode(QGraphicsView::NoDrag);
-
// radius of a control point for bezier edges, in scene coordinates
qreal cpR = GLOBAL_SCALEF * (0.1);
qreal cpR2 = cpR * cpR;
+
+
switch (_tools->currentTool()) {
case ToolPalette::SELECT:
// check if we grabbed a control point of an edge
@@ -669,6 +667,7 @@ void TikzScene::keyPressEvent(QKeyEvent *event)
}
} else if (!selEdges.isEmpty()) {
int deltaAngle = 0;
+ qreal deltaWeight = 0.0;
bool head = !(event->modifiers() & Qt::ShiftModifier);
_highlightHeads = head;
@@ -677,20 +676,16 @@ void TikzScene::keyPressEvent(QKeyEvent *event)
switch(event->key()) {
case Qt::Key_Left:
deltaAngle = 15;
- //head = true;
break;
case Qt::Key_Right:
deltaAngle = -15;
- //head = true;
break;
-// case Qt::Key_Down:
-// deltaAngle = -15;
-// head = false;
-// break;
-// case Qt::Key_Up:
-// deltaAngle = 15;
-// head = false;
-// break;
+ case Qt::Key_Down:
+ deltaWeight = -0.1;
+ break;
+ case Qt::Key_Up:
+ deltaWeight = 0.1;
+ break;
}
if (deltaAngle != 0) {
@@ -730,6 +725,22 @@ void TikzScene::keyPressEvent(QKeyEvent *event)
}
_tikzDocument->undoStack()->endMacro();
+ } else if (!almostZero(deltaWeight)) {
+ capture = true;
+ _tikzDocument->undoStack()->beginMacro("Adjust edges");
+
+ foreach (Edge *e, selEdges) {
+ qreal oldWeight = e->weight();
+ e->setWeight(oldWeight + deltaWeight);
+ EdgeBendCommand *cmd = new EdgeBendCommand(this, e,
+ oldWeight,
+ e->bend(),
+ e->inAngle(),
+ e->outAngle());
+ _tikzDocument->undoStack()->push(cmd);
+ }
+
+ _tikzDocument->undoStack()->endMacro();
}
}
}