summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2018-04-10 08:00:02 +0200
committerAleks Kissinger <aleks0@gmail.com>2018-04-10 08:00:17 +0200
commit86641371a35086e94e89d3ccc389a75c073a9312 (patch)
tree732c6a95a175c3849ea333d8c113b27b9315a1f6
parent541a46635804937e57db049a7b59bd9d7fd52c6c (diff)
nudging
-rw-r--r--src/data/graphelementdata.cpp2
-rw-r--r--src/data/graphelementdata.h2
-rw-r--r--src/gui/tikzscene.cpp66
-rw-r--r--src/gui/tikzscene.h1
-rw-r--r--stylepalette.cpp24
-rw-r--r--stylepalette.h4
6 files changed, 90 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;
diff --git a/stylepalette.cpp b/stylepalette.cpp
index 1416cc3..c599750 100644
--- a/stylepalette.cpp
+++ b/stylepalette.cpp
@@ -61,6 +61,30 @@ void StylePalette::reloadStyles()
}
}
+void StylePalette::changeStyle(int increment)
+{
+ QModelIndexList i = ui->styleListView->selectionModel()->selectedIndexes();
+ int row = 0;
+ if (!i.isEmpty()) {
+ int row = (i[0].row()+increment)%_model->rowCount();
+ if (row < 0) row += _model->rowCount();
+ }
+
+ QModelIndex i1 = ui->styleListView->rootIndex().child(row, 0);
+ ui->styleListView->selectionModel()->select(i1, QItemSelectionModel::ClearAndSelect);
+ ui->styleListView->scrollTo(i1);
+}
+
+void StylePalette::nextStyle()
+{
+ changeStyle(1);
+}
+
+void StylePalette::previousStyle()
+{
+ changeStyle(-1);
+}
+
QString StylePalette::activeNodeStyleName()
{
const QModelIndexList i = ui->styleListView->selectionModel()->selectedIndexes();
diff --git a/stylepalette.h b/stylepalette.h
index 8d2187e..a465034 100644
--- a/stylepalette.h
+++ b/stylepalette.h
@@ -16,6 +16,8 @@ public:
explicit StylePalette(QWidget *parent = 0);
~StylePalette();
void reloadStyles();
+ void nextStyle();
+ void previousStyle();
QString activeNodeStyleName();
@@ -26,6 +28,8 @@ public slots:
//void on_buttonApplyNodeStyle_clicked();
private:
+ void changeStyle(int increment);
+
Ui::StylePalette *ui;
QStandardItemModel *_model;