From b509006d1caf956dcf18f737ca59e4c1ad4fba5a Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 17 Aug 2023 18:12:06 +0200 Subject: [PATCH] MesonProjectManager: Hide KitAspectFactory implementations Change-Id: I7ba81771475905f63f4696b3d9073311eea0ee0a Reviewed-by: Jarek Kobus Reviewed-by: --- .../mesonprojectplugin.cpp | 4 - .../mesontoolkitaspect.cpp | 112 +++++++++--------- .../mesonprojectmanager/mesontoolkitaspect.h | 13 -- .../ninjatoolkitaspect.cpp | 109 +++++++++-------- .../mesonprojectmanager/ninjatoolkitaspect.h | 12 -- 5 files changed, 117 insertions(+), 133 deletions(-) diff --git a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp index e7518d74013..cc1e3eb1e27 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp @@ -8,9 +8,7 @@ #include "mesonbuildsystem.h" #include "mesonproject.h" #include "mesonrunconfiguration.h" -#include "mesontoolkitaspect.h" #include "ninjabuildstep.h" -#include "ninjatoolkitaspect.h" #include "toolssettingsaccessor.h" #include "toolssettingspage.h" @@ -46,8 +44,6 @@ public: private: ToolsSettingsPage m_toolslSettingsPage; ToolsSettingsAccessor m_toolsSettings; - MesonToolKitAspectFactory m_mesonKitAspectFactory; - NinjaToolKitAspectFactory m_ninjaKitAspectFactory; MesonBuildStepFactory m_buildStepFactory; MesonBuildConfigurationFactory m_buildConfigurationFactory; MesonRunConfigurationFactory m_runConfigurationFactory; diff --git a/src/plugins/mesonprojectmanager/mesontoolkitaspect.cpp b/src/plugins/mesonprojectmanager/mesontoolkitaspect.cpp index b5b494064a0..1e33a0ec650 100644 --- a/src/plugins/mesonprojectmanager/mesontoolkitaspect.cpp +++ b/src/plugins/mesonprojectmanager/mesontoolkitaspect.cpp @@ -8,70 +8,76 @@ #include +using namespace ProjectExplorer; + namespace MesonProjectManager::Internal { -static const char TOOL_ID[] = "MesonProjectManager.MesonKitInformation.Meson"; +const char TOOL_ID[] = "MesonProjectManager.MesonKitInformation.Meson"; -MesonToolKitAspectFactory::MesonToolKitAspectFactory() -{ - setObjectName(QLatin1String("MesonKitAspect")); - setId(TOOL_ID); - setDisplayName(Tr::tr("Meson Tool")); - setDescription(Tr::tr("The Meson tool to use when building a project with Meson.
" - "This setting is ignored when using other build systems.")); - setPriority(9000); -} - -ProjectExplorer::Tasks MesonToolKitAspectFactory::validate(const ProjectExplorer::Kit *k) const -{ - ProjectExplorer::Tasks tasks; - const auto tool = MesonToolKitAspect::mesonTool(k); - if (tool && !tool->isValid()) - tasks << ProjectExplorer::BuildSystemTask{ProjectExplorer::Task::Warning, - Tr::tr("Cannot validate this meson executable.")}; - return tasks; -} - -void MesonToolKitAspectFactory::setup(ProjectExplorer::Kit *k) -{ - const auto tool = MesonToolKitAspect::mesonTool(k); - if (!tool) { - const auto autoDetected = MesonTools::mesonWrapper(); - if (autoDetected) - MesonToolKitAspect::setMesonTool(k, autoDetected->id()); - } -} - -void MesonToolKitAspectFactory::fix(ProjectExplorer::Kit *k) -{ - setup(k); -} - -ProjectExplorer::KitAspectFactory::ItemList MesonToolKitAspectFactory::toUserOutput( - const ProjectExplorer::Kit *k) const -{ - const auto tool = MesonToolKitAspect::mesonTool(k); - if (tool) - return {{Tr::tr("Meson"), tool->name()}}; - return {{Tr::tr("Meson"), Tr::tr("Unconfigured")}}; -} - -ProjectExplorer::KitAspect *MesonToolKitAspectFactory::createKitAspect(ProjectExplorer::Kit *k) const -{ - QTC_ASSERT(k, return nullptr); - return new ToolKitAspectWidget{k, this, ToolKitAspectWidget::ToolType::Meson}; -} - -void MesonToolKitAspect::setMesonTool(ProjectExplorer::Kit *kit, Utils::Id id) +void MesonToolKitAspect::setMesonTool(Kit *kit, Utils::Id id) { QTC_ASSERT(kit && id.isValid(), return ); kit->setValue(TOOL_ID, id.toSetting()); } -Utils::Id MesonToolKitAspect::mesonToolId(const ProjectExplorer::Kit *kit) +Utils::Id MesonToolKitAspect::mesonToolId(const Kit *kit) { QTC_ASSERT(kit, return {}); return Utils::Id::fromSetting(kit->value(TOOL_ID)); } +// MesonToolKitAspectFactory + +class MesonToolKitAspectFactory final : public KitAspectFactory +{ +public: + MesonToolKitAspectFactory() + { + setObjectName(QLatin1String("MesonKitAspect")); + setId(TOOL_ID); + setDisplayName(Tr::tr("Meson Tool")); + setDescription(Tr::tr("The Meson tool to use when building a project with Meson.
" + "This setting is ignored when using other build systems.")); + setPriority(9000); + } + + Tasks validate(const Kit *k) const final + { + Tasks tasks; + const auto tool = MesonToolKitAspect::mesonTool(k); + if (tool && !tool->isValid()) + tasks << BuildSystemTask{Task::Warning, Tr::tr("Cannot validate this meson executable.")}; + return tasks; + } + + void setup(Kit *k) final + { + const auto tool = MesonToolKitAspect::mesonTool(k); + if (!tool) { + const auto autoDetected = MesonTools::mesonWrapper(); + if (autoDetected) + MesonToolKitAspect::setMesonTool(k, autoDetected->id()); + } + } + void fix(Kit *k) final + { + setup(k); + } + + KitAspect *createKitAspect(Kit *k) const + { + return new ToolKitAspectWidget{k, this, ToolKitAspectWidget::ToolType::Meson}; + } + + ItemList toUserOutput( const Kit *k) const + { + const auto tool = MesonToolKitAspect::mesonTool(k); + if (tool) + return {{Tr::tr("Meson"), tool->name()}}; + return {{Tr::tr("Meson"), Tr::tr("Unconfigured")}}; + } +}; + +const MesonToolKitAspectFactory theMesonKitAspectFactory; + } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/mesontoolkitaspect.h b/src/plugins/mesonprojectmanager/mesontoolkitaspect.h index b6764c2ea91..3924d455f47 100644 --- a/src/plugins/mesonprojectmanager/mesontoolkitaspect.h +++ b/src/plugins/mesonprojectmanager/mesontoolkitaspect.h @@ -28,17 +28,4 @@ public: } }; -class MesonToolKitAspectFactory final : public ProjectExplorer::KitAspectFactory -{ -public: - MesonToolKitAspectFactory(); - - ProjectExplorer::Tasks validate(const ProjectExplorer::Kit *k) const final; - void setup(ProjectExplorer::Kit *k) final; - void fix(ProjectExplorer::Kit *k) final; - ItemList toUserOutput(const ProjectExplorer::Kit *k) const final; - ProjectExplorer::KitAspect *createKitAspect(ProjectExplorer::Kit *) const final; - -}; - } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/ninjatoolkitaspect.cpp b/src/plugins/mesonprojectmanager/ninjatoolkitaspect.cpp index 1e093588252..ccf393e4ded 100644 --- a/src/plugins/mesonprojectmanager/ninjatoolkitaspect.cpp +++ b/src/plugins/mesonprojectmanager/ninjatoolkitaspect.cpp @@ -8,59 +8,11 @@ #include +using namespace ProjectExplorer; + namespace MesonProjectManager::Internal { -static const char TOOL_ID[] = "MesonProjectManager.MesonKitInformation.Ninja"; - -NinjaToolKitAspectFactory::NinjaToolKitAspectFactory() -{ - setObjectName(QLatin1String("NinjaKitAspect")); - setId(TOOL_ID); - setDisplayName(Tr::tr("Ninja Tool")); - setDescription(Tr::tr("The Ninja tool to use when building a project with Meson.
" - "This setting is ignored when using other build systems.")); - setPriority(9000); -} - -ProjectExplorer::Tasks NinjaToolKitAspectFactory::validate(const ProjectExplorer::Kit *k) const -{ - ProjectExplorer::Tasks tasks; - const auto tool = NinjaToolKitAspect::ninjaTool(k); - if (tool && !tool->isValid()) - tasks << ProjectExplorer::BuildSystemTask{ProjectExplorer::Task::Warning, - Tr::tr("Cannot validate this Ninja executable.")}; - return tasks; -} - -void NinjaToolKitAspectFactory::setup(ProjectExplorer::Kit *k) -{ - const auto tool = NinjaToolKitAspect::ninjaTool(k); - if (!tool) { - const auto autoDetected = MesonTools::ninjaWrapper(); - if (autoDetected) - NinjaToolKitAspect::setNinjaTool(k, autoDetected->id()); - } -} - -void NinjaToolKitAspectFactory::fix(ProjectExplorer::Kit *k) -{ - setup(k); -} - -ProjectExplorer::KitAspectFactory::ItemList NinjaToolKitAspectFactory::toUserOutput( - const ProjectExplorer::Kit *k) const -{ - const auto tool = NinjaToolKitAspect::ninjaTool(k); - if (tool) - return {{Tr::tr("Ninja"), tool->name()}}; - return {{Tr::tr("Ninja"), Tr::tr("Unconfigured")}}; -} - -ProjectExplorer::KitAspect *NinjaToolKitAspectFactory::createKitAspect(ProjectExplorer::Kit *k) const -{ - QTC_ASSERT(k, return nullptr); - return new ToolKitAspectWidget{k, this, ToolKitAspectWidget::ToolType::Ninja}; -} +const char TOOL_ID[] = "MesonProjectManager.MesonKitInformation.Ninja"; void NinjaToolKitAspect::setNinjaTool(ProjectExplorer::Kit *kit, Utils::Id id) { @@ -74,4 +26,59 @@ Utils::Id NinjaToolKitAspect::ninjaToolId(const ProjectExplorer::Kit *kit) return Utils::Id::fromSetting(kit->value(TOOL_ID)); } +// NinjaToolKitAspectFactory + +class NinjaToolKitAspectFactory final : public ProjectExplorer::KitAspectFactory +{ +public: + NinjaToolKitAspectFactory() + { + setObjectName(QLatin1String("NinjaKitAspect")); + setId(TOOL_ID); + setDisplayName(Tr::tr("Ninja Tool")); + setDescription(Tr::tr("The Ninja tool to use when building a project with Meson.
" + "This setting is ignored when using other build systems.")); + setPriority(9000); + } + + Tasks validate(const Kit *k) const final + { + Tasks tasks; + const auto tool = NinjaToolKitAspect::ninjaTool(k); + if (tool && !tool->isValid()) + tasks << BuildSystemTask{Task::Warning, + Tr::tr("Cannot validate this Ninja executable.")}; + return tasks; + } + + void setup(Kit *k) final + { + const auto tool = NinjaToolKitAspect::ninjaTool(k); + if (!tool) { + const auto autoDetected = MesonTools::ninjaWrapper(); + if (autoDetected) + NinjaToolKitAspect::setNinjaTool(k, autoDetected->id()); + } + } + void fix(Kit *k) final + { + setup(k); + } + + ItemList toUserOutput( const Kit *k) const + { + const auto tool = NinjaToolKitAspect::ninjaTool(k); + if (tool) + return {{Tr::tr("Ninja"), tool->name()}}; + return {{Tr::tr("Ninja"), Tr::tr("Unconfigured")}}; + } + + KitAspect *createKitAspect(Kit *k) const final + { + return new ToolKitAspectWidget(k, this, ToolKitAspectWidget::ToolType::Ninja); + } +}; + +const NinjaToolKitAspectFactory theNinjaToolKitAspectFactory; + } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/ninjatoolkitaspect.h b/src/plugins/mesonprojectmanager/ninjatoolkitaspect.h index ce080d1e676..d1ee50c7a38 100644 --- a/src/plugins/mesonprojectmanager/ninjatoolkitaspect.h +++ b/src/plugins/mesonprojectmanager/ninjatoolkitaspect.h @@ -27,16 +27,4 @@ public: } }; -class NinjaToolKitAspectFactory final : public ProjectExplorer::KitAspectFactory -{ -public: - NinjaToolKitAspectFactory(); - - ProjectExplorer::Tasks validate(const ProjectExplorer::Kit *k) const final; - void setup(ProjectExplorer::Kit *k) final; - void fix(ProjectExplorer::Kit *k) final; - ItemList toUserOutput(const ProjectExplorer::Kit *k) const final; - ProjectExplorer::KitAspect *createKitAspect(ProjectExplorer::Kit *) const final; -}; - } // MesonProjectManager::Internal