diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2022-12-01 15:34:21 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2022-12-08 14:34:52 +0000 |
commit | 4c1b3c863cdf90f8df62a11de31acfec03ed39e0 (patch) | |
tree | fde12fee144e60b7ba3e8d9a25bbd7a6d55a3d16 /src/plugins/projectexplorer/projectexplorer.cpp | |
parent | 6d8f6ab39595350afe67e2649dce658613a46abd (diff) | |
download | qt-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.cpp | 19 |
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")); |