From f08b5727dc5947193f15353e10f798296e385324 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 6 Jan 2023 13:56:00 +0100 Subject: [PATCH] ProjectExplorer: Introduce and use convenience factory class ... to create SimpleTargetRunner runners for a single run config. Change-Id: I8af3d7cdcaf54f0584af948aa6e0fa015d1a3077 Reviewed-by: Christian Stenger --- .../mesonprojectmanager/mesonprojectplugin.cpp | 12 ++++-------- src/plugins/nim/nimplugin.cpp | 18 +++--------------- .../projectexplorer/projectexplorer.cpp | 13 +++++-------- src/plugins/projectexplorer/runcontrol.cpp | 14 ++++++++++++++ src/plugins/projectexplorer/runcontrol.h | 7 +++++++ src/plugins/python/pythonplugin.cpp | 14 +++----------- .../qmlprojectmanager/qmlprojectplugin.cpp | 10 +++------- src/plugins/qnx/qnxplugin.cpp | 6 +----- 8 files changed, 40 insertions(+), 54 deletions(-) diff --git a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp index 0b03fcba413..adabb646ee1 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp +++ b/src/plugins/mesonprojectmanager/mesonprojectplugin.cpp @@ -27,8 +27,7 @@ using namespace Core; using namespace ProjectExplorer; using namespace Utils; -namespace MesonProjectManager { -namespace Internal { +namespace MesonProjectManager::Internal { class MesonProjectPluginPrivate : public QObject { @@ -56,10 +55,8 @@ private: MesonRunConfigurationFactory m_runConfigurationFactory; MesonActionsManager m_actions; MachineFileManager m_machineFilesManager; - RunWorkerFactory - m_mesonRunWorkerFactory{RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE}, - {m_runConfigurationFactory.runConfigurationId()}}; + SimpleTargetRunnerFactory m_mesonRunWorkerFactory{{m_runConfigurationFactory.runConfigurationId()}}; + void saveAll() { m_toolsSettings.saveMesonTools(MesonTools::tools(), ICore::dialogParent()); @@ -85,7 +82,6 @@ bool MesonProjectPlugin::initialize(const QStringList & /*arguments*/, QString * return true; } -} // namespace Internal -} // namespace MesonProjectManager +} // MesonProjectManager::Internal #include "mesonprojectplugin.moc" diff --git a/src/plugins/nim/nimplugin.cpp b/src/plugins/nim/nimplugin.cpp index 138b99163a8..f3e2448ca7f 100644 --- a/src/plugins/nim/nimplugin.cpp +++ b/src/plugins/nim/nimplugin.cpp @@ -55,21 +55,9 @@ public: NimRunConfigurationFactory nimRunConfigFactory; NimbleRunConfigurationFactory nimbleRunConfigFactory; NimbleTestConfigurationFactory nimbleTestConfigFactory; - RunWorkerFactory nimRunWorkerFactory { - RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE}, - {nimRunConfigFactory.runConfigurationId()} - }; - RunWorkerFactory nimbleRunWorkerFactory { - RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE}, - {nimbleRunConfigFactory.runConfigurationId()} - }; - RunWorkerFactory nimbleTestWorkerFactory { - RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE}, - {nimbleTestConfigFactory.runConfigurationId()} - }; + SimpleTargetRunnerFactory nimRunWorkerFactory{{nimRunConfigFactory.runConfigurationId()}}; + SimpleTargetRunnerFactory nimbleRunWorkerFactory{{nimbleRunConfigFactory.runConfigurationId()}}; + SimpleTargetRunnerFactory nimbleTestWorkerFactory{{nimbleTestConfigFactory.runConfigurationId()}}; NimbleBuildStepFactory nimbleBuildStepFactory; NimbleTaskStepFactory nimbleTaskStepFactory; NimCompilerBuildStepFactory buildStepFactory; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index f673e9f48a0..3871d895770 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -719,14 +719,11 @@ public: DesktopQmakeRunConfigurationFactory qmakeRunConfigFactory; QbsRunConfigurationFactory qbsRunConfigFactory; CMakeRunConfigurationFactory cmakeRunConfigFactory; - - RunWorkerFactory desktopRunWorkerFactory{ - RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE}, - {qmakeRunConfigFactory.runConfigurationId(), - qbsRunConfigFactory.runConfigurationId(), - cmakeRunConfigFactory.runConfigurationId()} - }; + SimpleTargetRunnerFactory desktopRunWorkerFactory{{ + qmakeRunConfigFactory.runConfigurationId(), + qbsRunConfigFactory.runConfigurationId(), + cmakeRunConfigFactory.runConfigurationId() + }}; SanitizerOutputFormatterFactory sanitizerFormatterFactory; }; diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index 4c96381dd99..b28cbf55dee 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -100,6 +100,11 @@ void RunWorkerFactory::setProducer(const WorkerCreator &producer) m_producer = producer; } +void RunWorkerFactory::setSupportedRunConfigs(const QList &runConfigs) +{ + m_supportedRunConfigurations = runConfigs; +} + void RunWorkerFactory::addSupportedRunMode(Utils::Id runMode) { m_supportedRunModes.append(runMode); @@ -1892,6 +1897,15 @@ void OutputFormatterFactory::setFormatterCreator(const FormatterCreator &creator m_creator = creator; } +// SimpleTargetRunnerFactory + +SimpleTargetRunnerFactory::SimpleTargetRunnerFactory(const QList &runConfigs) +{ + setProduct(); + addSupportedRunMode(ProjectExplorer::Constants::NORMAL_RUN_MODE); + setSupportedRunConfigs(runConfigs); +} + } // namespace ProjectExplorer #include "runcontrol.moc" diff --git a/src/plugins/projectexplorer/runcontrol.h b/src/plugins/projectexplorer/runcontrol.h index b42a2a21f52..fe9a06b9c42 100644 --- a/src/plugins/projectexplorer/runcontrol.h +++ b/src/plugins/projectexplorer/runcontrol.h @@ -137,6 +137,7 @@ protected: template void setProduct() { setProducer([](RunControl *rc) { return new Worker(rc); }); } void setProducer(const WorkerCreator &producer); + void setSupportedRunConfigs(const QList &runConfigs); void addSupportedRunMode(Utils::Id runMode); void addSupportedRunConfig(Utils::Id runConfig); void addSupportedDeviceType(Utils::Id deviceType); @@ -298,6 +299,12 @@ private: const std::unique_ptr d; }; +class PROJECTEXPLORER_EXPORT SimpleTargetRunnerFactory : public RunWorkerFactory +{ +public: + explicit SimpleTargetRunnerFactory(const QList &runConfig); +}; + class PROJECTEXPLORER_EXPORT OutputFormatterFactory { protected: diff --git a/src/plugins/python/pythonplugin.cpp b/src/plugins/python/pythonplugin.cpp index d20e32c4a73..246494455d9 100644 --- a/src/plugins/python/pythonplugin.cpp +++ b/src/plugins/python/pythonplugin.cpp @@ -20,8 +20,7 @@ using namespace ProjectExplorer; -namespace Python { -namespace Internal { +namespace Python::Internal { static PythonPlugin *m_instance = nullptr; @@ -33,13 +32,7 @@ public: PythonRunConfigurationFactory runConfigFactory; PySideBuildStepFactory buildStepFactory; PySideBuildConfigurationFactory buildConfigFactory; - - RunWorkerFactory runWorkerFactory{ - RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE}, - {runConfigFactory.runConfigurationId()} - }; - + SimpleTargetRunnerFactory runWorkerFactory{{runConfigFactory.runConfigurationId()}}; PythonSettings settings; }; @@ -81,5 +74,4 @@ void PythonPlugin::extensionsInitialized() TaskHub::addCategory(PythonErrorTaskCategory, "Python", true); } -} // namespace Internal -} // namespace Python +} // Python::Internal diff --git a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp index 37a34f3f8b2..6e647f3719f 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectplugin.cpp @@ -51,8 +51,7 @@ using namespace ProjectExplorer; -namespace QmlProjectManager { -namespace Internal { +namespace QmlProjectManager::Internal { static bool isQmlDesigner(const ExtensionSystem::PluginSpec *spec) { @@ -90,9 +89,7 @@ class QmlProjectPluginPrivate { public: QmlProjectRunConfigurationFactory runConfigFactory; - RunWorkerFactory runWorkerFactory{RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE}, - {runConfigFactory.runConfigurationId()}}; + SimpleTargetRunnerFactory runWorkerFactory{{runConfigFactory.runConfigurationId()}}; QPointer lastMessageBox; QdsLandingPage *landingPage = nullptr; QdsLandingPageWidget *landingPageWidget = nullptr; @@ -457,5 +454,4 @@ Utils::FilePath QmlProjectPlugin::projectFilePath() return {}; } -} // namespace Internal -} // namespace QmlProjectManager +} // QmlProjectManager::Internal diff --git a/src/plugins/qnx/qnxplugin.cpp b/src/plugins/qnx/qnxplugin.cpp index a5e491b5206..0759db5225c 100644 --- a/src/plugins/qnx/qnxplugin.cpp +++ b/src/plugins/qnx/qnxplugin.cpp @@ -102,12 +102,8 @@ public: QnxRunConfigurationFactory runConfigFactory; QnxSettingsPage settingsPage; QnxToolChainFactory toolChainFactory; + SimpleTargetRunnerFactory runWorkerFactory{{runConfigFactory.runConfigurationId()}}; - RunWorkerFactory runWorkerFactory{ - RunWorkerFactory::make(), - {ProjectExplorer::Constants::NORMAL_RUN_MODE}, - {runConfigFactory.runConfigurationId()} - }; RunWorkerFactory debugWorkerFactory{ RunWorkerFactory::make(), {ProjectExplorer::Constants::DEBUG_RUN_MODE},