summaryrefslogtreecommitdiff
path: root/src/plugins/projectexplorer/projectexplorer.cpp
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2022-12-01 15:34:21 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2022-12-08 14:34:52 +0000
commit4c1b3c863cdf90f8df62a11de31acfec03ed39e0 (patch)
treefde12fee144e60b7ba3e8d9a25bbd7a6d55a3d16 /src/plugins/projectexplorer/projectexplorer.cpp
parent6d8f6ab39595350afe67e2649dce658613a46abd (diff)
downloadqt-creator-4c1b3c863cdf90f8df62a11de31acfec03ed39e0.tar.gz
ProjectExplorer: Add "Generate" sub-menu to build menu
Preparation for adding more generators. Task-number: QTCREATORBUG-28149 Change-Id: I4afa183a6fbd8ee88fc978b382f28cf9e52f09e9 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins/projectexplorer/projectexplorer.cpp')
-rw-r--r--src/plugins/projectexplorer/projectexplorer.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 75cf8aea01..766d48429c 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -239,6 +239,7 @@ const int P_ACTION_BUILDPROJECT = 80;
const char M_RECENTPROJECTS[] = "ProjectExplorer.Menu.Recent";
const char M_UNLOADPROJECTS[] = "ProjectExplorer.Menu.Unload";
const char M_SESSION[] = "ProjectExplorer.Menu.Session";
+const char M_GENERATORS[] = "ProjectExplorer.Menu.Generators";
const char RUNMENUCONTEXTMENU[] = "Project.RunMenu";
const char FOLDER_OPEN_LOCATIONS_CONTEXT_MENU[] = "Project.F.OpenLocation.CtxMenu";
@@ -1339,6 +1340,24 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
cmd->setDescription(dd->m_buildForRunConfigAction->text());
mbuild->addAction(cmd, Constants::G_BUILD_BUILD);
+ // Generators
+ ActionContainer * const generatorContainer
+ = ActionManager::createMenu(Id(Constants::M_GENERATORS));
+ generatorContainer->setOnAllDisabledBehavior(ActionContainer::Show);
+ generatorContainer->menu()->setTitle(tr("Run Generator"));
+ mbuild->addMenu(generatorContainer, Constants::G_BUILD_BUILD);
+ connect(generatorContainer->menu(), &QMenu::aboutToShow, [menu = generatorContainer->menu()] {
+ menu->clear();
+ if (Project * const project = SessionManager::startupProject()) {
+ for (const auto &generator : project->allGenerators()) {
+ menu->addAction(generator.second, [project, id = generator.first] {
+ project->runGenerator(id);
+ });
+ menu->show();
+ }
+ }
+ });
+
// deploy action
dd->m_deployAction = new QAction(tr("Deploy"), this);
dd->m_deployAction->setWhatsThis(tr("Deploy Project"));