ProjectExplorer: Introduce and use convenience factory class

... to create SimpleTargetRunner runners for a single run config.

Change-Id: I8af3d7cdcaf54f0584af948aa6e0fa015d1a3077
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-01-06 13:56:00 +01:00
parent c7884a2b17
commit f08b5727dc
8 changed files with 40 additions and 54 deletions

View File

@@ -27,8 +27,7 @@ using namespace Core;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace MesonProjectManager { namespace MesonProjectManager::Internal {
namespace Internal {
class MesonProjectPluginPrivate : public QObject class MesonProjectPluginPrivate : public QObject
{ {
@@ -56,10 +55,8 @@ private:
MesonRunConfigurationFactory m_runConfigurationFactory; MesonRunConfigurationFactory m_runConfigurationFactory;
MesonActionsManager m_actions; MesonActionsManager m_actions;
MachineFileManager m_machineFilesManager; MachineFileManager m_machineFilesManager;
RunWorkerFactory SimpleTargetRunnerFactory m_mesonRunWorkerFactory{{m_runConfigurationFactory.runConfigurationId()}};
m_mesonRunWorkerFactory{RunWorkerFactory::make<ProjectExplorer::SimpleTargetRunner>(),
{ProjectExplorer::Constants::NORMAL_RUN_MODE},
{m_runConfigurationFactory.runConfigurationId()}};
void saveAll() void saveAll()
{ {
m_toolsSettings.saveMesonTools(MesonTools::tools(), ICore::dialogParent()); m_toolsSettings.saveMesonTools(MesonTools::tools(), ICore::dialogParent());
@@ -85,7 +82,6 @@ bool MesonProjectPlugin::initialize(const QStringList & /*arguments*/, QString *
return true; return true;
} }
} // namespace Internal } // MesonProjectManager::Internal
} // namespace MesonProjectManager
#include "mesonprojectplugin.moc" #include "mesonprojectplugin.moc"

View File

@@ -55,21 +55,9 @@ public:
NimRunConfigurationFactory nimRunConfigFactory; NimRunConfigurationFactory nimRunConfigFactory;
NimbleRunConfigurationFactory nimbleRunConfigFactory; NimbleRunConfigurationFactory nimbleRunConfigFactory;
NimbleTestConfigurationFactory nimbleTestConfigFactory; NimbleTestConfigurationFactory nimbleTestConfigFactory;
RunWorkerFactory nimRunWorkerFactory { SimpleTargetRunnerFactory nimRunWorkerFactory{{nimRunConfigFactory.runConfigurationId()}};
RunWorkerFactory::make<SimpleTargetRunner>(), SimpleTargetRunnerFactory nimbleRunWorkerFactory{{nimbleRunConfigFactory.runConfigurationId()}};
{ProjectExplorer::Constants::NORMAL_RUN_MODE}, SimpleTargetRunnerFactory nimbleTestWorkerFactory{{nimbleTestConfigFactory.runConfigurationId()}};
{nimRunConfigFactory.runConfigurationId()}
};
RunWorkerFactory nimbleRunWorkerFactory {
RunWorkerFactory::make<SimpleTargetRunner>(),
{ProjectExplorer::Constants::NORMAL_RUN_MODE},
{nimbleRunConfigFactory.runConfigurationId()}
};
RunWorkerFactory nimbleTestWorkerFactory {
RunWorkerFactory::make<SimpleTargetRunner>(),
{ProjectExplorer::Constants::NORMAL_RUN_MODE},
{nimbleTestConfigFactory.runConfigurationId()}
};
NimbleBuildStepFactory nimbleBuildStepFactory; NimbleBuildStepFactory nimbleBuildStepFactory;
NimbleTaskStepFactory nimbleTaskStepFactory; NimbleTaskStepFactory nimbleTaskStepFactory;
NimCompilerBuildStepFactory buildStepFactory; NimCompilerBuildStepFactory buildStepFactory;

View File

@@ -719,14 +719,11 @@ public:
DesktopQmakeRunConfigurationFactory qmakeRunConfigFactory; DesktopQmakeRunConfigurationFactory qmakeRunConfigFactory;
QbsRunConfigurationFactory qbsRunConfigFactory; QbsRunConfigurationFactory qbsRunConfigFactory;
CMakeRunConfigurationFactory cmakeRunConfigFactory; CMakeRunConfigurationFactory cmakeRunConfigFactory;
SimpleTargetRunnerFactory desktopRunWorkerFactory{{
RunWorkerFactory desktopRunWorkerFactory{ qmakeRunConfigFactory.runConfigurationId(),
RunWorkerFactory::make<SimpleTargetRunner>(), qbsRunConfigFactory.runConfigurationId(),
{ProjectExplorer::Constants::NORMAL_RUN_MODE}, cmakeRunConfigFactory.runConfigurationId()
{qmakeRunConfigFactory.runConfigurationId(), }};
qbsRunConfigFactory.runConfigurationId(),
cmakeRunConfigFactory.runConfigurationId()}
};
SanitizerOutputFormatterFactory sanitizerFormatterFactory; SanitizerOutputFormatterFactory sanitizerFormatterFactory;
}; };

View File

@@ -100,6 +100,11 @@ void RunWorkerFactory::setProducer(const WorkerCreator &producer)
m_producer = producer; m_producer = producer;
} }
void RunWorkerFactory::setSupportedRunConfigs(const QList<Utils::Id> &runConfigs)
{
m_supportedRunConfigurations = runConfigs;
}
void RunWorkerFactory::addSupportedRunMode(Utils::Id runMode) void RunWorkerFactory::addSupportedRunMode(Utils::Id runMode)
{ {
m_supportedRunModes.append(runMode); m_supportedRunModes.append(runMode);
@@ -1892,6 +1897,15 @@ void OutputFormatterFactory::setFormatterCreator(const FormatterCreator &creator
m_creator = creator; m_creator = creator;
} }
// SimpleTargetRunnerFactory
SimpleTargetRunnerFactory::SimpleTargetRunnerFactory(const QList<Id> &runConfigs)
{
setProduct<SimpleTargetRunner>();
addSupportedRunMode(ProjectExplorer::Constants::NORMAL_RUN_MODE);
setSupportedRunConfigs(runConfigs);
}
} // namespace ProjectExplorer } // namespace ProjectExplorer
#include "runcontrol.moc" #include "runcontrol.moc"

View File

@@ -137,6 +137,7 @@ protected:
template <typename Worker> template <typename Worker>
void setProduct() { setProducer([](RunControl *rc) { return new Worker(rc); }); } void setProduct() { setProducer([](RunControl *rc) { return new Worker(rc); }); }
void setProducer(const WorkerCreator &producer); void setProducer(const WorkerCreator &producer);
void setSupportedRunConfigs(const QList<Utils::Id> &runConfigs);
void addSupportedRunMode(Utils::Id runMode); void addSupportedRunMode(Utils::Id runMode);
void addSupportedRunConfig(Utils::Id runConfig); void addSupportedRunConfig(Utils::Id runConfig);
void addSupportedDeviceType(Utils::Id deviceType); void addSupportedDeviceType(Utils::Id deviceType);
@@ -298,6 +299,12 @@ private:
const std::unique_ptr<Internal::SimpleTargetRunnerPrivate> d; const std::unique_ptr<Internal::SimpleTargetRunnerPrivate> d;
}; };
class PROJECTEXPLORER_EXPORT SimpleTargetRunnerFactory : public RunWorkerFactory
{
public:
explicit SimpleTargetRunnerFactory(const QList<Utils::Id> &runConfig);
};
class PROJECTEXPLORER_EXPORT OutputFormatterFactory class PROJECTEXPLORER_EXPORT OutputFormatterFactory
{ {
protected: protected:

View File

@@ -20,8 +20,7 @@
using namespace ProjectExplorer; using namespace ProjectExplorer;
namespace Python { namespace Python::Internal {
namespace Internal {
static PythonPlugin *m_instance = nullptr; static PythonPlugin *m_instance = nullptr;
@@ -33,13 +32,7 @@ public:
PythonRunConfigurationFactory runConfigFactory; PythonRunConfigurationFactory runConfigFactory;
PySideBuildStepFactory buildStepFactory; PySideBuildStepFactory buildStepFactory;
PySideBuildConfigurationFactory buildConfigFactory; PySideBuildConfigurationFactory buildConfigFactory;
SimpleTargetRunnerFactory runWorkerFactory{{runConfigFactory.runConfigurationId()}};
RunWorkerFactory runWorkerFactory{
RunWorkerFactory::make<SimpleTargetRunner>(),
{ProjectExplorer::Constants::NORMAL_RUN_MODE},
{runConfigFactory.runConfigurationId()}
};
PythonSettings settings; PythonSettings settings;
}; };
@@ -81,5 +74,4 @@ void PythonPlugin::extensionsInitialized()
TaskHub::addCategory(PythonErrorTaskCategory, "Python", true); TaskHub::addCategory(PythonErrorTaskCategory, "Python", true);
} }
} // namespace Internal } // Python::Internal
} // namespace Python

View File

@@ -51,8 +51,7 @@
using namespace ProjectExplorer; using namespace ProjectExplorer;
namespace QmlProjectManager { namespace QmlProjectManager::Internal {
namespace Internal {
static bool isQmlDesigner(const ExtensionSystem::PluginSpec *spec) static bool isQmlDesigner(const ExtensionSystem::PluginSpec *spec)
{ {
@@ -90,9 +89,7 @@ class QmlProjectPluginPrivate
{ {
public: public:
QmlProjectRunConfigurationFactory runConfigFactory; QmlProjectRunConfigurationFactory runConfigFactory;
RunWorkerFactory runWorkerFactory{RunWorkerFactory::make<SimpleTargetRunner>(), SimpleTargetRunnerFactory runWorkerFactory{{runConfigFactory.runConfigurationId()}};
{ProjectExplorer::Constants::NORMAL_RUN_MODE},
{runConfigFactory.runConfigurationId()}};
QPointer<QMessageBox> lastMessageBox; QPointer<QMessageBox> lastMessageBox;
QdsLandingPage *landingPage = nullptr; QdsLandingPage *landingPage = nullptr;
QdsLandingPageWidget *landingPageWidget = nullptr; QdsLandingPageWidget *landingPageWidget = nullptr;
@@ -457,5 +454,4 @@ Utils::FilePath QmlProjectPlugin::projectFilePath()
return {}; return {};
} }
} // namespace Internal } // QmlProjectManager::Internal
} // namespace QmlProjectManager

View File

@@ -102,12 +102,8 @@ public:
QnxRunConfigurationFactory runConfigFactory; QnxRunConfigurationFactory runConfigFactory;
QnxSettingsPage settingsPage; QnxSettingsPage settingsPage;
QnxToolChainFactory toolChainFactory; QnxToolChainFactory toolChainFactory;
SimpleTargetRunnerFactory runWorkerFactory{{runConfigFactory.runConfigurationId()}};
RunWorkerFactory runWorkerFactory{
RunWorkerFactory::make<SimpleTargetRunner>(),
{ProjectExplorer::Constants::NORMAL_RUN_MODE},
{runConfigFactory.runConfigurationId()}
};
RunWorkerFactory debugWorkerFactory{ RunWorkerFactory debugWorkerFactory{
RunWorkerFactory::make<QnxDebugSupport>(), RunWorkerFactory::make<QnxDebugSupport>(),
{ProjectExplorer::Constants::DEBUG_RUN_MODE}, {ProjectExplorer::Constants::DEBUG_RUN_MODE},