diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index f45a479008cc7adcb8fc379d902ca05048bd4c27..3d1c180ae0131d20f2aedc81e7525d416524b56e 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -80,7 +80,8 @@ CMakeRunConfiguration::CMakeRunConfiguration(CMakeTarget *parent, const QString m_buildTarget(target), m_workingDirectory(workingDirectory), m_title(title), - m_baseEnvironmentBase(CMakeRunConfiguration::BuildEnvironmentBase) + m_baseEnvironmentBase(CMakeRunConfiguration::BuildEnvironmentBase), + m_enabled(true) { ctor(); } @@ -94,7 +95,8 @@ CMakeRunConfiguration::CMakeRunConfiguration(CMakeTarget *parent, CMakeRunConfig m_title(source->m_title), m_arguments(source->m_arguments), m_userEnvironmentChanges(source->m_userEnvironmentChanges), - m_baseEnvironmentBase(source->m_baseEnvironmentBase) + m_baseEnvironmentBase(source->m_baseEnvironmentBase), + m_enabled(source->m_enabled) { ctor(); } @@ -293,9 +295,21 @@ ProjectExplorer::ToolChain::ToolChainType CMakeRunConfiguration::toolChainType() return bc->toolChainType(); } -// Configuration widget +void CMakeRunConfiguration::setEnabled(bool b) +{ + if (m_enabled == b) + return; + m_enabled = b; + emit isEnabledChanged(isEnabled()); + setDisplayName(m_title + (m_enabled ? "" : tr(" (disabled)"))); +} +bool CMakeRunConfiguration::isEnabled(ProjectExplorer::BuildConfiguration *bc) const +{ + return m_enabled && LocalApplicationRunConfiguration::isEnabled(bc); +} +// Configuration widget CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration, QWidget *parent) : QWidget(parent), m_ignoreChange(false), m_cmakeRunConfiguration(cmakeRunConfiguration) { diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h index c856f0bcc7cd8a9a3a37ad6bb9f2977b84d88851..c4f49c5da22fa657cab20e438bfddec619d609c0 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h @@ -81,6 +81,11 @@ public: QVariantMap toMap() const; + void setEnabled(bool b); + + bool isEnabled(ProjectExplorer::BuildConfiguration *bc) const; + using LocalApplicationRunConfiguration::isEnabled; + signals: void baseEnvironmentChanged(); void userEnvironmentChangesChanged(const QList<ProjectExplorer::EnvironmentItem> &diff); @@ -115,6 +120,7 @@ private: QString m_arguments; QList<ProjectExplorer::EnvironmentItem> m_userEnvironmentChanges; BaseEnvironmentBase m_baseEnvironmentBase; + bool m_enabled; }; class CMakeRunConfigurationWidget : public QWidget diff --git a/src/plugins/cmakeprojectmanager/cmaketarget.cpp b/src/plugins/cmakeprojectmanager/cmaketarget.cpp index 9e45ee2cdc031ae75e931a377897ac340e603ee3..f0feff5e31bc3a1192d4b7d2299765896bb886d5 100644 --- a/src/plugins/cmakeprojectmanager/cmaketarget.cpp +++ b/src/plugins/cmakeprojectmanager/cmaketarget.cpp @@ -120,6 +120,7 @@ void CMakeTarget::updateRunConfigurations() foreach (CMakeRunConfiguration *rc, list) { rc->setExecutable(ct.executable); rc->setWorkingDirectory(ct.workingDirectory); + rc->setEnabled(true); } existingRunConfigurations.remove(ct.title); } else { @@ -131,7 +132,10 @@ void CMakeTarget::updateRunConfigurations() existingRunConfigurations.constBegin(); for( ; it != existingRunConfigurations.constEnd(); ++it) { CMakeRunConfiguration *rc = it.value(); - removeRunConfiguration(rc); + // The executables for those runconfigurations aren't build by the current buildconfiguration + // We just set a disable flag and show that in the display name + rc->setEnabled(false); + // removeRunConfiguration(rc); } if (runConfigurations().isEmpty()) { // Oh no, no run configuration,