aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@qt.io>2017-07-17 14:34:05 +0200
committerTobias Hunger <tobias.hunger@qt.io>2017-07-28 17:26:03 +0000
commit131c7a1c4e60da68bd5cfc5a6d5df1dc81ed0125 (patch)
tree1b7515acaf4480411849fcfd61fb599cafc5241b
parentc01ddc4660c10e8ddc605602fd623135fb607de0 (diff)
ProjectExplorer: Introduce base class for enabled/disabled project configuration
... and use this as a base for all RunConfigurations. Clean out code in the individual run configurations dealing with their enabled/disabled state. Change-Id: Icc2ea136b056f7aea7ce96480b4402459d7ac0ce Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/baremetal/baremetalcustomrunconfiguration.h1
-rw-r--r--src/plugins/baremetal/baremetalrunconfiguration.cpp16
-rw-r--r--src/plugins/baremetal/baremetalrunconfiguration.h4
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeproject.cpp31
-rw-r--r--src/plugins/cmakeprojectmanager/cmakeproject.h1
-rw-r--r--src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp40
-rw-r--r--src/plugins/cmakeprojectmanager/cmakerunconfiguration.h6
-rw-r--r--src/plugins/ios/iosrunconfiguration.cpp67
-rw-r--r--src/plugins/ios/iosrunconfiguration.h8
-rw-r--r--src/plugins/projectexplorer/projectconfiguration.cpp23
-rw-r--r--src/plugins/projectexplorer/projectconfiguration.h24
-rw-r--r--src/plugins/projectexplorer/runconfiguration.cpp67
-rw-r--r--src/plugins/projectexplorer/runconfiguration.h9
-rw-r--r--src/plugins/pythoneditor/pythoneditorplugin.cpp31
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp21
-rw-r--r--src/plugins/qbsprojectmanager/qbsrunconfiguration.h2
-rw-r--r--src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp57
-rw-r--r--src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h6
-rw-r--r--src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp45
-rw-r--r--src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h5
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.cpp16
-rw-r--r--src/plugins/qmakeprojectmanager/qmakeproject.h2
-rw-r--r--src/plugins/qmlprojectmanager/qmlproject.cpp2
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp36
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h6
-rw-r--r--src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h1
-rw-r--r--src/plugins/remotelinux/remotelinuxrunconfiguration.cpp5
-rw-r--r--src/plugins/remotelinux/remotelinuxrunconfiguration.h1
-rw-r--r--src/plugins/winrt/winrtrunconfiguration.h1
29 files changed, 163 insertions, 371 deletions
diff --git a/src/plugins/baremetal/baremetalcustomrunconfiguration.h b/src/plugins/baremetal/baremetalcustomrunconfiguration.h
index 9c9118033a..7f9d1050e1 100644
--- a/src/plugins/baremetal/baremetalcustomrunconfiguration.h
+++ b/src/plugins/baremetal/baremetalcustomrunconfiguration.h
@@ -40,7 +40,6 @@ public:
BareMetalCustomRunConfiguration(ProjectExplorer::Target *parent,
BareMetalCustomRunConfiguration *source);
- bool isEnabled() const override { return true; }
bool isConfigured() const override;
ConfigurationState ensureConfigured(QString *errorMessage) override;
QWidget *createConfigurationWidget() override;
diff --git a/src/plugins/baremetal/baremetalrunconfiguration.cpp b/src/plugins/baremetal/baremetalrunconfiguration.cpp
index 26d495f9b6..554665dcad 100644
--- a/src/plugins/baremetal/baremetalrunconfiguration.cpp
+++ b/src/plugins/baremetal/baremetalrunconfiguration.cpp
@@ -75,17 +75,6 @@ void BareMetalRunConfiguration::init()
this, &BareMetalRunConfiguration::handleBuildSystemDataUpdated); // Handles device changes, etc.
}
-bool BareMetalRunConfiguration::isEnabled() const
-{
- m_disabledReason.clear(); // FIXME: Check this makes sense.
- return true;
-}
-
-QString BareMetalRunConfiguration::disabledReason() const
-{
- return m_disabledReason;
-}
-
QWidget *BareMetalRunConfiguration::createConfigurationWidget()
{
return new BareMetalRunConfigurationWidget(this);
@@ -167,11 +156,6 @@ QString BareMetalRunConfiguration::buildSystemTarget() const
return (bst == targets.list.constEnd()) ? QString() : bst->targetName;
}
-void BareMetalRunConfiguration::setDisabledReason(const QString &reason) const
-{
- m_disabledReason = reason;
-}
-
void BareMetalRunConfiguration::handleBuildSystemDataUpdated()
{
emit targetInformationChanged();
diff --git a/src/plugins/baremetal/baremetalrunconfiguration.h b/src/plugins/baremetal/baremetalrunconfiguration.h
index ef400cb203..9ce7d7e657 100644
--- a/src/plugins/baremetal/baremetalrunconfiguration.h
+++ b/src/plugins/baremetal/baremetalrunconfiguration.h
@@ -44,8 +44,6 @@ public:
explicit BareMetalRunConfiguration(ProjectExplorer::Target *parent, Core::Id id,
const QString &projectFilePath);
- bool isEnabled() const override;
- QString disabledReason() const override;
QWidget *createConfigurationWidget() override;
Utils::OutputFormatter *createOutputFormatter() const override;
@@ -70,14 +68,12 @@ protected:
BareMetalRunConfiguration(ProjectExplorer::Target *parent, BareMetalRunConfiguration *source);
bool fromMap(const QVariantMap &map) override;
QString defaultDisplayName();
- void setDisabledReason(const QString &reason) const;
private:
void handleBuildSystemDataUpdated();
void init();
QString m_projectFilePath;
- mutable QString m_disabledReason;
QString m_workingDirectory;
};
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
index 17c2bf0564..649bbc544d 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp
@@ -152,7 +152,7 @@ void CMakeProject::updateProjectData(CMakeBuildConfiguration *bc)
}
updateApplicationAndDeploymentTargets();
- updateTargetRunConfigurations(t);
+ t->updateDefaultRunConfigurations();
createGeneratedCodeModelSupport();
@@ -446,35 +446,6 @@ QStringList CMakeProject::filesGeneratedFrom(const QString &sourceFile) const
}
}
-void CMakeProject::updateTargetRunConfigurations(Target *t)
-{
- // *Update* existing runconfigurations (no need to update new ones!):
- QHash<QString, const CMakeBuildTarget *> buildTargetHash;
- const QList<CMakeBuildTarget> buildTargetList = buildTargets();
- foreach (const CMakeBuildTarget &bt, buildTargetList) {
- if (bt.targetType != ExecutableType || bt.executable.isEmpty())
- continue;
-
- buildTargetHash.insert(bt.title, &bt);
- }
-
- foreach (RunConfiguration *rc, t->runConfigurations()) {
- auto cmakeRc = qobject_cast<CMakeRunConfiguration *>(rc);
- if (!cmakeRc)
- continue;
-
- auto btIt = buildTargetHash.constFind(cmakeRc->title());
- cmakeRc->setEnabled(btIt != buildTargetHash.constEnd());
- if (btIt != buildTargetHash.constEnd()) {
- cmakeRc->setExecutable(btIt.value()->executable.toString());
- cmakeRc->setBaseWorkingDirectory(btIt.value()->workingDirectory);
- }
- }
-
- // create new and remove obsolete RCs using the factories
- t->updateDefaultRunConfigurations();
-}
-
void CMakeProject::updateApplicationAndDeploymentTargets()
{
Target *t = activeTarget();
diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.h b/src/plugins/cmakeprojectmanager/cmakeproject.h
index 6187f92e19..cb035dddf8 100644
--- a/src/plugins/cmakeprojectmanager/cmakeproject.h
+++ b/src/plugins/cmakeprojectmanager/cmakeproject.h
@@ -122,7 +122,6 @@ private:
void createGeneratedCodeModelSupport();
QStringList filesGeneratedFrom(const QString &sourceFile) const final;
- void updateTargetRunConfigurations(ProjectExplorer::Target *t);
void updateApplicationAndDeploymentTargets();
ProjectExplorer::Target *m_connectedTarget = nullptr;
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
index 6e4591e0e1..a3468804fd 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp
@@ -82,8 +82,7 @@ CMakeRunConfiguration::CMakeRunConfiguration(Target *parent, CMakeRunConfigurati
RunConfiguration(parent, source),
m_buildSystemTarget(source->m_buildSystemTarget),
m_executable(source->m_executable),
- m_title(source->m_title),
- m_enabled(source->m_enabled)
+ m_title(source->m_title)
{
ctor();
}
@@ -144,38 +143,31 @@ QString CMakeRunConfiguration::defaultDisplayName() const
{
if (m_title.isEmpty())
return tr("Run CMake kit");
- QString result = m_title;
- if (!m_enabled) {
- result += QLatin1Char(' ');
- result += tr("(disabled)");
- }
- return result;
+ return m_title;
}
-QWidget *CMakeRunConfiguration::createConfigurationWidget()
+void CMakeRunConfiguration::updateEnabledState()
{
- return new CMakeRunConfigurationWidget(this);
+ auto cp = qobject_cast<CMakeProject *>(target()->project());
+ if (!cp->hasBuildTarget(m_buildSystemTarget))
+ setEnabled(false);
+ else
+ RunConfiguration::updateEnabledState();
}
-void CMakeRunConfiguration::setEnabled(bool b)
-{
- if (m_enabled == b)
- return;
- m_enabled = b;
- emit enabledChanged();
- setDefaultDisplayName(defaultDisplayName());
-}
-
-bool CMakeRunConfiguration::isEnabled() const
+QWidget *CMakeRunConfiguration::createConfigurationWidget()
{
- return m_enabled;
+ return new CMakeRunConfigurationWidget(this);
}
QString CMakeRunConfiguration::disabledReason() const
{
- if (!m_enabled)
- return tr("The executable is not built by the current build configuration");
- return QString();
+ auto cp = qobject_cast<CMakeProject *>(target()->project());
+ QTC_ASSERT(cp, return QString());
+
+ if (cp->hasParsingData() && !cp->hasBuildTarget(m_buildSystemTarget))
+ return tr("The project no longer builds the target associated with this run configuration.");
+ return RunConfiguration::disabledReason();
}
static void updateExecutable(CMakeRunConfiguration *rc, Utils::FancyLineEdit *fle)
diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
index 02ed4df607..6b96a7ff24 100644
--- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
+++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h
@@ -51,9 +51,6 @@ public:
QVariantMap toMap() const override;
- void setEnabled(bool b);
-
- bool isEnabled() const override;
QString disabledReason() const override;
QString buildSystemTarget() const final { return m_buildSystemTarget; }
@@ -63,6 +60,8 @@ protected:
bool fromMap(const QVariantMap &map) override;
QString defaultDisplayName() const;
+ void updateEnabledState() final;
+
private:
QString baseWorkingDirectory() const;
void ctor();
@@ -70,7 +69,6 @@ private:
const QString m_buildSystemTarget;
QString m_executable;
QString m_title;
- bool m_enabled = true;
};
class CMakeRunConfigurationWidget : public QWidget
diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp
index 093f9100e4..e264d61ed3 100644
--- a/src/plugins/ios/iosrunconfiguration.cpp
+++ b/src/plugins/ios/iosrunconfiguration.cpp
@@ -111,48 +111,16 @@ IosRunConfiguration::IosRunConfiguration(Target *parent, IosRunConfiguration *so
void IosRunConfiguration::init()
{
- QmakeProject *project = static_cast<QmakeProject *>(target()->project());
- m_parseSuccess = project->validParse(m_profilePath);
- m_parseInProgress = project->parseInProgress(m_profilePath);
- m_lastIsEnabled = isEnabled();
- m_lastDisabledReason = disabledReason();
updateDisplayNames();
connect(DeviceManager::instance(), &DeviceManager::updated,
this, &IosRunConfiguration::deviceChanges);
connect(KitManager::instance(), &KitManager::kitsChanged,
this, &IosRunConfiguration::deviceChanges);
- connect(project, &QmakeProject::proFileUpdated,
- this, &IosRunConfiguration::proFileUpdated);
-}
-
-void IosRunConfiguration::enabledCheck()
-{
- bool newIsEnabled = isEnabled();
- QString newDisabledReason = disabledReason();
- if (newDisabledReason != m_lastDisabledReason || newIsEnabled != m_lastIsEnabled) {
- m_lastDisabledReason = newDisabledReason;
- m_lastIsEnabled = newIsEnabled;
- emit enabledChanged();
- }
}
void IosRunConfiguration::deviceChanges() {
updateDisplayNames();
- enabledCheck();
-}
-
-void IosRunConfiguration::proFileUpdated(QmakeProFile *pro, bool success,
- bool parseInProgress)
-{
- if (m_profilePath != pro->filePath())
- return;
- m_parseSuccess = success;
- m_parseInProgress = parseInProgress;
- if (success && !parseInProgress) {
- updateDisplayNames();
- emit localExecutableChanged();
- }
- enabledCheck();
+ updateEnabledState();
}
QWidget *IosRunConfiguration::createConfigurationWidget()
@@ -182,6 +150,21 @@ void IosRunConfiguration::updateDisplayNames()
setDisplayName(tr("Run %1 on %2").arg(applicationName()).arg(devName));
}
+void IosRunConfiguration::updateEnabledState()
+{
+ Core::Id devType = DeviceTypeKitInformation::deviceTypeId(target()->kit());
+ if (devType != Constants::IOS_DEVICE_TYPE && devType != Constants::IOS_SIMULATOR_TYPE) {
+ setEnabled(false);
+ return;
+ }
+ IDevice::ConstPtr dev = DeviceKitInformation::device(target()->kit());
+ if (dev.isNull() || dev->deviceState() != IDevice::DeviceReadyToUse) {
+ setEnabled(false);
+ return;
+ }
+ return RunConfiguration::updateEnabledState();
+}
+
IosDeployStep *IosRunConfiguration::deployStep() const
{
DeployConfiguration *config = target()->activeDeployConfiguration();
@@ -287,26 +270,8 @@ QString IosRunConfiguration::buildSystemTarget() const
return static_cast<QmakeProject *>(target()->project())->mapProFilePathToTarget(m_profilePath);
}
-bool IosRunConfiguration::isEnabled() const
-{
- if (m_parseInProgress || !m_parseSuccess)
- return false;
- Core::Id devType = DeviceTypeKitInformation::deviceTypeId(target()->kit());
- if (devType != Constants::IOS_DEVICE_TYPE && devType != Constants::IOS_SIMULATOR_TYPE)
- return false;
- IDevice::ConstPtr dev = DeviceKitInformation::device(target()->kit());
- if (dev.isNull() || dev->deviceState() != IDevice::DeviceReadyToUse)
- return false;
- return RunConfiguration::isEnabled();
-}
-
QString IosRunConfiguration::disabledReason() const
{
- if (m_parseInProgress)
- return tr("The .pro file \"%1\" is currently being parsed.").arg(m_profilePath.fileName());
- if (!m_parseSuccess)
- return static_cast<QmakeProject *>(target()->project())
- ->disabledReasonForRunConfiguration(m_profilePath);
Core::Id devType = DeviceTypeKitInformation::deviceTypeId(target()->kit());
if (devType != Constants::IOS_DEVICE_TYPE && devType != Constants::IOS_SIMULATOR_TYPE)
return tr("Kit has incorrect device type for running on iOS devices.");
diff --git a/src/plugins/ios/iosrunconfiguration.h b/src/plugins/ios/iosrunconfiguration.h
index 9a33177e8c..1cd22ee82a 100644
--- a/src/plugins/ios/iosrunconfiguration.h
+++ b/src/plugins/ios/iosrunconfiguration.h
@@ -58,7 +58,6 @@ public:
QString applicationName() const;
Utils::FileName bundleDirectory() const;
Utils::FileName localExecutable() const;
- bool isEnabled() const override;
QString disabledReason() const override;
IosDeviceType deviceType() const;
void setDeviceType(const IosDeviceType &deviceType);
@@ -75,18 +74,13 @@ signals:
void localExecutableChanged();
private:
- void proFileUpdated(QmakeProjectManager::QmakeProFile *pro, bool success, bool parseInProgress);
void deviceChanges();
void init();
- void enabledCheck();
friend class IosRunConfigurationWidget;
void updateDisplayNames();
+ void updateEnabledState() final;
Utils::FileName m_profilePath;
- QString m_lastDisabledReason;
- bool m_lastIsEnabled;
- bool m_parseInProgress;
- bool m_parseSuccess;
IosDeviceType m_deviceType;
};
diff --git a/src/plugins/projectexplorer/projectconfiguration.cpp b/src/plugins/projectexplorer/projectconfiguration.cpp
index 2958bb12ed..94716b4679 100644
--- a/src/plugins/projectexplorer/projectconfiguration.cpp
+++ b/src/plugins/projectexplorer/projectconfiguration.cpp
@@ -123,3 +123,26 @@ QString ProjectExplorer::displayNameFromMap(const QVariantMap &map)
{
return map.value(QLatin1String(DISPLAY_NAME_KEY), QString()).toString();
}
+
+bool StatefulProjectConfiguration::isEnabled() const
+{
+ return m_isEnabled;
+}
+
+StatefulProjectConfiguration::StatefulProjectConfiguration(QObject *parent, Core::Id id) :
+ ProjectConfiguration(parent, id)
+{ }
+
+StatefulProjectConfiguration::StatefulProjectConfiguration(QObject *parent,
+ const StatefulProjectConfiguration *source) :
+ ProjectConfiguration(parent, source),
+ m_isEnabled(source->m_isEnabled)
+{ }
+
+void StatefulProjectConfiguration::setEnabled(bool enabled)
+{
+ if (enabled == m_isEnabled)
+ return;
+ m_isEnabled = enabled;
+ emit enabledChanged();
+}
diff --git a/src/plugins/projectexplorer/projectconfiguration.h b/src/plugins/projectexplorer/projectconfiguration.h
index ad3f2ca797..5ff4a0fc76 100644
--- a/src/plugins/projectexplorer/projectconfiguration.h
+++ b/src/plugins/projectexplorer/projectconfiguration.h
@@ -81,6 +81,30 @@ private:
Utils::MacroExpander m_macroExpander;
};
+class PROJECTEXPLORER_EXPORT StatefulProjectConfiguration : public ProjectConfiguration
+{
+ Q_OBJECT
+
+public:
+ StatefulProjectConfiguration() = default;
+
+ bool isEnabled() const;
+
+ virtual QString disabledReason() const = 0;
+
+signals:
+ void enabledChanged();
+
+protected:
+ StatefulProjectConfiguration(QObject *parent, Core::Id id);
+ StatefulProjectConfiguration(QObject *parent, const StatefulProjectConfiguration *source);
+
+ void setEnabled(bool enabled);
+
+private:
+ bool m_isEnabled;
+};
+
// helper functions:
PROJECTEXPLORER_EXPORT Core::Id idFromMap(const QVariantMap &map);
PROJECTEXPLORER_EXPORT QString displayNameFromMap(const QVariantMap &map);
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 6c4336ecba..db10c5752b 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -172,21 +172,24 @@ void IRunConfigurationAspect::resetProjectToGlobalSettings()
A run configuration specifies how a target should be run, while a runner
does the actual running.
- All RunControls and the target hold a shared pointer to the run
- configuration. That is, the lifetime of the run configuration might exceed
- the life of the target.
- The user might still have a RunControl running (or output tab of that RunControl open)
- and yet unloaded the target.
-
- Also, a run configuration might be already removed from the list of run
- configurations
- for a target, but still be runnable via the output tab.
+ The target owns the RunConfiguraitons and a RunControl will need to copy all
+ necessary data as the RunControl may continue to exist after the RunConfiguration
+ has been destroyed.
+
+ A RunConfiguration disables itself when the project is parsing or has no parsing
+ data available. The disabledReason() method can be used to get a user-facing string
+ describing why the RunConfiguration considers itself unfit for use.
+
+ Override updateEnabledState() to change the enabled state handling. Override
+ disabledReasons() to provide better/more descriptions to the user.
+
+ Connect signals that may change enabled state of your RunConfiguration to updateEnabledState.
*/
static std::vector<RunConfiguration::AspectFactory> theAspectFactories;
RunConfiguration::RunConfiguration(Target *target, Core::Id id) :
- ProjectConfiguration(target, id)
+ StatefulProjectConfiguration(target, id)
{
Q_ASSERT(target);
ctor();
@@ -196,7 +199,7 @@ RunConfiguration::RunConfiguration(Target *target, Core::Id id) :
}
RunConfiguration::RunConfiguration(Target *target, RunConfiguration *source) :
- ProjectConfiguration(target, source)
+ StatefulProjectConfiguration(target, source)
{
Q_ASSERT(target);
ctor();
@@ -212,6 +215,22 @@ RunConfiguration::~RunConfiguration()
qDeleteAll(m_aspects);
}
+QString RunConfiguration::disabledReason() const
+{
+ if (target()->project()->isParsing())
+ return tr("The Project is currently being parsed.");
+ if (!target()->project()->hasParsingData())
+ return tr("The project could not be fully parsed.");
+ return QString();
+}
+
+void RunConfiguration::updateEnabledState()
+{
+ Project *p = target()->project();
+
+ setEnabled(!p->isParsing() && p->hasParsingData());
+}
+
void RunConfiguration::addAspectFactory(const AspectFactory &aspectFactory)
{
theAspectFactories.push_back(aspectFactory);
@@ -225,6 +244,17 @@ void RunConfiguration::addExtraAspect(IRunConfigurationAspect *aspect)
void RunConfiguration::ctor()
{
+ connect(target()->project(), &Project::parsingStarted,
+ this, [this]() { updateEnabledState(); });
+ connect(target()->project(), &Project::parsingFinished,
+ this, [this]() { updateEnabledState(); });
+
+ connect(target(), &Target::addedRunConfiguration,
+ this, [this](const RunConfiguration *rc) {
+ if (rc == this)
+ updateEnabledState();
+ });
+
connect(this, &RunConfiguration::enabledChanged,
this, &RunConfiguration::requestRunActionsUpdate);
@@ -259,20 +289,6 @@ RunConfiguration *RunConfiguration::startupRunConfiguration()
return nullptr;
}
-/*!
- Checks whether a run configuration is enabled.
-*/
-
-bool RunConfiguration::isEnabled() const
-{
- return true;
-}
-
-QString RunConfiguration::disabledReason() const
-{
- return QString();
-}
-
bool RunConfiguration::isConfigured() const
{
return true;
@@ -287,7 +303,6 @@ RunConfiguration::ConfigurationState RunConfiguration::ensureConfigured(QString
return UnConfigured;
}
-
BuildConfiguration *RunConfiguration::activeBuildConfiguration() const
{
if (!target())
diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h
index 8bb32c1e08..fa57833f21 100644
--- a/src/plugins/projectexplorer/runconfiguration.h
+++ b/src/plugins/projectexplorer/runconfiguration.h
@@ -199,15 +199,15 @@ private:
};
// Documentation inside.
-class PROJECTEXPLORER_EXPORT RunConfiguration : public ProjectConfiguration
+class PROJECTEXPLORER_EXPORT RunConfiguration : public StatefulProjectConfiguration
{
Q_OBJECT
public:
~RunConfiguration() override;
- virtual bool isEnabled() const;
- virtual QString disabledReason() const;
+ QString disabledReason() const override;
+
virtual QWidget *createConfigurationWidget() = 0;
virtual bool isConfigured() const;
@@ -252,7 +252,6 @@ public:
}
signals:
- void enabledChanged();
void requestRunActionsUpdate();
void configurationFinished();
@@ -263,6 +262,8 @@ protected:
/// convenience function to get current build configuration.
BuildConfiguration *activeBuildConfiguration() const;
+ virtual void updateEnabledState();
+
private:
void ctor();
diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp
index 6dad6d29fa..fc84c9636b 100644
--- a/src/plugins/pythoneditor/pythoneditorplugin.cpp
+++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp
@@ -156,8 +156,6 @@ public:
QWidget *createConfigurationWidget() override;
QVariantMap toMap() const override;
bool fromMap(const QVariantMap &map) override;
- bool isEnabled() const override { return m_enabled; }
- QString disabledReason() const override;
Runnable runnable() const override;
bool supportsDebugger() const { return true; }
@@ -165,7 +163,6 @@ public:
QString arguments() const;
QString interpreter() const { return m_interpreter; }
void setInterpreter(const QString &interpreter) { m_interpreter = interpreter; }
- void setEnabled(bool b);
private:
friend class PythonRunConfigurationFactory;
@@ -174,15 +171,13 @@ private:
QString m_interpreter;
QString m_mainScript;
- bool m_enabled;
};
////////////////////////////////////////////////////////////////
PythonRunConfiguration::PythonRunConfiguration(Target *parent, Core::Id id) :
RunConfiguration(parent, id),
- m_mainScript(scriptFromId(id)),
- m_enabled(true)
+ m_mainScript(scriptFromId(id))
{
Environment sysEnv = Environment::systemEnvironment();
const QString exec = sysEnv.searchInPath("python").toString();
@@ -197,8 +192,7 @@ PythonRunConfiguration::PythonRunConfiguration(Target *parent, Core::Id id) :
PythonRunConfiguration::PythonRunConfiguration(Target *parent, PythonRunConfiguration *source) :
RunConfiguration(parent, source),
m_interpreter(source->interpreter()),
- m_mainScript(source->m_mainScript),
- m_enabled(source->m_enabled)
+ m_mainScript(source->m_mainScript)
{
setDefaultDisplayName(defaultDisplayName());
}
@@ -220,10 +214,7 @@ bool PythonRunConfiguration::fromMap(const QVariantMap &map)
QString PythonRunConfiguration::defaultDisplayName() const
{
- QString result = tr("Run %1").arg(m_mainScript);
- if (!m_enabled)
- result += ' ' + tr("(disabled)");
- return result;
+ return tr("Run %1").arg(m_mainScript);
}
QWidget *PythonRunConfiguration::createConfigurationWidget()
@@ -231,22 +222,6 @@ QWidget *PythonRunConfiguration::createConfigurationWidget()
return new PythonRunConfigurationWidget(this);
}
-void PythonRunConfiguration::setEnabled(bool b)
-{
- if (m_enabled == b)
- return;
- m_enabled = b;
- emit enabledChanged();
- setDefaultDisplayName(defaultDisplayName());
-}
-
-QString PythonRunConfiguration::disabledReason() const
-{
- if (!m_enabled)
- return tr("The script is currently disabled.");
- return QString();
-}
-
Runnable PythonRunConfiguration::runnable() const
{
StandardRunnable r;
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
index 44f464702a..e70f239748 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp
@@ -44,11 +44,11 @@
#include <utils/detailswidget.h>
#include <utils/stringutils.h>
#include <utils/persistentsettings.h>
+#include <utils/utilsicons.h>
#include <qtsupport/qtoutputformatter.h>
#include <qtsupport/qtsupportconstants.h>
#include <qtsupport/qtkitinformation.h>
#include <utils/hostosinfo.h>
-#include <utils/utilsicons.h>
#include "api/runenvironment.h"
@@ -140,34 +140,15 @@ QbsRunConfiguration::QbsRunConfiguration(Target *parent, QbsRunConfiguration *so
ctor();
}
-bool QbsRunConfiguration::isEnabled() const
-{
- QbsProject *project = static_cast<QbsProject *>(target()->project());
- return !project->isParsing() && project->hasParseResult();
-}
-
-QString QbsRunConfiguration::disabledReason() const
-{
- QbsProject *project = static_cast<QbsProject *>(target()->project());
- if (project->isParsing())
- return tr("The .qbs files are currently being parsed.");
-
- if (!project->hasParseResult())
- return tr("Parsing of .qbs files has failed.");
- return QString();
-}
-
void QbsRunConfiguration::ctor()
{
setDefaultDisplayName(defaultDisplayName());
QbsProject *project = static_cast<QbsProject *>(target()->project());
- connect(project, &Project::parsingStarted, this, &RunConfiguration::enabledChanged);
connect(project, &Project::parsingFinished, this, [this](bool success) {
auto terminalAspect = extraAspect<TerminalAspect>();
if (success && !terminalAspect->isUserSet())
terminalAspect->setUseTerminal(isConsoleApplication());
- emit enabledChanged();
});
connect(BuildManager::instance(), &BuildManager::buildStateChanged, this,
[this, project](Project *p) {
diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
index bff341af46..8ec444ba3c 100644
--- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
+++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h
@@ -64,8 +64,6 @@ class QbsRunConfiguration : public ProjectExplorer::RunConfiguration
public:
QbsRunConfiguration(ProjectExplorer::Target *parent, Core::Id id);
- bool isEnabled() const override;
- QString disabledReason() const override;
QWidget *createConfigurationWidget() override;
ProjectExplorer::Runnable runnable() const override;
diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp
index 6cb626ee7e..d30b2a0328 100644
--- a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp
+++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.cpp
@@ -58,26 +58,20 @@ QmakeAndroidRunConfiguration::QmakeAndroidRunConfiguration(Target *parent, Core:
: AndroidRunConfiguration(parent, id)
, m_proFilePath(path)
{
- QmakeProject *project = static_cast<QmakeProject *>(parent->project());
- m_parseSuccess = project->validParse(m_proFilePath);
- m_parseInProgress = project->parseInProgress(m_proFilePath);
- init();
+ ctor();
}
QmakeAndroidRunConfiguration::QmakeAndroidRunConfiguration(Target *parent, QmakeAndroidRunConfiguration *source)
: AndroidRunConfiguration(parent, source)
, m_proFilePath(source->m_proFilePath)
- , m_parseSuccess(source->m_parseSuccess)
- , m_parseInProgress(source->m_parseInProgress)
{
- init();
+ ctor();
}
-void QmakeAndroidRunConfiguration::init()
+void QmakeAndroidRunConfiguration::ctor()
{
setDefaultDisplayName(defaultDisplayName());
- connect(qmakeProject(), &QmakeProject::proFileUpdated,
- this, &QmakeAndroidRunConfiguration::proFileUpdated);
+ QTC_CHECK(!m_proFilePath.isEmpty());
}
bool QmakeAndroidRunConfiguration::fromMap(const QVariantMap &map)
@@ -86,24 +80,17 @@ bool QmakeAndroidRunConfiguration::fromMap(const QVariantMap &map)
QTC_ASSERT(project, return false);
const QDir projectDir = QDir(project->projectDirectory().toString());
m_proFilePath = Utils::FileName::fromUserInput(projectDir.filePath(map.value(PRO_FILE_KEY).toString()));
- m_parseSuccess = project->validParse(m_proFilePath);
- m_parseInProgress = project->parseInProgress(m_proFilePath);
return AndroidRunConfiguration::fromMap(map);
}
QVariantMap QmakeAndroidRunConfiguration::toMap() const
{
- QmakeProject *project = qmakeProject();
- if (m_proFilePath.isEmpty()) {
- if (!project->rootProjectNode())
- return QVariantMap();
- m_proFilePath = project->rootProjectNode()->filePath();
- }
-
- const QDir projectDir = QDir(project->projectDirectory().toString());
QVariantMap map(AndroidRunConfiguration::toMap());
+
+ const QDir projectDir = QDir(target()->project()->projectDirectory().toString());
map.insert(PRO_FILE_KEY, projectDir.relativeFilePath(m_proFilePath.toString()));
+
return map;
}
@@ -120,18 +107,13 @@ QString QmakeAndroidRunConfiguration::defaultDisplayName()
return QFileInfo(pathFromId(id())).completeBaseName();
}
-bool QmakeAndroidRunConfiguration::isEnabled() const
-{
- return m_parseSuccess && !m_parseInProgress;
-}
-
QString QmakeAndroidRunConfiguration::disabledReason() const
{
- if (m_parseInProgress)
+ if (qmakeProject()->isParsing())
return tr("The .pro file \"%1\" is currently being parsed.")
.arg(m_proFilePath.fileName());
- if (!m_parseSuccess)
+ if (!qmakeProject()->hasParsingData())
return qmakeProject()->disabledReasonForRunConfiguration(m_proFilePath);
return QString();
}
@@ -141,27 +123,6 @@ QString QmakeAndroidRunConfiguration::buildSystemTarget() const
return qmakeProject()->mapProFilePathToTarget(m_proFilePath);
}
-void QmakeAndroidRunConfiguration::proFileUpdated(QmakeProjectManager::QmakeProFile *pro,
- bool success, bool parseInProgress)
-{
- QmakeProject *project = qmakeProject();
- if (m_proFilePath.isEmpty() && project->rootProjectNode())
- m_proFilePath = project->rootProjectNode()->filePath();
-
- if (m_proFilePath != pro->filePath())
- return;
-
- bool enabled = isEnabled();
- QString reason = disabledReason();
- m_parseSuccess = success;
- m_parseInProgress = parseInProgress;
- if (enabled != isEnabled() || reason != disabledReason())
- emit enabledChanged();
-
- if (!parseInProgress)
- setDefaultDisplayName(defaultDisplayName());
-}
-
QmakeProject *QmakeAndroidRunConfiguration::qmakeProject() const
{
Target *t = target();
diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h
index f7ff72987c..5a788b12cd 100644
--- a/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h
+++ b/src/plugins/qmakeandroidsupport/qmakeandroidrunconfiguration.h
@@ -48,7 +48,6 @@ public:
Utils::FileName proFilePath() const;
- bool isEnabled() const override;
QString disabledReason() const override;
QString buildSystemTarget() const final;
@@ -61,13 +60,10 @@ protected:
QString defaultDisplayName();
private:
- void proFileUpdated(QmakeProjectManager::QmakeProFile *pro, bool success, bool parseInProgress);
QmakeProjectManager::QmakeProject *qmakeProject() const;
- void init();
+ void ctor();
mutable Utils::FileName m_proFilePath;
- bool m_parseSuccess;
- bool m_parseInProgress;
};
} // namespace Internal
diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
index a4a1302769..297362547f 100644
--- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
+++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp
@@ -87,9 +87,6 @@ DesktopQmakeRunConfiguration::DesktopQmakeRunConfiguration(Target *parent, Core:
addExtraAspect(new TerminalAspect(this, QStringLiteral("Qt4ProjectManager.Qt4RunConfiguration.UseTerminal")));
addExtraAspect(new WorkingDirectoryAspect(this,
QStringLiteral("Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory")));
- QmakeProject *project = qmakeProject();
- m_parseSuccess = project->validParse(m_proFilePath);
- m_parseInProgress = project->parseInProgress(m_proFilePath);
ctor();
}
@@ -98,44 +95,11 @@ DesktopQmakeRunConfiguration::DesktopQmakeRunConfiguration(Target *parent, Deskt
RunConfiguration(parent, source),
m_proFilePath(source->m_proFilePath),
m_isUsingDyldImageSuffix(source->m_isUsingDyldImageSuffix),
- m_isUsingLibrarySearchPath(source->m_isUsingLibrarySearchPath),
- m_parseSuccess(source->m_parseSuccess),
- m_parseInProgress(source->m_parseInProgress)
+ m_isUsingLibrarySearchPath(source->m_isUsingLibrarySearchPath)
{
ctor();
}
-bool DesktopQmakeRunConfiguration::isEnabled() const
-{
- return m_parseSuccess && !m_parseInProgress;
-}
-
-QString DesktopQmakeRunConfiguration::disabledReason() const
-{
- if (m_parseInProgress)
- return tr("The .pro file \"%1\" is currently being parsed.")
- .arg(m_proFilePath.fileName());
-
- if (!m_parseSuccess)
- return qmakeProject()->disabledReasonForRunConfiguration(m_proFilePath);
- return QString();
-}
-
-void DesktopQmakeRunConfiguration::proFileUpdated(QmakeProFile *pro, bool success, bool parseInProgress)
-{
- if (m_proFilePath != pro->filePath())
- return;
- const bool enabled = isEnabled();
- const QString reason = disabledReason();
- m_parseSuccess = success;
- m_parseInProgress = parseInProgress;
- if (enabled != isEnabled() || reason != disabledReason())
- emit enabledChanged();
-
- if (!parseInProgress)
- updateTargetInformation();
-}
-
void DesktopQmakeRunConfiguration::proFileEvaluated()
{
// We depend on all .pro files for the LD_LIBRARY_PATH so we emit a signal for all .pro files
@@ -165,8 +129,8 @@ void DesktopQmakeRunConfiguration::ctor()
setDefaultDisplayName(defaultDisplayName());
QmakeProject *project = qmakeProject();
- connect(project, &QmakeProject::proFileUpdated,
- this, &DesktopQmakeRunConfiguration::proFileUpdated);
+ connect(project, &Project::parsingFinished,
+ this, &DesktopQmakeRunConfiguration::updateTargetInformation);
connect(project, &QmakeProject::proFilesEvaluated,
this, &DesktopQmakeRunConfiguration::proFileEvaluated);
@@ -337,9 +301,6 @@ bool DesktopQmakeRunConfiguration::fromMap(const QVariantMap &map)
m_isUsingDyldImageSuffix = map.value(QLatin1String(USE_DYLD_IMAGE_SUFFIX_KEY), false).toBool();
m_isUsingLibrarySearchPath = map.value(QLatin1String(USE_LIBRARY_SEARCH_PATH), true).toBool();
- m_parseSuccess = qmakeProject()->validParse(m_proFilePath);
- m_parseInProgress = qmakeProject()->parseInProgress(m_proFilePath);
-
return RunConfiguration::fromMap(map);
}
diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
index ff7c86b5fc..a7dd10ef14 100644
--- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
+++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h
@@ -58,8 +58,6 @@ class DesktopQmakeRunConfiguration : public ProjectExplorer::RunConfiguration
public:
DesktopQmakeRunConfiguration(ProjectExplorer::Target *parent, Core::Id id);
- bool isEnabled() const override;
- QString disabledReason() const override;
QWidget *createConfigurationWidget() override;
ProjectExplorer::Runnable runnable() const override;
@@ -94,7 +92,6 @@ protected:
bool fromMap(const QVariantMap &map) override;
private:
- void proFileUpdated(QmakeProjectManager::QmakeProFile *pro, bool success, bool parseInProgress);
void proFileEvaluated();
void updateTargetInformation();
@@ -113,8 +110,6 @@ private:
// Cached startup sub project information
bool m_isUsingDyldImageSuffix = false;
bool m_isUsingLibrarySearchPath = true;
- bool m_parseSuccess = false;
- bool m_parseInProgress = false;
};
class DesktopQmakeRunConfigurationWidget : public QWidget
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.cpp b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
index c19a93f108..9e1839fed2 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.cpp
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.cpp
@@ -733,22 +733,6 @@ QmakeProFileNode *QmakeProject::rootProjectNode() const
return static_cast<QmakeProFileNode *>(Project::rootProjectNode());
}
-bool QmakeProject::validParse(const FileName &proFilePath) const
-{
- if (!rootProFile())
- return false;
- const QmakeProFile *pro = rootProFile()->findProFile(proFilePath);
- return pro && pro->validParse();
-}
-
-bool QmakeProject::parseInProgress(const FileName &proFilePath) const
-{
- if (!rootProFile())
- return false;
- const QmakeProFile *pro = rootProFile()->findProFile(proFilePath);
- return pro && pro->parseInProgress();
-}
-
QList<QmakeProFile *>
QmakeProject::collectAllProFiles(QmakeProFile *file, Parsing parse,
const QList<ProjectType> &projectTypes)
diff --git a/src/plugins/qmakeprojectmanager/qmakeproject.h b/src/plugins/qmakeprojectmanager/qmakeproject.h
index ac81646317..b8d3192f09 100644
--- a/src/plugins/qmakeprojectmanager/qmakeproject.h
+++ b/src/plugins/qmakeprojectmanager/qmakeproject.h
@@ -68,8 +68,6 @@ public:
bool supportsKit(ProjectExplorer::Kit *k, QString *errorMesage) const final;
QmakeProFileNode *rootProjectNode() const final;
- bool validParse(const Utils::FileName &proFilePath) const;
- bool parseInProgress(const Utils::FileName &proFilePath) const;
virtual QStringList filesGeneratedFrom(const QString &file) const final;
diff --git a/src/plugins/qmlprojectmanager/qmlproject.cpp b/src/plugins/qmlprojectmanager/qmlproject.cpp
index 76c3e6fa2b..4e2ca8c259 100644
--- a/src/plugins/qmlprojectmanager/qmlproject.cpp
+++ b/src/plugins/qmlprojectmanager/qmlproject.cpp
@@ -101,7 +101,7 @@ void QmlProject::addedRunConfiguration(RunConfiguration *rc)
// they have been added to a project
QmlProjectRunConfiguration *qmlrc = qobject_cast<QmlProjectRunConfiguration *>(rc);
if (qmlrc)
- qmlrc->updateEnabled();
+ qmlrc->updateEnabledState();
}
QDir QmlProject::projectDir() const
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index 1c2e77fb04..556352dd94 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -53,8 +53,7 @@ const char M_CURRENT_FILE[] = "CurrentFile";
QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *parent, Id id) :
RunConfiguration(parent, id),
- m_scriptFile(QLatin1String(M_CURRENT_FILE)),
- m_isEnabled(false)
+ m_scriptFile(QLatin1String(M_CURRENT_FILE))
{
addExtraAspect(new QmlProjectEnvironmentAspect(this));
@@ -79,22 +78,18 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *parent,
m_currentFileFilename(source->m_currentFileFilename),
m_mainScriptFilename(source->m_mainScriptFilename),
m_scriptFile(source->m_scriptFile),
- m_qmlViewerArgs(source->m_qmlViewerArgs),
- m_isEnabled(source->m_isEnabled)
+ m_qmlViewerArgs(source->m_qmlViewerArgs)
{
ctor();
}
-bool QmlProjectRunConfiguration::isEnabled() const
-{
- return m_isEnabled;
-}
-
QString QmlProjectRunConfiguration::disabledReason() const
{
- if (!m_isEnabled)
+ if (mainScript().isEmpty())
+ return tr("No script file to execute.");
+ if (!QFileInfo(executable()).exists())
return tr("No qmlviewer or qmlscene found.");
- return QString();
+ return RunConfiguration::disabledReason();
}
void QmlProjectRunConfiguration::ctor()
@@ -106,13 +101,13 @@ void QmlProjectRunConfiguration::ctor()
this, [this] { changeCurrentFile(); });
connect(target(), &Target::kitChanged,
- this, &QmlProjectRunConfiguration::updateEnabled);
+ this, &QmlProjectRunConfiguration::updateEnabledState);
if (id() == Constants::QML_SCENE_RC_ID)
setDisplayName(tr("QML Scene", "QMLRunConfiguration display name."));
else
setDisplayName(tr("QML Viewer", "QMLRunConfiguration display name."));
- updateEnabled();
+ updateEnabledState();
}
QString QmlProjectRunConfiguration::executable() const
@@ -215,7 +210,7 @@ void QmlProjectRunConfiguration::setScriptSource(MainScriptSource source,
m_mainScriptFilename
= target()->project()->projectDirectory().toString() + QLatin1Char('/') + m_scriptFile;
}
- updateEnabled();
+ updateEnabledState();
emit scriptSourceChanged();
}
@@ -258,10 +253,10 @@ void QmlProjectRunConfiguration::changeCurrentFile(IEditor *editor)
if (editor)
m_currentFileFilename = editor->document()->filePath().toString();
- updateEnabled();
+ updateEnabledState();
}
-void QmlProjectRunConfiguration::updateEnabled()
+void QmlProjectRunConfiguration::updateEnabledState()
{
bool qmlFileFound = false;
if (mainScriptSource() == FileInEditor) {
@@ -293,11 +288,10 @@ void QmlProjectRunConfiguration::updateEnabled()
qmlFileFound = !mainScript().isEmpty();
}
- bool newValue = QFileInfo::exists(executable()) && qmlFileFound;
- m_isEnabled = newValue;
-
- // Always emit change signal to force reevaluation of run/debug buttons
- emit enabledChanged();
+ if (QFileInfo::exists(executable()) && qmlFileFound)
+ RunConfiguration::updateEnabledState();
+ else
+ setEnabled(false);
}
bool QmlProjectRunConfiguration::isValidVersion(QtSupport::BaseQtVersion *version)
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
index cfab4cfd5f..d55eb28099 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.h
@@ -70,7 +70,6 @@ public:
QString mainScript() const;
// RunConfiguration
- bool isEnabled() const override;
QString disabledReason() const override;
virtual QWidget *createConfigurationWidget() override;
Utils::OutputFormatter *createOutputFormatter() const override;
@@ -84,13 +83,12 @@ protected:
QmlProjectRunConfiguration(ProjectExplorer::Target *parent,
QmlProjectRunConfiguration *source);
virtual bool fromMap(const QVariantMap &map) override;
- void setEnabled(bool value);
private:
void ctor();
void changeCurrentFile(Core::IEditor* = 0);
- void updateEnabled();
+ void updateEnabledState() final;
QString executable() const;
QString commandLineArguments() const;
@@ -106,8 +104,6 @@ private:
QString m_scriptFile;
QString m_qmlViewerArgs;
-
- bool m_isEnabled;
};
} // namespace QmlProjectManager
diff --git a/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h b/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h
index be97dad96c..feb551a624 100644
--- a/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h
+++ b/src/plugins/remotelinux/remotelinuxcustomrunconfiguration.h
@@ -41,7 +41,6 @@ public:
bool fromMap(const QVariantMap &map) override;
QVariantMap toMap() const override;
- bool isEnabled() const override { return true; }
bool isConfigured() const override;
ConfigurationState ensureConfigured(QString *errorMessage) override;
QWidget *createConfigurationWidget() override;
diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp
index 4dcca9c9cc..6ce7296417 100644
--- a/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp
+++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.cpp
@@ -115,11 +115,6 @@ void RemoteLinuxRunConfiguration::init()
this, &RemoteLinuxRunConfiguration::handleBuildSystemDataUpdated);
}
-bool RemoteLinuxRunConfiguration::isEnabled() const
-{
- return true;
-}
-
QWidget *RemoteLinuxRunConfiguration::createConfigurationWidget()
{
return new RemoteLinuxRunConfigurationWidget(this);
diff --git a/src/plugins/remotelinux/remotelinuxrunconfiguration.h b/src/plugins/remotelinux/remotelinuxrunconfiguration.h
index a1926c4cd5..badf329d11 100644
--- a/src/plugins/remotelinux/remotelinuxrunconfiguration.h
+++ b/src/plugins/remotelinux/remotelinuxrunconfiguration.h
@@ -51,7 +51,6 @@ public:
const QString &targetName);
~RemoteLinuxRunConfiguration() override;
- bool isEnabled() const override;
QWidget *createConfigurationWidget() override;
Utils::OutputFormatter *createOutputFormatter() const override;
diff --git a/src/plugins/winrt/winrtrunconfiguration.h b/src/plugins/winrt/winrtrunconfiguration.h
index 36bcf1ad43..36412f331d 100644
--- a/src/plugins/winrt/winrtrunconfiguration.h
+++ b/src/plugins/winrt/winrtrunconfiguration.h
@@ -38,7 +38,6 @@ public:
explicit WinRtRunConfiguration(ProjectExplorer::Target *parent, Core::Id id);
QWidget *createConfigurationWidget() override;
- bool isEnabled() const override { return true; } // Always enabled like DLL run control
QVariantMap toMap() const override;
bool fromMap(const QVariantMap &map) override;