This commit is contained in:
2017-03-12 16:49:12 +01:00
18 changed files with 531 additions and 81 deletions

View File

@@ -299,12 +299,47 @@ private:
return true;
}
if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Down || e->key() == Qt::Key_Left || e->key() == Qt::Key_Right) {
moveNodes(m, focused, e->key());
}
}
return false;
}
void moveNodes(MapView2D* v, MapModelElement* focused, const int key) {
MV2DElement* me = focused->getMV2D();
if (!me) {return;}
HasMoveableNodes* elem = dynamic_cast<HasMoveableNodes*>(me);
if (!elem) {return;}
// no node selected? -> done
if (elem->getSelectedNode() == -1) {return;}
// get current value
MoveableNode& node = elem->getMoveableNodes()[elem->getSelectedNode()];
Point2 pos = node.pos;
// adjust the node
switch(key) {
case Qt::Key_Up: pos.y += 0.1; break;
case Qt::Key_Down: pos.y -= 0.1; break;
case Qt::Key_Left: pos.x -= 0.1; break;
case Qt::Key_Right: pos.x += 0.1; break;
}
// snap the position
pos = v->getScaler().snap(pos);
// move
elem->onNodeMove(v, elem->getSelectedNode(), pos);
}
signals:
/** map element was selected */