From abbcd18d820010f1c6399c87bbf9ca5b390bc96f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 18 Feb 2017 05:07:01 +0100 Subject: [PATCH] refs #883, shortcuts for dock widgets --- src/blackgui/infoarea.cpp | 11 +++++++++-- src/blackgui/infoarea.h | 4 ++-- src/swiftdata/swiftdata.ui | 4 ++-- src/swiftdata/swiftdatamenus.cpp | 2 +- src/swiftguistandard/swiftguistd.ui | 2 +- src/swiftguistandard/swiftguistdmenus.cpp | 2 +- 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/blackgui/infoarea.cpp b/src/blackgui/infoarea.cpp index 3397ae9d4..b82c3a6ff 100644 --- a/src/blackgui/infoarea.cpp +++ b/src/blackgui/infoarea.cpp @@ -105,7 +105,7 @@ namespace BlackGui subMenuRestore->setIcon(CIcons::load16()); subMenuResetPositions->setIcon(CIcons::refresh16()); subMenuRestore->addActions(this->getInfoAreaRestoreActions(subMenuRestore)); - subMenuDisplay->addActions(this->getInfoAreaSelectActions(subMenuDisplay)); + subMenuDisplay->addActions(this->getInfoAreaSelectActions(false, subMenuDisplay)); subMenuResetPositions->addActions(this->getInfoAreaResetPositionActions(subMenuResetPositions)); QSignalMapper *signalMapperToggleFloating = new QSignalMapper(menu); @@ -205,7 +205,7 @@ namespace BlackGui return constDockWidgets; } - QList CInfoArea::getInfoAreaSelectActions(QWidget *parent) const + QList CInfoArea::getInfoAreaSelectActions(bool withShortcut, QWidget *parent) const { Q_ASSERT(parent); int i = 0; @@ -214,9 +214,16 @@ namespace BlackGui { const QPixmap pm = this->indexToPixmap(i); const QString wt(dockWidgetInfoArea->windowTitleBackup()); + static const QString keys("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ"); QAction *action = new QAction(QIcon(pm), wt, parent); action->setData(i); action->setObjectName(this->objectName().append(":getInfoAreaSelectActions:").append(wt)); + if (withShortcut && i < keys.length()) + { + static const QString ks("Ctrl+%1"); + action->setShortcut(QKeySequence(ks.arg(keys.at(i)))); + } + connect(action, &QAction::triggered, this, &CInfoArea::selectAreaByAction); actions.append(action); i++; diff --git a/src/blackgui/infoarea.h b/src/blackgui/infoarea.h index 9a86c7dba..e6f70f77f 100644 --- a/src/blackgui/infoarea.h +++ b/src/blackgui/infoarea.h @@ -71,8 +71,9 @@ namespace BlackGui //! Create a list of actions to select the info areas. //! This could be used in a menu or somewhere else. + //! \param withShortcut automatically add a shortcut //! \param parent which will own the action (deletion) - QList getInfoAreaSelectActions(QWidget *parent) const; + QList getInfoAreaSelectActions(bool withShortcut, QWidget *parent) const; //! Create a list of actions to select the info areas and toogle its floating state. //! This could be used in a menu or somewhere else. @@ -272,7 +273,6 @@ namespace BlackGui //! Tab bar index changed void ps_onTabBarIndexChanged(int tabBarIndex); - }; } // namespace diff --git a/src/swiftdata/swiftdata.ui b/src/swiftdata/swiftdata.ui index c58dcf147..cfed7029d 100644 --- a/src/swiftdata/swiftdata.ui +++ b/src/swiftdata/swiftdata.ui @@ -89,12 +89,12 @@ - Info areas + &Info areas - Mapping + &Mapping diff --git a/src/swiftdata/swiftdatamenus.cpp b/src/swiftdata/swiftdatamenus.cpp index acaa4146a..b792dda3b 100644 --- a/src/swiftdata/swiftdatamenus.cpp +++ b/src/swiftdata/swiftdatamenus.cpp @@ -54,7 +54,7 @@ void CSwiftData::initDynamicMenus() { Q_ASSERT_X(ui->menu_InfoAreas, Q_FUNC_INFO, "missing info areas"); Q_ASSERT_X(ui->comp_MainInfoArea, Q_FUNC_INFO, "missing main area"); - ui->menu_InfoAreas->addActions(ui->comp_MainInfoArea->getInfoAreaSelectActions(ui->menu_InfoAreas)); + ui->menu_InfoAreas->addActions(ui->comp_MainInfoArea->getInfoAreaSelectActions(true, ui->menu_InfoAreas)); QString resourceDir(CBuildConfig::getSwiftShareDir()); if (!resourceDir.isEmpty() && QDir(resourceDir).exists()) diff --git a/src/swiftguistandard/swiftguistd.ui b/src/swiftguistandard/swiftguistd.ui index d0761b7cc..7f4ac7663 100644 --- a/src/swiftguistandard/swiftguistd.ui +++ b/src/swiftguistandard/swiftguistd.ui @@ -269,7 +269,7 @@ - Info areas + &Info areas diff --git a/src/swiftguistandard/swiftguistdmenus.cpp b/src/swiftguistandard/swiftguistdmenus.cpp index 725aa2c91..66d5b6b34 100644 --- a/src/swiftguistandard/swiftguistdmenus.cpp +++ b/src/swiftguistandard/swiftguistdmenus.cpp @@ -71,7 +71,7 @@ void SwiftGuiStd::initMenus() sGui->addMenuInternals(*ui->menu_Internals); sGui->addMenuWindow(*ui->menu_Window); sGui->addMenuHelp(*ui->menu_Help); - ui->menu_InfoAreas->addActions(ui->comp_MainInfoArea->getInfoAreaSelectActions(ui->menu_InfoAreas)); + ui->menu_InfoAreas->addActions(ui->comp_MainInfoArea->getInfoAreaSelectActions(true, ui->menu_InfoAreas)); // for hotkeys const QString swift(CGuiActionBindHandler::pathSwiftPilotClient());