diff options
author | hjk <hjk@qt.io> | 2024-01-29 15:47:20 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2024-01-30 08:00:30 +0000 |
commit | 9a44a543a52a308f9c4223148642323b3fd26d81 (patch) | |
tree | 8dd5bbeb19af16f7418fdcf7e57673470685c420 /src/plugins/mesonprojectmanager | |
parent | a9a5972a9f393addba4b175a329f925d6338a31c (diff) |
Meson: Use setup functions for a few plugin items
Change-Id: I849698315cd8c03ab44317d90dd3754dcfe46146
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/plugins/mesonprojectmanager')
9 files changed, 99 insertions, 89 deletions
diff --git a/src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp b/src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp index 45543a5f261..93ce63ad564 100644 --- a/src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp +++ b/src/plugins/mesonprojectmanager/mesonbuildconfiguration.cpp @@ -351,32 +351,39 @@ BuildInfo createBuildInfo(MesonBuildType type) return bInfo; } -MesonBuildConfigurationFactory::MesonBuildConfigurationFactory() +// MesonBuildConfigurationFactory + +class MesonBuildConfigurationFactory final : public BuildConfigurationFactory { - registerBuildConfiguration<MesonBuildConfiguration>(Constants::MESON_BUILD_CONFIG_ID); - setSupportedProjectType(Constants::Project::ID); - setSupportedProjectMimeTypeName(Constants::Project::MIMETYPE); - setBuildGenerator( - [](const ProjectExplorer::Kit *k, const Utils::FilePath &projectPath, bool forSetup) { - QList<ProjectExplorer::BuildInfo> result; - - Utils::FilePath path = forSetup - ? Project::projectDirectory(projectPath) - : projectPath; - for (const auto &bType : {MesonBuildType::debug, - MesonBuildType::release, - MesonBuildType::debugoptimized, - MesonBuildType::minsize}) { - auto bInfo = createBuildInfo(bType); - if (forSetup) - bInfo.buildDirectory = shadowBuildDirectory(projectPath, - k, - bInfo.typeName, - bInfo.buildType); - result << bInfo; - } - return result; - }); +public: + MesonBuildConfigurationFactory() + { + registerBuildConfiguration<MesonBuildConfiguration>(Constants::MESON_BUILD_CONFIG_ID); + setSupportedProjectType(Constants::Project::ID); + setSupportedProjectMimeTypeName(Constants::Project::MIMETYPE); + setBuildGenerator( + [](const Kit *k, const FilePath &projectPath, bool forSetup) { + QList<BuildInfo> result; + for (const MesonBuildType bType : {MesonBuildType::debug, + MesonBuildType::release, + MesonBuildType::debugoptimized, + MesonBuildType::minsize}) { + BuildInfo bInfo = createBuildInfo(bType); + if (forSetup) + bInfo.buildDirectory = shadowBuildDirectory(projectPath, + k, + bInfo.typeName, + bInfo.buildType); + result << bInfo; + } + return result; + }); + } +}; + +void setupMesonBuildConfiguration() +{ + static MesonBuildConfigurationFactory theMesonBuildConfigurationFactory; } } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/mesonbuildconfiguration.h b/src/plugins/mesonprojectmanager/mesonbuildconfiguration.h index 278722fea73..2ec2f9e00f4 100644 --- a/src/plugins/mesonprojectmanager/mesonbuildconfiguration.h +++ b/src/plugins/mesonprojectmanager/mesonbuildconfiguration.h @@ -39,10 +39,6 @@ private: QString m_parameters; }; -class MesonBuildConfigurationFactory final : public ProjectExplorer::BuildConfigurationFactory -{ -public: - MesonBuildConfigurationFactory(); -}; +void setupMesonBuildConfiguration(); } // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp index a9a233fa9ee..975763182cc 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp @@ -29,10 +29,6 @@ namespace MesonProjectManager::Internal { class MesonProjectPluginPrivate { public: - ToolsSettingsPage m_toolslSettingsPage; - ToolsSettingsAccessor m_toolsSettings; - MesonBuildStepFactory m_buildStepFactory; - MesonBuildConfigurationFactory m_buildConfigurationFactory; MesonRunConfigurationFactory m_runConfigurationFactory; MesonActionsManager m_actions; MachineFileManager m_machineFilesManager; @@ -56,6 +52,12 @@ private: { d = new MesonProjectPluginPrivate; + setupToolsSettingsPage(); + setupToolsSettingsAccessor(); + + setupMesonBuildConfiguration(); + setupNinjaBuildStep(); + ProjectManager::registerProjectType<MesonProject>(Constants::Project::MIMETYPE); FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson.build"); FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson_options.txt"); diff --git a/src/plugins/mesonprojectmanager/ninjabuildstep.cpp b/src/plugins/mesonprojectmanager/ninjabuildstep.cpp index 59d10acd2ba..ab8b2d396e6 100644 --- a/src/plugins/mesonprojectmanager/ninjabuildstep.cpp +++ b/src/plugins/mesonprojectmanager/ninjabuildstep.cpp @@ -3,7 +3,6 @@ #include "ninjabuildstep.h" -#include "mesonbuildconfiguration.h" #include "mesonbuildsystem.h" #include "mesonpluginconstants.h" #include "mesonprojectmanagertr.h" @@ -27,8 +26,7 @@ using namespace ProjectExplorer; using namespace Utils; -namespace MesonProjectManager { -namespace Internal { +namespace MesonProjectManager::Internal { const char TARGETS_KEY[] = "MesonProjectManager.BuildStep.BuildTargets"; const char TOOL_ARGUMENTS_KEY[] = "MesonProjectManager.BuildStep.AdditionalArguments"; @@ -182,13 +180,6 @@ void NinjaBuildStep::setupOutputFormatter(Utils::OutputFormatter *formatter) }); } -MesonBuildStepFactory::MesonBuildStepFactory() -{ - registerStep<NinjaBuildStep>(Constants::MESON_BUILD_STEP_ID); - setSupportedProjectType(Constants::Project::ID); - setDisplayName(Tr::tr("Meson Build")); -} - void NinjaBuildStep::setBuildTarget(const QString &targetName) { m_targetName = targetName; @@ -213,5 +204,22 @@ void NinjaBuildStep::fromMap(const Store &map) return AbstractProcessStep::fromMap(map); } -} // namespace Internal -} // namespace MesonProjectManager +// NinjaBuildStepFactory + +class NinjaBuildStepFactory final : public BuildStepFactory +{ +public: + NinjaBuildStepFactory() + { + registerStep<NinjaBuildStep>(Constants::MESON_BUILD_STEP_ID); + setSupportedProjectType(Constants::Project::ID); + setDisplayName(Tr::tr("Meson Build")); + } +}; + +void setupNinjaBuildStep() +{ + static NinjaBuildStepFactory theNinjaBuildStepFactory; +} + +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/ninjabuildstep.h b/src/plugins/mesonprojectmanager/ninjabuildstep.h index fd8b21334ae..052afc6b9b3 100644 --- a/src/plugins/mesonprojectmanager/ninjabuildstep.h +++ b/src/plugins/mesonprojectmanager/ninjabuildstep.h @@ -8,8 +8,7 @@ #include <projectexplorer/abstractprocessstep.h> #include <projectexplorer/buildstep.h> -namespace MesonProjectManager { -namespace Internal { +namespace MesonProjectManager::Internal { class NinjaBuildStep final : public ProjectExplorer::AbstractProcessStep { @@ -39,11 +38,6 @@ private: NinjaParser *m_ninjaParser = nullptr; }; -class MesonBuildStepFactory final : public ProjectExplorer::BuildStepFactory -{ -public: - MesonBuildStepFactory(); -}; +void setupNinjaBuildStep(); -} // namespace Internal -} // namespace MesonProjectManager +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp b/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp index 80e5274c481..1fe381d0255 100644 --- a/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp +++ b/src/plugins/mesonprojectmanager/toolssettingsaccessor.cpp @@ -4,12 +4,12 @@ #include "toolssettingsaccessor.h" #include "mesonpluginconstants.h" -#include "mesonprojectmanagertr.h" +#include "mesontools.h" #include <coreplugin/icore.h> -#include <coreplugin/icore.h> #include <utils/filepath.h> +#include <utils/settingsaccessor.h> #include <utils/store.h> #include <QGuiApplication> @@ -20,14 +20,22 @@ using namespace Core; using namespace Utils; -namespace MesonProjectManager { -namespace Internal { +namespace MesonProjectManager::Internal { static Key entryName(int index) { return numberedKey(Constants::ToolsSettings::ENTRY_KEY, index); } +class ToolsSettingsAccessor final : public UpgradingSettingsAccessor +{ +public: + ToolsSettingsAccessor(); + + void saveMesonTools(const std::vector<MesonTools::Tool_t> &tools); + std::vector<MesonTools::Tool_t> loadMesonTools(); +}; + ToolsSettingsAccessor::ToolsSettingsAccessor() { setDocType("QtCreatorMesonTools"); @@ -81,5 +89,9 @@ std::vector<MesonTools::Tool_t> ToolsSettingsAccessor::loadMesonTools() return result; } -} // namespace Internal -} // namespace MesonProjectManager +void setupToolsSettingsAccessor() +{ + static ToolsSettingsAccessor theToolSettingsAccessor; +} + +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/toolssettingsaccessor.h b/src/plugins/mesonprojectmanager/toolssettingsaccessor.h index 10fce88099d..2681094a5b6 100644 --- a/src/plugins/mesonprojectmanager/toolssettingsaccessor.h +++ b/src/plugins/mesonprojectmanager/toolssettingsaccessor.h @@ -3,21 +3,8 @@ #pragma once -#include "mesontools.h" +namespace MesonProjectManager::Internal { -#include <utils/settingsaccessor.h> +void setupToolsSettingsAccessor(); -namespace MesonProjectManager { -namespace Internal { - -class ToolsSettingsAccessor final : public Utils::UpgradingSettingsAccessor -{ -public: - ToolsSettingsAccessor(); - - void saveMesonTools(const std::vector<MesonTools::Tool_t> &tools); - std::vector<MesonTools::Tool_t> loadMesonTools(); -}; - -} // namespace Internal -} // namespace MesonProjectManager +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/toolssettingspage.cpp b/src/plugins/mesonprojectmanager/toolssettingspage.cpp index 67ecd99aacc..629513f8b5e 100644 --- a/src/plugins/mesonprojectmanager/toolssettingspage.cpp +++ b/src/plugins/mesonprojectmanager/toolssettingspage.cpp @@ -9,6 +9,8 @@ #include "toolsmodel.h" #include "tooltreeitem.h" +#include <coreplugin/dialogs/ioptionspage.h> + #include <utils/detailswidget.h> #include <utils/layoutbuilder.h> @@ -119,13 +121,21 @@ void ToolsSettingsWidget::currentMesonToolChanged(const QModelIndex &newCurrent) m_removeButton->setEnabled(m_currentItem && !m_currentItem->isAutoDetected()); } +class ToolsSettingsPage final : public Core::IOptionsPage +{ +public: + ToolsSettingsPage() + { + setId(Constants::SettingsPage::TOOLS_ID); + setDisplayName(Tr::tr("Tools")); + setCategory(Constants::SettingsPage::CATEGORY); + setWidgetCreator([]() { return new ToolsSettingsWidget; }); + } +}; -ToolsSettingsPage::ToolsSettingsPage() +void setupToolsSettingsPage() { - setId(Constants::SettingsPage::TOOLS_ID); - setDisplayName(Tr::tr("Tools")); - setCategory(Constants::SettingsPage::CATEGORY); - setWidgetCreator([]() { return new ToolsSettingsWidget; }); + static ToolsSettingsPage theToolsSettingsPage; } } // namespace MesonProjectManager diff --git a/src/plugins/mesonprojectmanager/toolssettingspage.h b/src/plugins/mesonprojectmanager/toolssettingspage.h index 815120c30f0..bd500cd0173 100644 --- a/src/plugins/mesonprojectmanager/toolssettingspage.h +++ b/src/plugins/mesonprojectmanager/toolssettingspage.h @@ -3,14 +3,8 @@ #pragma once -#include <coreplugin/dialogs/ioptionspage.h> - namespace MesonProjectManager::Internal { -class ToolsSettingsPage final : public Core::IOptionsPage -{ -public: - ToolsSettingsPage(); -}; +void setupToolsSettingsPage(); } // MesonProjectManager::Internal |