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>
This commit is contained in:
Christian Kandeler
2022-12-01 15:34:21 +01:00
parent 6d8f6ab395
commit 4c1b3c863c
5 changed files with 76 additions and 26 deletions

View File

@@ -40,6 +40,7 @@
#include <utils/stringutils.h>
#include <QFileDialog>
#include <QHash>
#include <limits>
@@ -178,6 +179,7 @@ public:
Context m_projectLanguages;
QVariantMap m_pluginSettings;
std::unique_ptr<Internal::UserFileAccessor> m_accessor;
QHash<Id, QPair<QString, std::function<void()>>> m_generators;
QString m_displayName;
@@ -1054,6 +1056,27 @@ bool Project::isEditModePreferred() const
return true;
}
void Project::registerGenerator(Utils::Id id, const QString &displayName,
const std::function<void ()> &runner)
{
d->m_generators.insert(id, qMakePair(displayName, runner));
}
const QList<QPair<Id, QString>> Project::allGenerators() const
{
QList<QPair<Id, QString>> generators;
for (auto it = d->m_generators.cbegin(); it != d->m_generators.cend(); ++it)
generators << qMakePair(it.key(), it.value().first);
return generators;
}
void Project::runGenerator(Utils::Id id)
{
const auto it = d->m_generators.constFind(id);
if (it != d->m_generators.constEnd())
it.value().second();
}
#if defined(WITH_TESTS)
static FilePath constructTestPath(const QString &basePath)