From 155cb3b83a9be21daeab5ec47f96b20281b36f38 Mon Sep 17 00:00:00 2001 From: Wenzel Jakob Date: Sat, 11 Jan 2014 22:02:16 +0100 Subject: [PATCH] mtsgui: conveniently switch between tabs using Alt+Left and Alt+Right --- src/mtsgui/glwidget.cpp | 10 +++++++++- src/mtsgui/glwidget.h | 1 + src/mtsgui/mainwindow.cpp | 7 +++++++ src/mtsgui/mainwindow.h | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/mtsgui/glwidget.cpp b/src/mtsgui/glwidget.cpp index 9d7afab1..b910c50d 100644 --- a/src/mtsgui/glwidget.cpp +++ b/src/mtsgui/glwidget.cpp @@ -492,8 +492,16 @@ void GLWidget::keyPressEvent(QKeyEvent *event) { case Qt::Key_PageUp: m_context->movementScale *= 2; break; case Qt::Key_PageDown: m_context->movementScale /= 2; break; case Qt::Key_Left: + if (event->modifiers() & Qt::AltModifier) { + emit switchTab(-1); + return; + } m_leftKeyDown = true; break; case Qt::Key_Right: + if (event->modifiers() & Qt::AltModifier) { + emit switchTab(1); + return; + } m_rightKeyDown = true; break; case Qt::Key_Up: m_upKeyDown = true; break; @@ -520,7 +528,7 @@ void GLWidget::keyPressEvent(QKeyEvent *event) { if (m_context->selectionMode == EScene) { m_context->selectionMode = ENothing; m_aabb.reset(); - } else { + } else if (m_context->scene) { m_context->selectionMode = EScene; m_aabb = m_context->scene->getKDTree()->getAABB(); } diff --git a/src/mtsgui/glwidget.h b/src/mtsgui/glwidget.h index 9919a20d..16c8d8c1 100644 --- a/src/mtsgui/glwidget.h +++ b/src/mtsgui/glwidget.h @@ -90,6 +90,7 @@ signals: void loadFileRequest(const QString &fileName); void crop(int type, int x, int y, int width, int height); void selectionChanged(); + void switchTab(int rel); public slots: void timerImpulse(); diff --git a/src/mtsgui/mainwindow.cpp b/src/mtsgui/mainwindow.cpp index 9817f963..6be43f50 100644 --- a/src/mtsgui/mainwindow.cpp +++ b/src/mtsgui/mainwindow.cpp @@ -169,6 +169,7 @@ MainWindow::MainWindow(QWidget *parent) : connect(ui->glView, SIGNAL(statusMessage(const QString &)), this, SLOT(onStatusMessage(const QString &)), Qt::QueuedConnection); connect(ui->glView, SIGNAL(selectionChanged()), this, SLOT(onSelectionChanged())); + connect(ui->glView, SIGNAL(switchTab(int)), this, SLOT(onSwitchTab(int))); /* Load defaults from app settings file */ ui->glView->setInvertMouse(settings.value("invertMouse", false).toBool()); @@ -500,6 +501,12 @@ void MainWindow::on_actionFocusSelected_triggered() { ui->glView->keyPressEvent(&event); } +void MainWindow::onSwitchTab(int rel) { + int index = ui->tabBar->currentIndex() + rel; + if (index >= 0 && index < ui->tabBar->count()) + ui->tabBar->setCurrentIndex(index); +} + void MainWindow::on_actionFocusAll_triggered() { QKeyEvent event(QEvent::KeyPress, Qt::Key_A, Qt::NoModifier); ui->glView->keyPressEvent(&event); diff --git a/src/mtsgui/mainwindow.h b/src/mtsgui/mainwindow.h index cfbd3f41..8b57b5fd 100644 --- a/src/mtsgui/mainwindow.h +++ b/src/mtsgui/mainwindow.h @@ -202,6 +202,7 @@ private slots: void on_glView_crop(int type, int x=0, int y=0, int width=0, int height=0); void onSelectionChanged(); + void onSwitchTab(int rel); private: void exportImage(const QString &fileName);