CMakeProjectManager: Rename some of the KitAspect related classes

... and split out the static interface.

Change-Id: I28cdb2765a00d1bd19790f46a3b2b0da8690e929
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2023-08-10 16:09:07 +02:00
parent 329541a42c
commit e9266f53ec
4 changed files with 77 additions and 66 deletions

View File

@@ -646,18 +646,18 @@ void CMakeBuildSettingsWidget::kitCMakeConfiguration()
m_buildConfig->kit()->unblockNotification(); m_buildConfig->kit()->unblockNotification();
}); });
CMakeKitAspect kitAspect; CMakeKitAspectFactory kitAspectFactory;
CMakeGeneratorKitAspect generatorAspect; CMakeGeneratorKitAspectFactory generatorAspectFactory;
CMakeConfigurationKitAspect configurationKitAspect; CMakeConfigurationKitAspectFactory configurationKitAspectFactory;
Layouting::Grid grid; Layouting::Grid grid;
KitAspect *widget = kitAspect.createKitAspect(m_buildConfig->kit()); KitAspect *widget = kitAspectFactory.createKitAspect(m_buildConfig->kit());
widget->setParent(dialog); widget->setParent(dialog);
widget->addToLayoutWithLabel(grid, dialog); widget->addToLayoutWithLabel(grid, dialog);
widget = generatorAspect.createKitAspect(m_buildConfig->kit()); widget = generatorAspectFactory.createKitAspect(m_buildConfig->kit());
widget->setParent(dialog); widget->setParent(dialog);
widget->addToLayoutWithLabel(grid, dialog); widget->addToLayoutWithLabel(grid, dialog);
widget = configurationKitAspect.createKitAspect(m_buildConfig->kit()); widget = configurationKitAspectFactory.createKitAspect(m_buildConfig->kit());
widget->setParent(dialog); widget->setParent(dialog);
widget->addToLayoutWithLabel(grid, dialog); widget->addToLayoutWithLabel(grid, dialog);
grid.attachTo(dialog); grid.attachTo(dialog);

View File

@@ -63,10 +63,10 @@ static Id defaultCMakeToolId()
return defaultTool ? defaultTool->id() : Id(); return defaultTool ? defaultTool->id() : Id();
} }
class CMakeKitAspectWidget final : public KitAspect class CMakeKitAspectImpl final : public KitAspect
{ {
public: public:
CMakeKitAspectWidget(Kit *kit, const KitAspectFactory *ki) : KitAspect(kit, ki), CMakeKitAspectImpl(Kit *kit, const KitAspectFactory *ki) : KitAspect(kit, ki),
m_comboBox(createSubWidget<QComboBox>()), m_comboBox(createSubWidget<QComboBox>()),
m_manageButton(createManageButton(Constants::Settings::TOOLS_ID)) m_manageButton(createManageButton(Constants::Settings::TOOLS_ID))
{ {
@@ -77,15 +77,15 @@ public:
refresh(); refresh();
connect(m_comboBox, &QComboBox::currentIndexChanged, connect(m_comboBox, &QComboBox::currentIndexChanged,
this, &CMakeKitAspectWidget::currentCMakeToolChanged); this, &CMakeKitAspectImpl::currentCMakeToolChanged);
CMakeToolManager *cmakeMgr = CMakeToolManager::instance(); CMakeToolManager *cmakeMgr = CMakeToolManager::instance();
connect(cmakeMgr, &CMakeToolManager::cmakeAdded, this, &CMakeKitAspectWidget::refresh); connect(cmakeMgr, &CMakeToolManager::cmakeAdded, this, &CMakeKitAspectImpl::refresh);
connect(cmakeMgr, &CMakeToolManager::cmakeRemoved, this, &CMakeKitAspectWidget::refresh); connect(cmakeMgr, &CMakeToolManager::cmakeRemoved, this, &CMakeKitAspectImpl::refresh);
connect(cmakeMgr, &CMakeToolManager::cmakeUpdated, this, &CMakeKitAspectWidget::refresh); connect(cmakeMgr, &CMakeToolManager::cmakeUpdated, this, &CMakeKitAspectImpl::refresh);
} }
~CMakeKitAspectWidget() override ~CMakeKitAspectImpl() override
{ {
delete m_comboBox; delete m_comboBox;
delete m_manageButton; delete m_manageButton;
@@ -162,7 +162,7 @@ private:
QWidget *m_manageButton; QWidget *m_manageButton;
}; };
CMakeKitAspect::CMakeKitAspect() CMakeKitAspectFactory::CMakeKitAspectFactory()
{ {
setObjectName(QLatin1String("CMakeKitAspect")); setObjectName(QLatin1String("CMakeKitAspect"));
setId(Constants::TOOL_ID); setId(Constants::TOOL_ID);
@@ -205,20 +205,21 @@ void CMakeKitAspect::setCMakeTool(Kit *k, const Id id)
k->setValue(Constants::TOOL_ID, toSet.toSetting()); k->setValue(Constants::TOOL_ID, toSet.toSetting());
} }
Tasks CMakeKitAspect::validate(const Kit *k) const Tasks CMakeKitAspectFactory::validate(const Kit *k) const
{ {
Tasks result; Tasks result;
CMakeTool *tool = CMakeKitAspect::cmakeTool(k); CMakeTool *tool = CMakeKitAspect::cmakeTool(k);
if (tool && tool->isValid()) { if (tool && tool->isValid()) {
CMakeTool::Version version = tool->version(); CMakeTool::Version version = tool->version();
if (version.major < 3 || (version.major == 3 && version.minor < 14)) { if (version.major < 3 || (version.major == 3 && version.minor < 14)) {
result << BuildSystemTask(Task::Warning, msgUnsupportedVersion(version.fullVersion)); result << BuildSystemTask(Task::Warning,
CMakeKitAspect::msgUnsupportedVersion(version.fullVersion));
} }
} }
return result; return result;
} }
void CMakeKitAspect::setup(Kit *k) void CMakeKitAspectFactory::setup(Kit *k)
{ {
CMakeTool *tool = CMakeKitAspect::cmakeTool(k); CMakeTool *tool = CMakeKitAspect::cmakeTool(k);
if (tool) if (tool)
@@ -229,32 +230,32 @@ void CMakeKitAspect::setup(Kit *k)
for (CMakeTool *tool : CMakeToolManager::cmakeTools()) { for (CMakeTool *tool : CMakeToolManager::cmakeTools()) {
const QString toolSource = tool->detectionSource(); const QString toolSource = tool->detectionSource();
if (!toolSource.isEmpty() && toolSource == kitSource) { if (!toolSource.isEmpty() && toolSource == kitSource) {
setCMakeTool(k, tool->id()); CMakeKitAspect::setCMakeTool(k, tool->id());
return; return;
} }
} }
setCMakeTool(k, defaultCMakeToolId()); CMakeKitAspect::setCMakeTool(k, defaultCMakeToolId());
} }
void CMakeKitAspect::fix(Kit *k) void CMakeKitAspectFactory::fix(Kit *k)
{ {
setup(k); setup(k);
} }
KitAspectFactory::ItemList CMakeKitAspect::toUserOutput(const Kit *k) const KitAspectFactory::ItemList CMakeKitAspectFactory::toUserOutput(const Kit *k) const
{ {
const CMakeTool *const tool = cmakeTool(k); const CMakeTool *const tool = CMakeKitAspect::cmakeTool(k);
return {{Tr::tr("CMake"), tool ? tool->displayName() : Tr::tr("Unconfigured")}}; return {{Tr::tr("CMake"), tool ? tool->displayName() : Tr::tr("Unconfigured")}};
} }
KitAspect *CMakeKitAspect::createKitAspect(Kit *k) const KitAspect *CMakeKitAspectFactory::createKitAspect(Kit *k) const
{ {
QTC_ASSERT(k, return nullptr); QTC_ASSERT(k, return nullptr);
return new CMakeKitAspectWidget(k, this); return new CMakeKitAspectImpl(k, this);
} }
void CMakeKitAspect::addToMacroExpander(Kit *k, MacroExpander *expander) const void CMakeKitAspectFactory::addToMacroExpander(Kit *k, MacroExpander *expander) const
{ {
QTC_ASSERT(k, return); QTC_ASSERT(k, return);
expander->registerFileVariables("CMake:Executable", Tr::tr("Path to the cmake executable"), expander->registerFileVariables("CMake:Executable", Tr::tr("Path to the cmake executable"),
@@ -264,9 +265,9 @@ void CMakeKitAspect::addToMacroExpander(Kit *k, MacroExpander *expander) const
}); });
} }
QSet<Id> CMakeKitAspect::availableFeatures(const Kit *k) const QSet<Id> CMakeKitAspectFactory::availableFeatures(const Kit *k) const
{ {
if (cmakeTool(k)) if (CMakeKitAspect::cmakeTool(k))
return { CMakeProjectManager::Constants::CMAKE_FEATURE_ID }; return { CMakeProjectManager::Constants::CMAKE_FEATURE_ID };
return {}; return {};
} }
@@ -289,10 +290,10 @@ const char EXTRA_GENERATOR_KEY[] = "ExtraGenerator";
const char PLATFORM_KEY[] = "Platform"; const char PLATFORM_KEY[] = "Platform";
const char TOOLSET_KEY[] = "Toolset"; const char TOOLSET_KEY[] = "Toolset";
class CMakeGeneratorKitAspectWidget final : public KitAspect class CMakeGeneratorKitAspectImpl final : public KitAspect
{ {
public: public:
CMakeGeneratorKitAspectWidget(Kit *kit, const KitAspectFactory *ki) CMakeGeneratorKitAspectImpl(Kit *kit, const KitAspectFactory *ki)
: KitAspect(kit, ki), : KitAspect(kit, ki),
m_label(createSubWidget<ElidingLabel>()), m_label(createSubWidget<ElidingLabel>()),
m_changeButton(createSubWidget<QPushButton>()) m_changeButton(createSubWidget<QPushButton>())
@@ -306,10 +307,10 @@ public:
m_changeButton->setText(Tr::tr("Change...")); m_changeButton->setText(Tr::tr("Change..."));
refresh(); refresh();
connect(m_changeButton, &QPushButton::clicked, connect(m_changeButton, &QPushButton::clicked,
this, &CMakeGeneratorKitAspectWidget::changeGenerator); this, &CMakeGeneratorKitAspectImpl::changeGenerator);
} }
~CMakeGeneratorKitAspectWidget() override ~CMakeGeneratorKitAspectImpl() override
{ {
delete m_label; delete m_label;
delete m_changeButton; delete m_changeButton;
@@ -511,7 +512,7 @@ static void setGeneratorInfo(Kit *k, const GeneratorInfo &info)
k->setValue(GENERATOR_ID, info.toVariant()); k->setValue(GENERATOR_ID, info.toVariant());
} }
CMakeGeneratorKitAspect::CMakeGeneratorKitAspect() CMakeGeneratorKitAspectFactory::CMakeGeneratorKitAspectFactory()
{ {
setObjectName(QLatin1String("CMakeGeneratorKitAspect")); setObjectName(QLatin1String("CMakeGeneratorKitAspect"));
setId(GENERATOR_ID); setId(GENERATOR_ID);
@@ -631,7 +632,7 @@ bool CMakeGeneratorKitAspect::isMultiConfigGenerator(const Kit *k)
generator == "Ninja Multi-Config"; generator == "Ninja Multi-Config";
} }
QVariant CMakeGeneratorKitAspect::defaultValue(const Kit *k) const QVariant CMakeGeneratorKitAspectFactory::defaultValue(const Kit *k) const
{ {
QTC_ASSERT(k, return QVariant()); QTC_ASSERT(k, return QVariant());
@@ -708,7 +709,7 @@ QVariant CMakeGeneratorKitAspect::defaultValue(const Kit *k) const
return GeneratorInfo(it->name).toVariant(); return GeneratorInfo(it->name).toVariant();
} }
Tasks CMakeGeneratorKitAspect::validate(const Kit *k) const Tasks CMakeGeneratorKitAspectFactory::validate(const Kit *k) const
{ {
CMakeTool *tool = CMakeKitAspect::cmakeTool(k); CMakeTool *tool = CMakeKitAspect::cmakeTool(k);
if (!tool) if (!tool)
@@ -745,7 +746,7 @@ Tasks CMakeGeneratorKitAspect::validate(const Kit *k) const
return result; return result;
} }
void CMakeGeneratorKitAspect::setup(Kit *k) void CMakeGeneratorKitAspectFactory::setup(Kit *k)
{ {
if (!k || k->hasValue(id())) if (!k || k->hasValue(id()))
return; return;
@@ -754,7 +755,7 @@ void CMakeGeneratorKitAspect::setup(Kit *k)
setGeneratorInfo(k, info); setGeneratorInfo(k, info);
} }
void CMakeGeneratorKitAspect::fix(Kit *k) void CMakeGeneratorKitAspectFactory::fix(Kit *k)
{ {
const CMakeTool *tool = CMakeKitAspect::cmakeTool(k); const CMakeTool *tool = CMakeKitAspect::cmakeTool(k);
const GeneratorInfo info = generatorInfo(k); const GeneratorInfo info = generatorInfo(k);
@@ -779,7 +780,7 @@ void CMakeGeneratorKitAspect::fix(Kit *k)
} }
} }
void CMakeGeneratorKitAspect::upgrade(Kit *k) void CMakeGeneratorKitAspectFactory::upgrade(Kit *k)
{ {
QTC_ASSERT(k, return); QTC_ASSERT(k, return);
@@ -798,7 +799,7 @@ void CMakeGeneratorKitAspect::upgrade(Kit *k)
} }
} }
KitAspectFactory::ItemList CMakeGeneratorKitAspect::toUserOutput(const Kit *k) const KitAspectFactory::ItemList CMakeGeneratorKitAspectFactory::toUserOutput(const Kit *k) const
{ {
const GeneratorInfo info = generatorInfo(k); const GeneratorInfo info = generatorInfo(k);
QString message; QString message;
@@ -814,12 +815,12 @@ KitAspectFactory::ItemList CMakeGeneratorKitAspect::toUserOutput(const Kit *k) c
return {{Tr::tr("CMake Generator"), message}}; return {{Tr::tr("CMake Generator"), message}};
} }
KitAspect *CMakeGeneratorKitAspect::createKitAspect(Kit *k) const KitAspect *CMakeGeneratorKitAspectFactory::createKitAspect(Kit *k) const
{ {
return new CMakeGeneratorKitAspectWidget(k, this); return new CMakeGeneratorKitAspectImpl(k, this);
} }
void CMakeGeneratorKitAspect::addToBuildEnvironment(const Kit *k, Environment &env) const void CMakeGeneratorKitAspectFactory::addToBuildEnvironment(const Kit *k, Environment &env) const
{ {
GeneratorInfo info = generatorInfo(k); GeneratorInfo info = generatorInfo(k);
if (info.generator == "NMake Makefiles JOM") { if (info.generator == "NMake Makefiles JOM") {
@@ -1001,7 +1002,7 @@ private:
}; };
CMakeConfigurationKitAspect::CMakeConfigurationKitAspect() CMakeConfigurationKitAspectFactory::CMakeConfigurationKitAspectFactory()
{ {
setObjectName(QLatin1String("CMakeConfigurationKitAspect")); setObjectName(QLatin1String("CMakeConfigurationKitAspect"));
setId(CONFIGURATION_ID); setId(CONFIGURATION_ID);
@@ -1102,16 +1103,16 @@ CMakeConfigItem CMakeConfigurationKitAspect::cmakePresetConfigItem(const Project
}); });
} }
QVariant CMakeConfigurationKitAspect::defaultValue(const Kit *k) const QVariant CMakeConfigurationKitAspectFactory::defaultValue(const Kit *k) const
{ {
// FIXME: Convert preload scripts // FIXME: Convert preload scripts
CMakeConfig config = defaultConfiguration(k); CMakeConfig config = CMakeConfigurationKitAspect::defaultConfiguration(k);
const QStringList tmp = Utils::transform(config.toList(), const QStringList tmp = Utils::transform(config.toList(),
[](const CMakeConfigItem &i) { return i.toString(); }); [](const CMakeConfigItem &i) { return i.toString(); });
return tmp; return tmp;
} }
Tasks CMakeConfigurationKitAspect::validate(const Kit *k) const Tasks CMakeConfigurationKitAspectFactory::validate(const Kit *k) const
{ {
QTC_ASSERT(k, return Tasks()); QTC_ASSERT(k, return Tasks());
@@ -1122,7 +1123,7 @@ Tasks CMakeConfigurationKitAspect::validate(const Kit *k) const
const QtSupport::QtVersion *const version = QtSupport::QtKitAspect::qtVersion(k); const QtSupport::QtVersion *const version = QtSupport::QtKitAspect::qtVersion(k);
const ToolChain *const tcC = ToolChainKitAspect::cToolChain(k); const ToolChain *const tcC = ToolChainKitAspect::cToolChain(k);
const ToolChain *const tcCxx = ToolChainKitAspect::cxxToolChain(k); const ToolChain *const tcCxx = ToolChainKitAspect::cxxToolChain(k);
const CMakeConfig config = configuration(k); const CMakeConfig config = CMakeConfigurationKitAspect::configuration(k);
const bool isQt4 = version && version->qtVersion() < QVersionNumber(5, 0, 0); const bool isQt4 = version && version->qtVersion() < QVersionNumber(5, 0, 0);
FilePath qmakePath; // This is relative to the cmake used for building. FilePath qmakePath; // This is relative to the cmake used for building.
@@ -1206,23 +1207,23 @@ Tasks CMakeConfigurationKitAspect::validate(const Kit *k) const
return result; return result;
} }
void CMakeConfigurationKitAspect::setup(Kit *k) void CMakeConfigurationKitAspectFactory::setup(Kit *k)
{ {
if (k && !k->hasValue(CONFIGURATION_ID)) if (k && !k->hasValue(CONFIGURATION_ID))
k->setValue(CONFIGURATION_ID, defaultValue(k)); k->setValue(CONFIGURATION_ID, defaultValue(k));
} }
void CMakeConfigurationKitAspect::fix(Kit *k) void CMakeConfigurationKitAspectFactory::fix(Kit *k)
{ {
Q_UNUSED(k) Q_UNUSED(k)
} }
KitAspectFactory::ItemList CMakeConfigurationKitAspect::toUserOutput(const Kit *k) const KitAspectFactory::ItemList CMakeConfigurationKitAspectFactory::toUserOutput(const Kit *k) const
{ {
return {{Tr::tr("CMake Configuration"), toStringList(k).join("<br>")}}; return {{Tr::tr("CMake Configuration"), CMakeConfigurationKitAspect::toStringList(k).join("<br>")}};
} }
KitAspect *CMakeConfigurationKitAspect::createKitAspect(Kit *k) const KitAspect *CMakeConfigurationKitAspectFactory::createKitAspect(Kit *k) const
{ {
if (!k) if (!k)
return nullptr; return nullptr;

View File

@@ -13,16 +13,21 @@ namespace CMakeProjectManager {
class CMakeTool; class CMakeTool;
class CMAKE_EXPORT CMakeKitAspect : public ProjectExplorer::KitAspectFactory class CMAKE_EXPORT CMakeKitAspect
{ {
public: public:
CMakeKitAspect();
static Utils::Id id(); static Utils::Id id();
static Utils::Id cmakeToolId(const ProjectExplorer::Kit *k); static Utils::Id cmakeToolId(const ProjectExplorer::Kit *k);
static CMakeTool *cmakeTool(const ProjectExplorer::Kit *k); static CMakeTool *cmakeTool(const ProjectExplorer::Kit *k);
static void setCMakeTool(ProjectExplorer::Kit *k, const Utils::Id id); static void setCMakeTool(ProjectExplorer::Kit *k, const Utils::Id id);
static QString msgUnsupportedVersion(const QByteArray &versionString);
};
class CMAKE_EXPORT CMakeKitAspectFactory : public ProjectExplorer::KitAspectFactory
{
public:
CMakeKitAspectFactory();
// KitAspect interface // KitAspect interface
ProjectExplorer::Tasks validate(const ProjectExplorer::Kit *k) const final; ProjectExplorer::Tasks validate(const ProjectExplorer::Kit *k) const final;
@@ -34,15 +39,11 @@ public:
void addToMacroExpander(ProjectExplorer::Kit *k, Utils::MacroExpander *expander) const final; void addToMacroExpander(ProjectExplorer::Kit *k, Utils::MacroExpander *expander) const final;
QSet<Utils::Id> availableFeatures(const ProjectExplorer::Kit *k) const final; QSet<Utils::Id> availableFeatures(const ProjectExplorer::Kit *k) const final;
static QString msgUnsupportedVersion(const QByteArray &versionString);
}; };
class CMAKE_EXPORT CMakeGeneratorKitAspect : public ProjectExplorer::KitAspectFactory class CMAKE_EXPORT CMakeGeneratorKitAspect
{ {
public: public:
CMakeGeneratorKitAspect();
static QString generator(const ProjectExplorer::Kit *k); static QString generator(const ProjectExplorer::Kit *k);
static QString extraGenerator(const ProjectExplorer::Kit *k); static QString extraGenerator(const ProjectExplorer::Kit *k);
static QString platform(const ProjectExplorer::Kit *k); static QString platform(const ProjectExplorer::Kit *k);
@@ -56,8 +57,13 @@ public:
static QStringList generatorArguments(const ProjectExplorer::Kit *k); static QStringList generatorArguments(const ProjectExplorer::Kit *k);
static CMakeConfig generatorCMakeConfig(const ProjectExplorer::Kit *k); static CMakeConfig generatorCMakeConfig(const ProjectExplorer::Kit *k);
static bool isMultiConfigGenerator(const ProjectExplorer::Kit *k); static bool isMultiConfigGenerator(const ProjectExplorer::Kit *k);
};
class CMAKE_EXPORT CMakeGeneratorKitAspectFactory : public ProjectExplorer::KitAspectFactory
{
public:
CMakeGeneratorKitAspectFactory();
// KitAspect interface
ProjectExplorer::Tasks validate(const ProjectExplorer::Kit *k) const final; ProjectExplorer::Tasks validate(const ProjectExplorer::Kit *k) const final;
void setup(ProjectExplorer::Kit *k) final; void setup(ProjectExplorer::Kit *k) final;
void fix(ProjectExplorer::Kit *k) final; void fix(ProjectExplorer::Kit *k) final;
@@ -70,11 +76,9 @@ private:
QVariant defaultValue(const ProjectExplorer::Kit *k) const; QVariant defaultValue(const ProjectExplorer::Kit *k) const;
}; };
class CMAKE_EXPORT CMakeConfigurationKitAspect : public ProjectExplorer::KitAspectFactory class CMAKE_EXPORT CMakeConfigurationKitAspect
{ {
public: public:
CMakeConfigurationKitAspect();
static CMakeConfig configuration(const ProjectExplorer::Kit *k); static CMakeConfig configuration(const ProjectExplorer::Kit *k);
static void setConfiguration(ProjectExplorer::Kit *k, const CMakeConfig &config); static void setConfiguration(ProjectExplorer::Kit *k, const CMakeConfig &config);
@@ -90,6 +94,12 @@ public:
static void setCMakePreset(ProjectExplorer::Kit *k, const QString &presetName); static void setCMakePreset(ProjectExplorer::Kit *k, const QString &presetName);
static CMakeConfigItem cmakePresetConfigItem(const ProjectExplorer::Kit *k); static CMakeConfigItem cmakePresetConfigItem(const ProjectExplorer::Kit *k);
};
class CMAKE_EXPORT CMakeConfigurationKitAspectFactory : public ProjectExplorer::KitAspectFactory
{
public:
CMakeConfigurationKitAspectFactory();
// KitAspect interface // KitAspect interface
ProjectExplorer::Tasks validate(const ProjectExplorer::Kit *k) const final; ProjectExplorer::Tasks validate(const ProjectExplorer::Kit *k) const final;

View File

@@ -62,9 +62,9 @@ public:
CMakeBuildTargetFilter cMakeBuildTargetFilter; CMakeBuildTargetFilter cMakeBuildTargetFilter;
CMakeOpenTargetFilter cMakeOpenTargetFilter; CMakeOpenTargetFilter cMakeOpenTargetFilter;
CMakeKitAspect cmakeKitAspect; CMakeKitAspectFactory cmakeKitAspectFactory;
CMakeGeneratorKitAspect cmakeGeneratorKitAspect; CMakeGeneratorKitAspectFactory cmakeGeneratorKitAspectFactory;
CMakeConfigurationKitAspect cmakeConfigurationKitAspect; CMakeConfigurationKitAspectFactory cmakeConfigurationKitAspectFactory;
CMakeFormatter cmakeFormatter; CMakeFormatter cmakeFormatter;
}; };