summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2020-04-10 16:30:24 +0100
committerAleks Kissinger <aleks0@gmail.com>2020-04-10 16:30:24 +0100
commitdcb4470b8cd34cd6f12d59988c1b0af9008b3420 (patch)
tree9255d6ccd75d22c711a53498a309bb99d9cf256d
parentf17f2a4f902fed525b6a47f4be68a2e10f51b227 (diff)
keyboard navigation for styles
-rw-r--r--src/gui/mainmenu.cpp30
-rw-r--r--src/gui/mainmenu.h6
-rw-r--r--src/gui/mainmenu.ui62
-rw-r--r--src/gui/stylepalette.cpp85
-rw-r--r--src/gui/stylepalette.h15
-rw-r--r--src/gui/tikzscene.cpp5
6 files changed, 186 insertions, 17 deletions
diff --git a/src/gui/mainmenu.cpp b/src/gui/mainmenu.cpp
index fe291a2..7b7623b 100644
--- a/src/gui/mainmenu.cpp
+++ b/src/gui/mainmenu.cpp
@@ -282,6 +282,36 @@ void MainMenu::on_actionRun_LaTeX_triggered()
tikzit->makePreview();
}
+void MainMenu::on_actionPrevious_Node_Style_triggered()
+{
+ tikzit->activeWindow()->stylePalette()->previousNodeStyle();
+}
+
+void MainMenu::on_actionNext_Node_Style_triggered()
+{
+ tikzit->activeWindow()->stylePalette()->nextNodeStyle();
+}
+
+void MainMenu::on_actionClear_Node_Style_triggered()
+{
+ tikzit->activeWindow()->stylePalette()->toggleClearNodeStyle();
+}
+
+void MainMenu::on_actionPrevious_Edge_Style_triggered()
+{
+ tikzit->activeWindow()->stylePalette()->previousEdgeStyle();
+}
+
+void MainMenu::on_actionNext_Edge_Style_triggered()
+{
+ tikzit->activeWindow()->stylePalette()->nextEdgeStyle();
+}
+
+void MainMenu::on_actionClear_Edge_Style_triggered()
+{
+ tikzit->activeWindow()->stylePalette()->toggleClearEdgeStyle();
+}
+
void MainMenu::on_actionPreferences_triggered()
{
PreferenceDialog *d = new PreferenceDialog(this);
diff --git a/src/gui/mainmenu.h b/src/gui/mainmenu.h
index 220e3bd..8268802 100644
--- a/src/gui/mainmenu.h
+++ b/src/gui/mainmenu.h
@@ -73,6 +73,12 @@ public slots:
void on_actionRevert_triggered();
void on_actionJump_to_Selection_triggered();
void on_actionRun_LaTeX_triggered();
+ void on_actionPrevious_Node_Style_triggered();
+ void on_actionNext_Node_Style_triggered();
+ void on_actionClear_Node_Style_triggered();
+ void on_actionPrevious_Edge_Style_triggered();
+ void on_actionNext_Edge_Style_triggered();
+ void on_actionClear_Edge_Style_triggered();
void on_actionPreferences_triggered();
// View
diff --git a/src/gui/mainmenu.ui b/src/gui/mainmenu.ui
index eb3bed3..46f4881 100644
--- a/src/gui/mainmenu.ui
+++ b/src/gui/mainmenu.ui
@@ -79,11 +79,25 @@
<property name="title">
<string>Tools</string>
</property>
+ <widget class="QMenu" name="menuNode_Style">
+ <property name="title">
+ <string>Set Style</string>
+ </property>
+ <addaction name="actionPrevious_Node_Style"/>
+ <addaction name="actionNext_Node_Style"/>
+ <addaction name="actionClear_Node_Style"/>
+ <addaction name="separator"/>
+ <addaction name="actionPrevious_Edge_Style"/>
+ <addaction name="actionNext_Edge_Style"/>
+ <addaction name="actionClear_Edge_Style"/>
+ </widget>
<addaction name="actionParse"/>
<addaction name="actionRevert"/>
<addaction name="actionJump_to_Selection"/>
<addaction name="actionRun_LaTeX"/>
<addaction name="separator"/>
+ <addaction name="menuNode_Style"/>
+ <addaction name="separator"/>
<addaction name="actionPreferences"/>
</widget>
<widget class="QMenu" name="menuView">
@@ -398,6 +412,54 @@
<string>Ctrl+Shift+L</string>
</property>
</action>
+ <action name="actionPrevious_Node_Style">
+ <property name="text">
+ <string>Previous Node Style</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+,</string>
+ </property>
+ </action>
+ <action name="actionNext_Node_Style">
+ <property name="text">
+ <string>Next Node Style</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+.</string>
+ </property>
+ </action>
+ <action name="actionClear_Node_Style">
+ <property name="text">
+ <string>Clear Node Style</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Space</string>
+ </property>
+ </action>
+ <action name="actionPrevious_Edge_Style">
+ <property name="text">
+ <string>Previous Edge Style</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Shift+,</string>
+ </property>
+ </action>
+ <action name="actionNext_Edge_Style">
+ <property name="text">
+ <string>Next Edge Style</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Shift+.</string>
+ </property>
+ </action>
+ <action name="actionClear_Edge_Style">
+ <property name="text">
+ <string>Clear Edge Style</string>
+ </property>
+ <property name="shortcut">
+ <string>Ctrl+Shift+Space</string>
+ </property>
+ </action>
<addaction name="menuFile"/>
<addaction name="menuEdit"/>
<addaction name="menuView"/>
diff --git a/src/gui/stylepalette.cpp b/src/gui/stylepalette.cpp
index 15ed4c2..b862902 100644
--- a/src/gui/stylepalette.cpp
+++ b/src/gui/stylepalette.cpp
@@ -34,6 +34,8 @@ StylePalette::StylePalette(QWidget *parent) :
ui(new Ui::StylePalette)
{
ui->setupUi(this);
+ _lastStyleIndex = 0;
+ _lastEdgeStyleIndex = 0;
ui->styleListView->setModel(tikzit->styles()->nodeStyles());
ui->styleListView->setViewMode(QListView::IconMode);
@@ -73,31 +75,95 @@ void StylePalette::reloadStyles()
ui->currentCategory->addItems(tikzit->styles()->categories());
ui->currentCategory->setCurrentText(cat);
}
+
+ clearNodeStyle();
+ clearEdgeStyle();
}
-void StylePalette::changeNodeStyle(int increment)
+int StylePalette::styleIndex()
{
QModelIndexList i = ui->styleListView->selectionModel()->selectedIndexes();
- int row = 0;
- if (!i.isEmpty()) {
- int row = (i[0].row()+increment)% tikzit->styles()->nodeStyles()->numInCategory();
- if (row < 0) row += tikzit->styles()->nodeStyles()->numInCategory();
+ if (!i.isEmpty()) return i[0].row();
+ else return 0;
+}
+
+void StylePalette::setStyleIndex(int i)
+{
+ _lastStyleIndex = styleIndex();
+ if (i < 0) {
+ i = 0;
+ } else {
+ int max = tikzit->styles()->nodeStyles()->numInCategory();
+ if (i >= max) i = max - 1;
}
- //QModelIndex i1 = ui->styleListView->rootIndex().child(row, 0);
- QModelIndex i1 =tikzit->styles()->nodeStyles()->index(row,0);
+ QModelIndex i1 =tikzit->styles()->nodeStyles()->index(i,0);
ui->styleListView->selectionModel()->select(i1, QItemSelectionModel::ClearAndSelect);
ui->styleListView->scrollTo(i1);
}
+int StylePalette::edgeStyleIndex()
+{
+ QModelIndexList i = ui->edgeStyleListView->selectionModel()->selectedIndexes();
+ if (!i.isEmpty()) return i[0].row();
+ else return 0;
+}
+
+void StylePalette::setEdgeStyleIndex(int i)
+{
+ _lastEdgeStyleIndex = edgeStyleIndex();
+ if (i < 0) {
+ i = 0;
+ } else {
+ int max = tikzit->styles()->edgeStyles()->numInCategory();
+ if (i >= max) i = max - 1;
+ }
+
+ QModelIndex i1 =tikzit->styles()->edgeStyles()->index(i,0);
+ ui->edgeStyleListView->selectionModel()->select(i1, QItemSelectionModel::ClearAndSelect);
+ ui->edgeStyleListView->scrollTo(i1);
+}
+
void StylePalette::nextNodeStyle()
{
- changeNodeStyle(1);
+ setStyleIndex(styleIndex()+1);
}
void StylePalette::previousNodeStyle()
{
- changeNodeStyle(-1);
+ setStyleIndex(styleIndex()-1);
+}
+
+void StylePalette::clearNodeStyle()
+{
+ setStyleIndex(0);
+}
+
+void StylePalette::toggleClearNodeStyle()
+{
+ if (styleIndex() == 0) setStyleIndex(_lastStyleIndex);
+ else setStyleIndex(0);
+}
+
+void StylePalette::nextEdgeStyle()
+{
+ setEdgeStyleIndex(edgeStyleIndex()+1);
+}
+
+void StylePalette::previousEdgeStyle()
+{
+ setEdgeStyleIndex(edgeStyleIndex()-1);
+}
+
+void StylePalette::clearEdgeStyle()
+{
+ setEdgeStyleIndex(0);
+}
+
+void StylePalette::toggleClearEdgeStyle()
+{
+ if (edgeStyleIndex() == 0) setEdgeStyleIndex(_lastEdgeStyleIndex);
+ else setEdgeStyleIndex(0);
}
QString StylePalette::activeNodeStyleName()
@@ -164,6 +230,7 @@ void StylePalette::on_currentCategory_currentTextChanged(const QString &cat)
{
//tikzit->styles()->refreshModels(_nodeModel, _edgeModel, cat);
tikzit->styles()->nodeStyles()->setCategory(cat);
+ clearNodeStyle();
}
//void StylePalette::on_buttonApplyNodeStyle_clicked()
diff --git a/src/gui/stylepalette.h b/src/gui/stylepalette.h
index f27cd4b..6e16812 100644
--- a/src/gui/stylepalette.h
+++ b/src/gui/stylepalette.h
@@ -36,10 +36,14 @@ public:
void reloadStyles();
void nextNodeStyle();
void previousNodeStyle();
+ void clearNodeStyle();
+ void toggleClearNodeStyle();
+ void nextEdgeStyle();
+ void previousEdgeStyle();
+ void clearEdgeStyle();
+ void toggleClearEdgeStyle();
QString activeNodeStyleName();
QString activeEdgeStyleName();
-
-
public slots:
void nodeStyleDoubleClicked(const QModelIndex &);
void edgeStyleDoubleClicked(const QModelIndex &);
@@ -51,7 +55,12 @@ public slots:
//void on_buttonApplyNodeStyle_clicked();
private:
- void changeNodeStyle(int increment);
+ int _lastStyleIndex;
+ int _lastEdgeStyleIndex;
+ int styleIndex();
+ void setStyleIndex(int i);
+ int edgeStyleIndex();
+ void setEdgeStyleIndex(int i);
Ui::StylePalette *ui;
diff --git a/src/gui/tikzscene.cpp b/src/gui/tikzscene.cpp
index 969a355..29b007e 100644
--- a/src/gui/tikzscene.cpp
+++ b/src/gui/tikzscene.cpp
@@ -740,11 +740,6 @@ void TikzScene::keyPressEvent(QKeyEvent *event)
// slower, but seems to be more reliable than event->modifiers()
Qt::KeyboardModifiers mod = QApplication::queryKeyboardModifiers();
- if (event->key() == Qt::Key_QuoteLeft) {
- capture = true;
- _styles->nextNodeStyle();
- }
-
if (mod & Qt::ControlModifier) {
QSet<Node*> selNodes;
QSet<Edge*> selEdges;