Nim: Add Debug and Release configs in available builds configurations

This allows the user to select a Release or Debug build type
from the "Add" button in the project build configuration page.

Change-Id: Id47bf25cdaf3fd7e7d3f0ec1449c7c2bb9961baa
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Filippo Cucchetto
2018-12-15 12:17:26 +01:00
parent 8770d83fc8
commit 612410e1f9
2 changed files with 34 additions and 25 deletions

View File

@@ -183,37 +183,45 @@ NimBuildConfigurationFactory::NimBuildConfigurationFactory()
QList<BuildInfo *> NimBuildConfigurationFactory::availableBuilds(const Target *parent) const QList<BuildInfo *> NimBuildConfigurationFactory::availableBuilds(const Target *parent) const
{ {
// Retrieve the project path QList<BuildInfo *> result;
auto project = qobject_cast<NimProject *>(parent->project()); for (auto buildType : {BuildConfiguration::Debug, BuildConfiguration::Release})
QTC_ASSERT(project, return {}); result.push_back(createBuildInfo(parent->kit(), buildType));
return result;
// Create the build info
BuildInfo *info = createBuildInfo(parent->kit(), project->projectFilePath().toString(),
BuildConfiguration::Debug);
info->displayName.clear(); // ask for a name
info->buildDirectory.clear(); // This depends on the displayName
return {info};
} }
QList<BuildInfo *> NimBuildConfigurationFactory::availableSetups(const Kit *k, const QString &projectPath) const QList<BuildInfo *> NimBuildConfigurationFactory::availableSetups(const Kit *k, const QString &projectPath) const
{ {
BuildInfo *debug = createBuildInfo(k, projectPath, BuildConfiguration::Debug); QList<BuildInfo *> result;
BuildInfo *release = createBuildInfo(k, projectPath, BuildConfiguration::Release); for (auto buildType : {BuildConfiguration::Debug, BuildConfiguration::Release}) {
return {debug, release}; BuildInfo *info = createBuildInfo(k, buildType);
info->displayName = info->typeName;
info->buildDirectory = defaultBuildDirectory(k, projectPath, info->typeName, buildType);
result.push_back(info);
}
return result;
} }
BuildInfo *NimBuildConfigurationFactory::createBuildInfo(const Kit *k, const QString &projectFilePath, BuildInfo *NimBuildConfigurationFactory::createBuildInfo(const Kit *k, BuildConfiguration::BuildType buildType) const
BuildConfiguration::BuildType buildType) const
{ {
auto result = new BuildInfo(this); auto info = new BuildInfo(this);
result->buildType = buildType; info->buildType = buildType;
result->displayName = BuildConfiguration::buildTypeName(buildType); info->kitId = k->id();
result->buildDirectory = defaultBuildDirectory(k, projectFilePath, result->displayName, buildType); info->typeName = displayName(buildType);
result->kitId = k->id(); return info;
result->typeName = tr("Build"); }
return result;
QString NimBuildConfigurationFactory::displayName(BuildConfiguration::BuildType buildType) const
{
switch (buildType) {
case ProjectExplorer::BuildConfiguration::Debug:
return tr("Debug");
case ProjectExplorer::BuildConfiguration::Profile:
return tr("Profile");
case ProjectExplorer::BuildConfiguration::Release:
return tr("Release");
default:
return QString();
}
} }
} // namespace Nim } // namespace Nim

View File

@@ -73,8 +73,9 @@ private:
const QString &projectPath) const override; const QString &projectPath) const override;
ProjectExplorer::BuildInfo *createBuildInfo(const ProjectExplorer::Kit *k, ProjectExplorer::BuildInfo *createBuildInfo(const ProjectExplorer::Kit *k,
const QString &projectPath,
ProjectExplorer::BuildConfiguration::BuildType buildType) const; ProjectExplorer::BuildConfiguration::BuildType buildType) const;
QString displayName(ProjectExplorer::BuildConfiguration::BuildType buildType) const;
}; };
} }