From d016ef67b3d327aa63849dcf9f1800e30b7e301d Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 29 Jan 2024 14:59:59 +0100 Subject: [PATCH] CMake: Use setup functions for more plugin items Change-Id: I48ff764248f29ef2a8f46757cba84705983c7740 Reviewed-by: Reviewed-by: Jarek Kobus --- .../cmakeprojectmanager/cmakeformatter.cpp | 8 +- .../cmakeprojectmanager/cmakeformatter.h | 8 +- .../cmakeprojectmanager/cmakeinstallstep.cpp | 25 ++++-- .../cmakeprojectmanager/cmakeinstallstep.h | 8 +- .../cmakelocatorfilter.cpp | 84 +++++++++++-------- .../cmakeprojectmanager/cmakelocatorfilter.h | 22 +---- .../cmakeprojectplugin.cpp | 10 +-- 7 files changed, 76 insertions(+), 89 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeformatter.cpp b/src/plugins/cmakeprojectmanager/cmakeformatter.cpp index 80d2a0ad413..d5aac5e64b2 100644 --- a/src/plugins/cmakeprojectmanager/cmakeformatter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeformatter.cpp @@ -271,11 +271,11 @@ public: } }; -const CMakeFormatterSettingsPage settingsPage; - -CMakeFormatter::CMakeFormatter() +void setupCMakeFormatter() { + static const CMakeFormatterSettingsPage theCMakeFormatterSettingsPage; + formatterSettings(); -} +}; } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeformatter.h b/src/plugins/cmakeprojectmanager/cmakeformatter.h index bb3ea353537..97814e3609b 100644 --- a/src/plugins/cmakeprojectmanager/cmakeformatter.h +++ b/src/plugins/cmakeprojectmanager/cmakeformatter.h @@ -4,14 +4,8 @@ #pragma once -namespace Core { class IDocument; } - namespace CMakeProjectManager::Internal { -class CMakeFormatter -{ -public: - CMakeFormatter(); -}; +void setupCMakeFormatter(); } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeinstallstep.cpp b/src/plugins/cmakeprojectmanager/cmakeinstallstep.cpp index 6043f11adfb..1040efd75ca 100644 --- a/src/plugins/cmakeprojectmanager/cmakeinstallstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeinstallstep.cpp @@ -11,6 +11,7 @@ #include "cmakeprojectmanagertr.h" #include "cmaketool.h" +#include #include #include #include @@ -27,7 +28,7 @@ namespace CMakeProjectManager::Internal { // CMakeInstallStep -class CMakeInstallStep : public CMakeAbstractProcessStep +class CMakeInstallStep final : public CMakeAbstractProcessStep { public: CMakeInstallStep(BuildStepList *bsl, Id id) @@ -112,14 +113,22 @@ QWidget *CMakeInstallStep::createConfigWidget() // CMakeInstallStepFactory -CMakeInstallStepFactory::CMakeInstallStepFactory() +class CMakeInstallStepFactory : public ProjectExplorer::BuildStepFactory { - registerStep(Constants::CMAKE_INSTALL_STEP_ID); - setDisplayName( - Tr::tr("CMake Install", "Display name for CMakeProjectManager::CMakeInstallStep id.")); - setSupportedProjectType(Constants::CMAKE_PROJECT_ID); - setSupportedStepLists({ProjectExplorer::Constants::BUILDSTEPS_DEPLOY}); +public: + CMakeInstallStepFactory() + { + registerStep(Constants::CMAKE_INSTALL_STEP_ID); + setDisplayName( + Tr::tr("CMake Install", "Display name for CMakeProjectManager::CMakeInstallStep id.")); + setSupportedProjectType(Constants::CMAKE_PROJECT_ID); + setSupportedStepLists({ProjectExplorer::Constants::BUILDSTEPS_DEPLOY}); + } +}; + +void setupCMakeInstallStep() +{ + static CMakeInstallStepFactory theCMakeInstallStepFactory; } } // CMakeProjectManager::Internal - diff --git a/src/plugins/cmakeprojectmanager/cmakeinstallstep.h b/src/plugins/cmakeprojectmanager/cmakeinstallstep.h index 3d0474e0727..66ab37836fc 100644 --- a/src/plugins/cmakeprojectmanager/cmakeinstallstep.h +++ b/src/plugins/cmakeprojectmanager/cmakeinstallstep.h @@ -3,14 +3,8 @@ #pragma once -#include - namespace CMakeProjectManager::Internal { -class CMakeInstallStepFactory : public ProjectExplorer::BuildStepFactory -{ -public: - CMakeInstallStepFactory(); -}; +void setupCMakeInstallStep(); } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp index b016b0e10a3..0964aae46c3 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.cpp @@ -8,6 +8,8 @@ #include "cmakeproject.h" #include "cmakeprojectmanagertr.h" +#include + #include #include #include @@ -23,6 +25,8 @@ namespace CMakeProjectManager::Internal { using BuildAcceptor = std::function; +// CMakeBuildTargetFilter + static LocatorMatcherTasks cmakeMatchers(const BuildAcceptor &acceptor) { using namespace Tasking; @@ -80,7 +84,7 @@ static LocatorMatcherTasks cmakeMatchers(const BuildAcceptor &acceptor) return {{Sync(onSetup), storage}}; } -void setupFilter(ILocatorFilter *filter) +static void setupFilter(ILocatorFilter *filter) { const auto projectListUpdated = [filter] { filter->setEnabled(Utils::contains(ProjectManager::projects(), @@ -92,10 +96,6 @@ void setupFilter(ILocatorFilter *filter) filter, projectListUpdated); } -// -------------------------------------------------------------------- -// BuildCMakeTargetLocatorFilter: -// -------------------------------------------------------------------- - static void buildAcceptor(const FilePath &projectPath, const QString &displayName) { // Get the project containing the target selected @@ -126,38 +126,48 @@ static void buildAcceptor(const FilePath &projectPath, const QString &displayNam buildStep->setBuildTargets(oldTargets); } -CMakeBuildTargetFilter::CMakeBuildTargetFilter() +class CMakeBuildTargetFilter final : ILocatorFilter { - setId("Build CMake target"); - setDisplayName(Tr::tr("Build CMake Target")); - setDescription(Tr::tr("Builds a target of any open CMake project.")); - setDefaultShortcutString("cm"); - setPriority(High); - setupFilter(this); +public: + CMakeBuildTargetFilter() + { + setId("Build CMake target"); + setDisplayName(Tr::tr("Build CMake Target")); + setDescription(Tr::tr("Builds a target of any open CMake project.")); + setDefaultShortcutString("cm"); + setPriority(High); + setupFilter(this); + } + +private: + LocatorMatcherTasks matchers() final { return cmakeMatchers(&buildAcceptor); } +}; + +// OpenCMakeTargetLocatorFilter + +class CMakeOpenTargetFilter final : ILocatorFilter +{ +public: + CMakeOpenTargetFilter() + { + setId("Open CMake target definition"); + setDisplayName(Tr::tr("Open CMake Target")); + setDescription(Tr::tr("Locates the definition of a target of any open CMake project.")); + setDefaultShortcutString("cmo"); + setPriority(Medium); + setupFilter(this); + } + +private: + LocatorMatcherTasks matchers() final { return cmakeMatchers({}); } +}; + +// Setup + +void setupCMakeLocatorFilters() +{ + static CMakeBuildTargetFilter theCMakeBuildTargetFilter; + static CMakeOpenTargetFilter theCMakeOpenTargetFilter; } -Core::LocatorMatcherTasks CMakeBuildTargetFilter::matchers() -{ - return cmakeMatchers(&buildAcceptor); -} - -// -------------------------------------------------------------------- -// OpenCMakeTargetLocatorFilter: -// -------------------------------------------------------------------- - -CMakeOpenTargetFilter::CMakeOpenTargetFilter() -{ - setId("Open CMake target definition"); - setDisplayName(Tr::tr("Open CMake Target")); - setDescription(Tr::tr("Locates the definition of a target of any open CMake project.")); - setDefaultShortcutString("cmo"); - setPriority(Medium); - setupFilter(this); -} - -Core::LocatorMatcherTasks CMakeOpenTargetFilter::matchers() -{ - return cmakeMatchers({}); -} - -} // namespace CMakeProjectManager::Internal +} // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h index 73e0a9fe4ab..d3fd69ddfe3 100644 --- a/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h +++ b/src/plugins/cmakeprojectmanager/cmakelocatorfilter.h @@ -3,26 +3,8 @@ #pragma once -#include - namespace CMakeProjectManager::Internal { -class CMakeBuildTargetFilter : Core::ILocatorFilter -{ -public: - CMakeBuildTargetFilter(); +void setupCMakeLocatorFilters(); -private: - Core::LocatorMatcherTasks matchers() final; -}; - -class CMakeOpenTargetFilter : Core::ILocatorFilter -{ -public: - CMakeOpenTargetFilter(); - -private: - Core::LocatorMatcherTasks matchers() final; -}; - -} // namespace CMakeProjectManager::Internal +} // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index 9ba8bb87e74..bafea8c3f95 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -51,12 +51,6 @@ public: Tr::tr("Build \"%1\""), Action::AlwaysEnabled/*handled manually*/ }; - - CMakeInstallStepFactory installStepFactory; - CMakeBuildTargetFilter cMakeBuildTargetFilter; - CMakeOpenTargetFilter cMakeOpenTargetFilter; - - CMakeFormatter cmakeFormatter; }; class CMakeProjectPlugin final : public ExtensionSystem::IPlugin @@ -77,9 +71,13 @@ class CMakeProjectPlugin final : public ExtensionSystem::IPlugin setupCMakeBuildConfiguration(); setupCMakeBuildStep(); + setupCMakeInstallStep(); setupCMakeEditor(); + setupCMakeLocatorFilters(); + setupCMakeFormatter(); + d = new CMakeProjectPluginPrivate; setupCMakeManager();