TargetSetupPage: Improve reporting on invalid kits

Give the reason for a kit being disabled in the tooltip.

E.g. for a CMake project you will now get

"Kit is invalid: No CMake tool set."

instead of a generic error message about the kit being invalid.

Change-Id: Ic776dc24149d65ebf27163b605ec2e52a3a504a7
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
Tobias Hunger
2020-01-23 12:25:44 +01:00
parent ec4e60e691
commit e4738904d9
12 changed files with 104 additions and 100 deletions

View File

@@ -58,12 +58,19 @@ void JsonKitsPage::initializePage()
const Id platform = Id::fromString(wiz->stringValue(QLatin1String("Platform")));
const QSet<Id> preferred
= evaluate(m_preferredFeatures, wiz->value(QLatin1String("PreferredFeatures")), wiz);
const QSet<Id> required
= evaluate(m_requiredFeatures, wiz->value(QLatin1String("RequiredFeatures")), wiz);
const QSet<Id> required = evaluate(m_requiredFeatures,
wiz->value(QLatin1String("RequiredFeatures")),
wiz);
setRequiredKitPredicate([required](const Kit *k) { return k->hasFeatures(required); });
setPreferredKitPredicate([platform, preferred](const Kit *k) {
return k->supportedPlatforms().contains(platform) && k->hasFeatures(preferred);
setTasksGenerator([required, preferred, platform](const Kit *k) -> Tasks {
if (!k->hasFeatures(required))
return {CompileTask(Task::Error, tr("At least one required feature is not present."))};
if (!k->supportedPlatforms().contains(platform))
return {CompileTask(Task::Unknown, tr("Platform is not supported."))};
if (!k->hasFeatures(preferred))
return {
CompileTask(Task::Unknown, tr("At least one preferred feature is not present."))};
return {};
});
setProjectPath(wiz->expander()->expand(Utils::FilePath::fromString(unexpandedProjectPath())));