diff options
author | Aleks Kissinger <aleks0@gmail.com> | 2018-04-10 08:00:02 +0200 |
---|---|---|
committer | Aleks Kissinger <aleks0@gmail.com> | 2018-04-10 08:00:17 +0200 |
commit | 86641371a35086e94e89d3ccc389a75c073a9312 (patch) | |
tree | 732c6a95a175c3849ea333d8c113b27b9315a1f6 /src | |
parent | 541a46635804937e57db049a7b59bd9d7fd52c6c (diff) |
nudging
Diffstat (limited to 'src')
-rw-r--r-- | src/data/graphelementdata.cpp | 2 | ||||
-rw-r--r-- | src/data/graphelementdata.h | 2 | ||||
-rw-r--r-- | src/gui/tikzscene.cpp | 66 | ||||
-rw-r--r-- | src/gui/tikzscene.h | 1 |
4 files changed, 62 insertions, 9 deletions
diff --git a/src/data/graphelementdata.cpp b/src/data/graphelementdata.cpp index 63c8cea..01736b8 100644 --- a/src/data/graphelementdata.cpp +++ b/src/data/graphelementdata.cpp @@ -131,7 +131,7 @@ int GraphElementData::rowCount(const QModelIndex &parent) const } } -int GraphElementData::columnCount(const QModelIndex &parent) const +int GraphElementData::columnCount(const QModelIndex &) const { return 2; } diff --git a/src/data/graphelementdata.h b/src/data/graphelementdata.h index 319edf7..740d4dc 100644 --- a/src/data/graphelementdata.h +++ b/src/data/graphelementdata.h @@ -34,7 +34,7 @@ public: QModelIndex parent(const QModelIndex &index) const Q_DECL_OVERRIDE; int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; - int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; + int columnCount(const QModelIndex &) const Q_DECL_OVERRIDE; Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE; diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp index f303fab..2a9b2fb 100644 --- a/src/gui/tikzscene.cpp +++ b/src/gui/tikzscene.cpp @@ -40,6 +40,9 @@ TikzScene::TikzScene(TikzDocument *tikzDocument, ToolPalette *tools, pen.setDashPattern(dash); _rubberBandItem->setPen(pen); + QBrush brush(QColor::fromRgbF(0.6,0.6,0.8,0.2)); + _rubberBandItem->setBrush(brush); + _rubberBandItem->setVisible(false); addItem(_rubberBandItem); } @@ -427,6 +430,8 @@ void TikzScene::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) invalidate(QRect(), QGraphicsScene::BackgroundLayer); } + + void TikzScene::keyReleaseEvent(QKeyEvent *event) { if (!_enabled) return; @@ -452,19 +457,67 @@ void TikzScene::keyReleaseEvent(QKeyEvent *event) } } +void TikzScene::keyPressEvent(QKeyEvent *event) +{ + bool capture = false; + + if (event->key() == Qt::Key_QuoteLeft) { + capture = true; + _styles->nextStyle(); + } + + if (event->modifiers() & Qt::ControlModifier) { + QPointF delta(0,0); + float shift = (event->modifiers() & Qt::ShiftModifier) ? 1.0f : 10.0f; + switch(event->key()) { + case Qt::Key_Left: + delta.setX(-0.025f * shift); + break; + case Qt::Key_Right: + delta.setX(0.025f * shift); + break; + case Qt::Key_Up: + delta.setY(0.025f * shift); + break; + case Qt::Key_Down: + delta.setY(-0.025f * shift); + break; + } + + if (!delta.isNull()) { + capture = true; + QMap<Node*,QPointF> oldNodePositions; + QMap<Node*,QPointF> newNodePositions; + QPointF pos; + + foreach (QGraphicsItem *gi, selectedItems()) { + if (NodeItem *ni = dynamic_cast<NodeItem*>(gi)) { + pos = ni->node()->point(); + oldNodePositions.insert(ni->node(), pos); + newNodePositions.insert(ni->node(), pos + delta); + } + } + + MoveCommand *cmd = new MoveCommand(this, oldNodePositions, newNodePositions); + _tikzDocument->undoStack()->push(cmd); + } + } + + if (!capture) QGraphicsScene::keyPressEvent(event); +} + void TikzScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { if (!_enabled) return; QPointF mousePos = event->scenePos(); - foreach (QGraphicsItem *gi, items(mousePos)) { - if (EdgeItem *ei = dynamic_cast<EdgeItem*>(gi)) { + auto sel = items(mousePos); + + if (!sel.isEmpty()) { + if (EdgeItem *ei = dynamic_cast<EdgeItem*>(sel[0])) { ChangeEdgeModeCommand *cmd = new ChangeEdgeModeCommand(this, ei->edge()); _tikzDocument->undoStack()->push(cmd); - break; - } - - if (NodeItem *ni = dynamic_cast<NodeItem*>(gi)) { + } else if (NodeItem *ni = dynamic_cast<NodeItem*>(sel[0])) { bool ok; QString newLabel = QInputDialog::getText(views()[0], tr("Node label"), tr("Label:"), QLineEdit::Normal, @@ -475,7 +528,6 @@ void TikzScene::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) ChangeLabelCommand *cmd = new ChangeLabelCommand(this, graph(), oldLabels, newLabel); _tikzDocument->undoStack()->push(cmd); } - break; } } } diff --git a/src/gui/tikzscene.h b/src/gui/tikzscene.h index fe1f784..634a848 100644 --- a/src/gui/tikzscene.h +++ b/src/gui/tikzscene.h @@ -57,6 +57,7 @@ protected: void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override; + void keyPressEvent(QKeyEvent *event) override; void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override; private: TikzDocument *_tikzDocument; |