From d3864219989fd9233a573883df801763bb0ff7fe Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Tue, 9 Jul 2024 15:35:15 +0200 Subject: [PATCH] Move actions for mode style to mode manager Change-Id: Ic3ea8dcc12511f0f115b0c9124419ac5178f5c8f Reviewed-by: hjk Reviewed-by: Alessandro Portale --- src/plugins/coreplugin/coreconstants.h | 2 + src/plugins/coreplugin/icore.cpp | 79 ++------------------------ src/plugins/coreplugin/modemanager.cpp | 72 ++++++++++++++++++++++- 3 files changed, 78 insertions(+), 75 deletions(-) diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 049ce35dec5..f4353a1fba7 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -172,6 +172,8 @@ const char G_EDIT_FONT[] = "QtCreator.Group.Edit.Font"; const char G_EDIT_EDITOR[] = "QtCreator.Group.Edit.Editor"; // View menu groups +const char G_VIEW_SIDEBAR[] = "QtCreator.Group.View.Sidebar"; +const char G_VIEW_MODES[] = "QtCreator.Group.View.Modes"; const char G_VIEW_VIEWS[] = "QtCreator.Group.View.Views"; const char G_VIEW_PANES[] = "QtCreator.Group.View.Panes"; diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 70a0c818480..0daacbdfa8f 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -285,13 +285,10 @@ public: void registerDefaultContainers(); void registerDefaultActions(); - void registerModeSelectorStyleActions(); void readSettings(); void saveWindowSettings(); - void updateModeSelectorStyleMenu(); - MainWindow *m_mainwindow = nullptr; QTimer m_trimTimer; QStringList m_aboutInformation; @@ -324,9 +321,6 @@ public: QAction *m_toggleLeftSideBarAction = nullptr; QAction *m_toggleRightSideBarAction = nullptr; QAction *m_toggleMenubarAction = nullptr; - QAction *m_setModeSelectorStyleIconsAndTextAction = nullptr; - QAction *m_setModeSelectorStyleHiddenAction = nullptr; - QAction *m_setModeSelectorStyleIconsOnlyAction = nullptr; QToolButton *m_toggleLeftSideBarButton = nullptr; QToolButton *m_toggleRightSideBarButton = nullptr; @@ -1654,6 +1648,8 @@ void ICorePrivate::registerDefaultContainers() ActionContainer *mview = ActionManager::createMenu(Constants::M_VIEW); menubar->addMenu(mview, Constants::G_VIEW); mview->menu()->setTitle(Tr::tr("&View")); + mview->appendGroup(Constants::G_VIEW_SIDEBAR); + mview->appendGroup(Constants::G_VIEW_MODES); mview->appendGroup(Constants::G_VIEW_VIEWS); mview->appendGroup(Constants::G_VIEW_PANES); @@ -1980,7 +1976,7 @@ void ICorePrivate::registerDefaultActions() toggleLeftSideBarAction.setCheckable(true); toggleLeftSideBarAction.setCommandAttribute(Command::CA_UpdateText); toggleLeftSideBarAction.setDefaultKeySequence(Tr::tr("Ctrl+0"), Tr::tr("Alt+0")); - toggleLeftSideBarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_VIEWS); + toggleLeftSideBarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_SIDEBAR); toggleLeftSideBarAction.addOnTriggered(this, [this](bool visible) { setSidebarVisible(visible, Side::Left); }); @@ -1996,7 +1992,7 @@ void ICorePrivate::registerDefaultActions() toggleRightSideBarAction.setCheckable(true); toggleRightSideBarAction.setCommandAttribute(Command::CA_UpdateText); toggleRightSideBarAction.setDefaultKeySequence(Tr::tr("Ctrl+Shift+0"), Tr::tr("Alt+Shift+0")); - toggleRightSideBarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_VIEWS); + toggleRightSideBarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_SIDEBAR); toggleRightSideBarAction.setEnabled(false); toggleRightSideBarAction.addOnTriggered(this, [this](bool visible) { setSidebarVisible(visible, Side::Right); }); @@ -2012,7 +2008,7 @@ void ICorePrivate::registerDefaultActions() toggleMenubarAction.bindContextAction(&m_toggleMenubarAction); toggleMenubarAction.setCheckable(true); toggleMenubarAction.setDefaultKeySequence(Tr::tr("Ctrl+Alt+M")); - toggleMenubarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_VIEWS); + toggleMenubarAction.addToContainer(Constants::M_VIEW, Constants::G_VIEW_SIDEBAR); toggleMenubarAction.addOnToggled(this, [](bool visible) { if (!visible) { auto keySequenceAndText = [](const Utils::Id &actionName) { @@ -2046,8 +2042,6 @@ void ICorePrivate::registerDefaultActions() }); } - registerModeSelectorStyleActions(); - // Window->Views ActionContainer *mviews = ActionManager::createMenu(Constants::M_VIEW_VIEWS); mview->addMenu(mviews, Constants::G_VIEW_VIEWS); @@ -2100,53 +2094,6 @@ void ICorePrivate::registerDefaultActions() } } -void ICorePrivate::registerModeSelectorStyleActions() -{ - ActionContainer *mview = ActionManager::actionContainer(Constants::M_VIEW); - - // Cycle Mode Selector Styles - ActionBuilder(this, Constants::CYCLE_MODE_SELECTOR_STYLE) - .setText(Tr::tr("Cycle Mode Selector Styles")) - .addOnTriggered(this, [this] { - ModeManager::cycleModeStyle(); - updateModeSelectorStyleMenu(); - }); - - // Mode Selector Styles - ActionContainer *mmodeLayouts = ActionManager::createMenu(Constants::M_VIEW_MODESTYLES); - mview->addMenu(mmodeLayouts, Constants::G_VIEW_VIEWS); - QMenu *styleMenu = mmodeLayouts->menu(); - styleMenu->setTitle(Tr::tr("Modes")); - auto *stylesGroup = new QActionGroup(styleMenu); - stylesGroup->setExclusive(true); - - mmodeLayouts->addSeparator(Constants::G_DEFAULT_THREE); - - ActionBuilder(this, "QtCreator.Modes.IconsAndText") - .setText(Tr::tr("Icons and Text")) - .setCheckable(true) - .addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::IconsAndText); }) - .addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE) - .bindContextAction(&m_setModeSelectorStyleIconsAndTextAction); - stylesGroup->addAction(m_setModeSelectorStyleIconsAndTextAction); - - ActionBuilder(this, "QtCreator.Modes.IconsOnly") - .setText(Tr::tr("Icons Only")) - .setCheckable(true) - .addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::IconsOnly); }) - .addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE) - .bindContextAction(&m_setModeSelectorStyleIconsOnlyAction); - stylesGroup->addAction(m_setModeSelectorStyleIconsOnlyAction); - - ActionBuilder(this, "QtCreator.Modes.Hidden") - .setText(Tr::tr("Hidden")) - .setCheckable(true) - .addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::Hidden); }) - .addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE) - .bindContextAction(&m_setModeSelectorStyleHiddenAction); - stylesGroup->addAction(m_setModeSelectorStyleHiddenAction); -} - void ICorePrivate::openFile() { ICore::openFiles(EditorManager::getOpenFilePaths(), ICore::SwitchMode); @@ -2414,7 +2361,6 @@ void ICorePrivate::readSettings() } ModeManager::setModeStyle(modeStyle); - updateModeSelectorStyleMenu(); } if (globalMenuBar() && !globalMenuBar()->isNativeMenuBar()) { @@ -2451,21 +2397,6 @@ void ICorePrivate::saveWindowSettings() settings->endGroup(); } -void ICorePrivate::updateModeSelectorStyleMenu() -{ - switch (ModeManager::modeStyle()) { - case ModeManager::Style::IconsAndText: - m_setModeSelectorStyleIconsAndTextAction->setChecked(true); - break; - case ModeManager::Style::IconsOnly: - m_setModeSelectorStyleIconsOnlyAction->setChecked(true); - break; - case ModeManager::Style::Hidden: - m_setModeSelectorStyleHiddenAction->setChecked(true); - break; - } -} - void ICorePrivate::updateContext() { Context contexts = m_highPrioAdditionalContexts; diff --git a/src/plugins/coreplugin/modemanager.cpp b/src/plugins/coreplugin/modemanager.cpp index 03b38af04e3..43258c7a05f 100644 --- a/src/plugins/coreplugin/modemanager.cpp +++ b/src/plugins/coreplugin/modemanager.cpp @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -68,6 +69,8 @@ struct ModeManagerPrivate void enabledStateChanged(IMode *mode); void visibleChanged(IMode *mode); void activateModeHelper(Id id); + void registerModeSelectorStyleActions(); + void updateModeSelectorStyleMenu(); void extensionsInitializedHelper(); Internal::FancyTabWidget *m_modeStack; @@ -78,6 +81,9 @@ struct ModeManagerPrivate Context m_addedContexts; int m_oldCurrent; ModeManager::Style m_modeStyle = ModeManager::Style::IconsAndText; + QAction *m_setModeSelectorStyleIconsAndTextAction = nullptr; + QAction *m_setModeSelectorStyleHiddenAction = nullptr; + QAction *m_setModeSelectorStyleIconsOnlyAction = nullptr; bool m_startingUp = true; Id m_pendingFirstActiveMode; // Valid before extentionsInitialized. @@ -180,6 +186,68 @@ void ModeManagerPrivate::activateModeHelper(Id id) } } +void ModeManagerPrivate::registerModeSelectorStyleActions() +{ + ActionContainer *mview = ActionManager::actionContainer(Constants::M_VIEW); + + // Cycle Mode Selector Styles + ActionBuilder(m_instance, Constants::CYCLE_MODE_SELECTOR_STYLE) + .setText(Tr::tr("Cycle Mode Selector Styles")) + .addOnTriggered([] { ModeManager::cycleModeStyle(); }); + + // Mode Selector Styles + ActionContainer *mmodeLayouts = ActionManager::createMenu(Constants::M_VIEW_MODESTYLES); + mview->addMenu(mmodeLayouts, Constants::G_VIEW_MODES); + QMenu *styleMenu = mmodeLayouts->menu(); + styleMenu->setTitle(Tr::tr("Modes")); + auto *stylesGroup = new QActionGroup(styleMenu); + stylesGroup->setExclusive(true); + + mmodeLayouts->addSeparator(Constants::G_DEFAULT_THREE); + + ActionBuilder(m_instance, "QtCreator.Modes.IconsAndText") + .setText(Tr::tr("Icons and Text")) + .setCheckable(true) + .addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::IconsAndText); }) + .addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE) + .bindContextAction(&m_setModeSelectorStyleIconsAndTextAction); + stylesGroup->addAction(m_setModeSelectorStyleIconsAndTextAction); + + ActionBuilder(m_instance, "QtCreator.Modes.IconsOnly") + .setText(Tr::tr("Icons Only")) + .setCheckable(true) + .addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::IconsOnly); }) + .addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE) + .bindContextAction(&m_setModeSelectorStyleIconsOnlyAction); + stylesGroup->addAction(m_setModeSelectorStyleIconsOnlyAction); + + ActionBuilder(m_instance, "QtCreator.Modes.Hidden") + .setText(Tr::tr("Hidden")) + .setCheckable(true) + .addOnTriggered([] { ModeManager::setModeStyle(ModeManager::Style::Hidden); }) + .addToContainer(Constants::M_VIEW_MODESTYLES, Constants::G_DEFAULT_THREE) + .bindContextAction(&m_setModeSelectorStyleHiddenAction); + stylesGroup->addAction(m_setModeSelectorStyleHiddenAction); + updateModeSelectorStyleMenu(); +} + +void ModeManagerPrivate::updateModeSelectorStyleMenu() +{ + if (!m_setModeSelectorStyleHiddenAction) // actions not yet created + return; + switch (m_modeStyle) { + case ModeManager::Style::IconsAndText: + m_setModeSelectorStyleIconsAndTextAction->setChecked(true); + break; + case ModeManager::Style::IconsOnly: + m_setModeSelectorStyleIconsOnlyAction->setChecked(true); + break; + case ModeManager::Style::Hidden: + m_setModeSelectorStyleHiddenAction->setChecked(true); + break; + } +} + void ModeManager::extensionsInitialized() { d->extensionsInitializedHelper(); @@ -188,7 +256,7 @@ void ModeManager::extensionsInitialized() void ModeManagerPrivate::extensionsInitializedHelper() { m_startingUp = false; - + registerModeSelectorStyleActions(); Utils::sort(m_modes, &IMode::priority); std::reverse(m_modes.begin(), m_modes.end()); @@ -386,6 +454,8 @@ void ModeManager::setModeStyle(ModeManager::Style style) d->m_actionBar->setIconsOnly(iconsOnly); d->m_modeStack->setIconsOnly(iconsOnly); d->m_modeStack->setSelectionWidgetVisible(visible); + + d->updateModeSelectorStyleMenu(); } /*!