forked from qt-creator/qt-creator
ProjectExplorer: Add a IRunConfigurationFactory::addFixedBuildTarget()
To be used for "special" build targets (Custom executables etc) that do not
depend on the project. This reduces user side boiler plate in a couple of
cases and is a bit clearer than the magic {QString()} result anyway.
Change-Id: I105b6ab952981143b2abf9b218fed30cee80b648
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -69,16 +69,8 @@ BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory(Q
|
||||
setObjectName("BareMetalCustomRunConfigurationFactory");
|
||||
registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal.CustomRunConfig");
|
||||
setSupportedTargetDeviceTypes({BareMetal::Constants::BareMetalOsType});
|
||||
}
|
||||
|
||||
QList<QString> BareMetalCustomRunConfigurationFactory::availableBuildTargets(Target *, CreationMode) const
|
||||
{
|
||||
return {QString()};
|
||||
}
|
||||
|
||||
QString BareMetalCustomRunConfigurationFactory::displayNameForBuildTarget(const QString &) const
|
||||
{
|
||||
return BareMetalCustomRunConfiguration::tr("Custom Executable (on GDB server or hardware debugger)");
|
||||
addFixedBuildTarget(BareMetalCustomRunConfiguration::tr
|
||||
("Custom Executable (on GDB server or hardware debugger)"));
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -47,9 +47,6 @@ class BareMetalCustomRunConfigurationFactory : public ProjectExplorer::IRunConfi
|
||||
|
||||
public:
|
||||
explicit BareMetalCustomRunConfigurationFactory(QObject *parent = 0);
|
||||
|
||||
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
|
||||
QString displayNameForBuildTarget(const QString &buildTarget) const override;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -40,16 +40,7 @@ NimRunConfigurationFactory::NimRunConfigurationFactory()
|
||||
{
|
||||
registerRunConfiguration<NimRunConfiguration>(Constants::C_NIMRUNCONFIGURATION_ID);
|
||||
addSupportedProjectType(Constants::C_NIMPROJECT_ID);
|
||||
}
|
||||
|
||||
QList<QString> NimRunConfigurationFactory::availableBuildTargets(Target *, CreationMode) const
|
||||
{
|
||||
return {QString()};
|
||||
}
|
||||
|
||||
QString NimRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const
|
||||
{
|
||||
return buildTarget + "-TempRunConf";
|
||||
addFixedBuildTarget("-TempRunConf");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,9 +33,6 @@ class NimRunConfigurationFactory : public ProjectExplorer::IRunConfigurationFact
|
||||
{
|
||||
public:
|
||||
NimRunConfigurationFactory();
|
||||
|
||||
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
|
||||
QString displayNameForBuildTarget(const QString &) const override;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -47,6 +47,8 @@ public:
|
||||
{ }
|
||||
|
||||
QString targetName;
|
||||
|
||||
QString displayName; // Used in "RunConfiguration Add ..." drop down.
|
||||
Utils::FileName targetFilePath;
|
||||
Utils::FileName projectFilePath;
|
||||
|
||||
|
||||
@@ -306,16 +306,7 @@ CustomExecutableRunConfigurationFactory::CustomExecutableRunConfigurationFactory
|
||||
{
|
||||
setObjectName("CustomExecutableRunConfigurationFactory");
|
||||
registerRunConfiguration<CustomExecutableRunConfiguration>(CUSTOM_EXECUTABLE_ID);
|
||||
}
|
||||
|
||||
QList<QString> CustomExecutableRunConfigurationFactory::availableBuildTargets(Target *, CreationMode) const
|
||||
{
|
||||
return {QString()};
|
||||
}
|
||||
|
||||
QString CustomExecutableRunConfigurationFactory::displayNameForBuildTarget(const QString &) const
|
||||
{
|
||||
return tr("Custom Executable");
|
||||
addFixedBuildTarget(tr("Custom Executable"));
|
||||
}
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
||||
@@ -90,9 +90,6 @@ class CustomExecutableRunConfigurationFactory : public IRunConfigurationFactory
|
||||
|
||||
public:
|
||||
explicit CustomExecutableRunConfigurationFactory(QObject *parent = 0);
|
||||
|
||||
QList<QString> availableBuildTargets(Target *parent, CreationMode mode) const override;
|
||||
QString displayNameForBuildTarget(const QString &) const override;
|
||||
};
|
||||
|
||||
} // namespace ProjectExplorer
|
||||
|
||||
@@ -453,10 +453,26 @@ QList<RunConfigurationCreationInfo>
|
||||
{
|
||||
if (!canHandle(parent))
|
||||
return {};
|
||||
return Utils::transform(availableBuildTargets(parent, mode), [this](const QString &suffix) {
|
||||
return RunConfigurationCreationInfo{this, m_runConfigBaseId, suffix,
|
||||
this->displayNameForBuildTarget(suffix)};
|
||||
});
|
||||
|
||||
if (m_fixedBuildTargets.isEmpty()) {
|
||||
return Utils::transform(availableBuildTargets(parent, mode), [this](const QString &suffix) {
|
||||
return RunConfigurationCreationInfo{this, m_runConfigBaseId, suffix,
|
||||
this->displayNameForBuildTarget(suffix)};
|
||||
});
|
||||
}
|
||||
|
||||
QList<RunConfigurationCreationInfo> result;
|
||||
for (const BuildTargetInfo &bt : m_fixedBuildTargets) {
|
||||
RunConfigurationCreationInfo rci(this, m_runConfigBaseId, QString(), bt.displayName);
|
||||
result.append(rci);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
QList<QString> IRunConfigurationFactory::availableBuildTargets(Target *, CreationMode) const
|
||||
{
|
||||
return {};
|
||||
}
|
||||
|
||||
QString IRunConfigurationFactory::displayNameForBuildTarget(const QString &buildTarget) const
|
||||
@@ -480,6 +496,13 @@ void IRunConfigurationFactory::addSupportedProjectType(Core::Id id)
|
||||
m_supportedProjectTypes.append(id);
|
||||
}
|
||||
|
||||
void IRunConfigurationFactory::addFixedBuildTarget(const QString &displayName)
|
||||
{
|
||||
BuildTargetInfo bt;
|
||||
bt.displayName = displayName;
|
||||
m_fixedBuildTargets.append(bt);
|
||||
}
|
||||
|
||||
bool IRunConfigurationFactory::canHandle(Target *target) const
|
||||
{
|
||||
const Project *project = target->project();
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "projectconfiguration.h"
|
||||
#include "projectexplorerconstants.h"
|
||||
#include "applicationlauncher.h"
|
||||
#include "buildtargetinfo.h"
|
||||
#include "devicesupport/idevice.h"
|
||||
|
||||
#include <utils/port.h>
|
||||
@@ -320,7 +321,7 @@ signals:
|
||||
void availableCreationIdsChanged();
|
||||
|
||||
protected:
|
||||
virtual QList<QString> availableBuildTargets(Target *parent, CreationMode mode = UserCreate) const = 0;
|
||||
virtual QList<QString> availableBuildTargets(Target *parent, CreationMode mode = UserCreate) const;
|
||||
virtual QString displayNameForBuildTarget(const QString &buildTarget) const;
|
||||
|
||||
virtual bool canCreateHelper(Target *parent, const QString &buildTarget) const;
|
||||
@@ -336,12 +337,14 @@ protected:
|
||||
|
||||
void addSupportedProjectType(Core::Id id);
|
||||
void setSupportedTargetDeviceTypes(const QList<Core::Id> &ids);
|
||||
void addFixedBuildTarget(const QString &displayName);
|
||||
|
||||
private:
|
||||
RunConfigurationCreator m_creator;
|
||||
Core::Id m_runConfigBaseId;
|
||||
QList<Core::Id> m_supportedProjectTypes;
|
||||
QList<Core::Id> m_supportedTargetDeviceTypes;
|
||||
QList<BuildTargetInfo> m_fixedBuildTargets;
|
||||
};
|
||||
|
||||
class PROJECTEXPLORER_EXPORT RunConfigWidget : public QWidget
|
||||
|
||||
@@ -38,16 +38,7 @@ QmlProjectRunConfigurationFactory::QmlProjectRunConfigurationFactory(QObject *pa
|
||||
registerRunConfiguration<QmlProjectRunConfiguration>(Constants::QML_SCENE_RC_ID);
|
||||
addSupportedProjectType(QmlProjectManager::Constants::QML_PROJECT_ID);
|
||||
setSupportedTargetDeviceTypes({ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE});
|
||||
}
|
||||
|
||||
QList<QString> QmlProjectRunConfigurationFactory::availableBuildTargets(ProjectExplorer::Target *, CreationMode) const
|
||||
{
|
||||
return {QString()};
|
||||
}
|
||||
|
||||
QString QmlProjectRunConfigurationFactory::displayNameForBuildTarget(const QString &) const
|
||||
{
|
||||
return tr("QML Scene");
|
||||
addFixedBuildTarget(tr("QML Scene"));
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -36,9 +36,6 @@ class QmlProjectRunConfigurationFactory : public ProjectExplorer::IRunConfigurat
|
||||
|
||||
public:
|
||||
explicit QmlProjectRunConfigurationFactory(QObject *parent = 0);
|
||||
|
||||
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
|
||||
QString displayNameForBuildTarget(const QString &buildTarget) const override;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -75,17 +75,7 @@ RemoteLinuxCustomRunConfigurationFactory::RemoteLinuxCustomRunConfigurationFacto
|
||||
registerRunConfiguration<RemoteLinuxCustomRunConfiguration>
|
||||
(RemoteLinuxCustomRunConfiguration::runConfigId());
|
||||
setSupportedTargetDeviceTypes({RemoteLinux::Constants::GenericLinuxOsType});
|
||||
}
|
||||
|
||||
QList<QString>
|
||||
RemoteLinuxCustomRunConfigurationFactory::availableBuildTargets(Target *, CreationMode) const
|
||||
{
|
||||
return {QString()};
|
||||
}
|
||||
|
||||
QString RemoteLinuxCustomRunConfigurationFactory::displayNameForBuildTarget(const QString &) const
|
||||
{
|
||||
return RemoteLinuxCustomRunConfiguration::runConfigDefaultDisplayName();
|
||||
addFixedBuildTarget(RemoteLinuxCustomRunConfiguration::runConfigDefaultDisplayName());
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -49,9 +49,6 @@ class RemoteLinuxCustomRunConfigurationFactory : public ProjectExplorer::IRunCon
|
||||
|
||||
public:
|
||||
explicit RemoteLinuxCustomRunConfigurationFactory(QObject *parent = 0);
|
||||
|
||||
QList<QString> availableBuildTargets(ProjectExplorer::Target *parent, CreationMode mode) const override;
|
||||
QString displayNameForBuildTarget(const QString &buildTarget) const override;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
Reference in New Issue
Block a user