diff options
Diffstat (limited to 'src')
8 files changed, 77 insertions, 121 deletions
diff --git a/src/plugins/projectexplorer/environmentaspect.cpp b/src/plugins/projectexplorer/environmentaspect.cpp index 0b311c3aa0..21fc6adb27 100644 --- a/src/plugins/projectexplorer/environmentaspect.cpp +++ b/src/plugins/projectexplorer/environmentaspect.cpp @@ -40,7 +40,7 @@ namespace ProjectExplorer { // -------------------------------------------------------------------- EnvironmentAspect::EnvironmentAspect(RunConfiguration *runConfig) : - IRunConfigurationAspect(runConfig), m_base(-1) + IRunConfigurationAspect(runConfig) { setDisplayName(tr("Run Environment")); setId("EnvironmentAspect"); @@ -49,13 +49,6 @@ EnvironmentAspect::EnvironmentAspect(RunConfiguration *runConfig) : int EnvironmentAspect::baseEnvironmentBase() const { - if (m_base == -1) { - QList<int> bases = possibleBaseEnvironments(); - QTC_ASSERT(!bases.isEmpty(), return -1); - foreach (int i, bases) - QTC_CHECK(i >= 0); - m_base = bases.at(0); - } return m_base; } @@ -86,6 +79,29 @@ Utils::Environment EnvironmentAspect::environment() const return env; } +QList<int> EnvironmentAspect::possibleBaseEnvironments() const +{ + return m_displayNames.keys(); +} + +QString EnvironmentAspect::baseEnvironmentDisplayName(int base) const +{ + return m_displayNames[base]; +} + +void EnvironmentAspect::addSupportedBaseEnvironment(int base, const QString &displayName) +{ + m_displayNames[base] = displayName; + if (m_base == -1) + m_base = base; +} + +void EnvironmentAspect::addPreferredBaseEnvironment(int base, const QString &displayName) +{ + m_displayNames[base] = displayName; + m_base = base; +} + void EnvironmentAspect::fromMap(const QVariantMap &map) { m_base = map.value(QLatin1String(BASE_KEY), -1).toInt(); diff --git a/src/plugins/projectexplorer/environmentaspect.h b/src/plugins/projectexplorer/environmentaspect.h index 4493ed960a..544629b4d4 100644 --- a/src/plugins/projectexplorer/environmentaspect.h +++ b/src/plugins/projectexplorer/environmentaspect.h @@ -41,8 +41,13 @@ class PROJECTEXPLORER_EXPORT EnvironmentAspect : public IRunConfigurationAspect Q_OBJECT public: - virtual QList<int> possibleBaseEnvironments() const = 0; - virtual QString baseEnvironmentDisplayName(int base) const = 0; + // The environment the user chose as base for his modifications. + virtual Utils::Environment baseEnvironment() const = 0; + // The environment including the user's modifications. + Utils::Environment environment() const; + + QList<int> possibleBaseEnvironments() const; + QString baseEnvironmentDisplayName(int base) const; int baseEnvironmentBase() const; void setBaseEnvironmentBase(int base); @@ -50,10 +55,8 @@ public: QList<Utils::EnvironmentItem> userEnvironmentChanges() const { return m_changes; } void setUserEnvironmentChanges(const QList<Utils::EnvironmentItem> &diff); - // The environment the user chose as base for his modifications. - virtual Utils::Environment baseEnvironment() const = 0; - // The environment including the user's modifications. - Utils::Environment environment() const; + void addSupportedBaseEnvironment(int base, const QString &displayName); + void addPreferredBaseEnvironment(int base, const QString &displayName); signals: void baseEnvironmentChanged(); @@ -66,8 +69,9 @@ protected: void toMap(QVariantMap &map) const override; private: - mutable int m_base; + int m_base = -1; QList<Utils::EnvironmentItem> m_changes; + QMap<int, QString> m_displayNames; }; } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/localenvironmentaspect.cpp b/src/plugins/projectexplorer/localenvironmentaspect.cpp index e06eeab353..04d7814ef4 100644 --- a/src/plugins/projectexplorer/localenvironmentaspect.cpp +++ b/src/plugins/projectexplorer/localenvironmentaspect.cpp @@ -35,27 +35,11 @@ namespace ProjectExplorer { -// -------------------------------------------------------------------- -// LocalEnvironmentAspect: -// -------------------------------------------------------------------- - -QList<int> LocalEnvironmentAspect::possibleBaseEnvironments() const -{ - return QList<int>() << static_cast<int>(BuildEnvironmentBase) - << static_cast<int>(SystemEnvironmentBase) - << static_cast<int>(CleanEnvironmentBase); -} - -QString LocalEnvironmentAspect::baseEnvironmentDisplayName(int base) const -{ - if (base == static_cast<int>(BuildEnvironmentBase)) - return tr("Build Environment"); - if (base == static_cast<int>(SystemEnvironmentBase)) - return tr("System Environment"); - if (base == static_cast<int>(CleanEnvironmentBase)) - return tr("Clean Environment"); - return QString(); -} +enum BaseEnvironmentBase { + CleanEnvironmentBase = 0, + SystemEnvironmentBase, + BuildEnvironmentBase +}; Utils::Environment LocalEnvironmentAspect::baseEnvironment() const { @@ -88,6 +72,10 @@ LocalEnvironmentAspect::LocalEnvironmentAspect(RunConfiguration *parent, const BaseEnvironmentModifier &modifier) : EnvironmentAspect(parent), m_baseEnvironmentModifier(modifier) { + addPreferredBaseEnvironment(BuildEnvironmentBase, tr("Build Environment")); + addSupportedBaseEnvironment(SystemEnvironmentBase, tr("System Environment")); + addSupportedBaseEnvironment(CleanEnvironmentBase, tr("Clean Environment")); + parent->target()->subscribeSignal(&BuildConfiguration::environmentChanged, this, &LocalEnvironmentAspect::buildEnvironmentHasChanged); connect(parent->target(), &Target::activeBuildConfigurationChanged, diff --git a/src/plugins/projectexplorer/localenvironmentaspect.h b/src/plugins/projectexplorer/localenvironmentaspect.h index 30b4fee3a1..a089cfa7f1 100644 --- a/src/plugins/projectexplorer/localenvironmentaspect.h +++ b/src/plugins/projectexplorer/localenvironmentaspect.h @@ -37,19 +37,11 @@ public: typedef std::function<void(RunConfiguration *, Utils::Environment &)> BaseEnvironmentModifier; LocalEnvironmentAspect(RunConfiguration *parent, const BaseEnvironmentModifier &modifier); - QList<int> possibleBaseEnvironments() const override; - QString baseEnvironmentDisplayName(int base) const override; Utils::Environment baseEnvironment() const override; void buildEnvironmentHasChanged(); private: - enum BaseEnvironmentBase { - CleanEnvironmentBase = 0, - SystemEnvironmentBase, - BuildEnvironmentBase - }; - BaseEnvironmentModifier m_baseEnvironmentModifier; }; diff --git a/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp b/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp index a4721ada4e..89cf5b6039 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp +++ b/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.cpp @@ -27,46 +27,25 @@ #include "qmlproject.h" +#include <projectexplorer/kit.h> #include <projectexplorer/kitinformation.h> #include <projectexplorer/target.h> -#include <projectexplorer/kit.h> -#include <utils/qtcassert.h> - -namespace QmlProjectManager { -// -------------------------------------------------------------------- -// QmlProjectEnvironmentAspect: -// -------------------------------------------------------------------- +using namespace ProjectExplorer; +using namespace Utils; -QList<int> QmlProjectEnvironmentAspect::possibleBaseEnvironments() const -{ - QList<int> ret; - if (ProjectExplorer::DeviceTypeKitInformation::deviceTypeId(runConfiguration()->target()->kit()) - == ProjectExplorer::Constants::DESKTOP_DEVICE_TYPE) { - ret << SystemEnvironmentBase; - } - ret << CleanEnvironmentBase; - return ret; -} +namespace QmlProjectManager { -QString QmlProjectEnvironmentAspect::baseEnvironmentDisplayName(int base) const -{ - switch (base) { - case SystemEnvironmentBase: - return tr("System Environment"); - case CleanEnvironmentBase: - return tr("Clean Environment"); - default: - QTC_CHECK(false); - return QString(); - } -} +enum BaseEnvironmentBase { + SystemEnvironmentBase = 0, + CleanEnvironmentBase +}; -Utils::Environment QmlProjectEnvironmentAspect::baseEnvironment() const +Environment QmlProjectEnvironmentAspect::baseEnvironment() const { - Utils::Environment env = baseEnvironmentBase() == SystemEnvironmentBase - ? Utils::Environment::systemEnvironment() - : Utils::Environment(); + Environment env = baseEnvironmentBase() == SystemEnvironmentBase + ? Environment::systemEnvironment() + : Environment(); if (QmlProject *project = qobject_cast<QmlProject *>(runConfiguration()->target()->project())) env.modify(project->environment()); @@ -74,8 +53,14 @@ Utils::Environment QmlProjectEnvironmentAspect::baseEnvironment() const return env; } -QmlProjectEnvironmentAspect::QmlProjectEnvironmentAspect(ProjectExplorer::RunConfiguration *rc) : - ProjectExplorer::EnvironmentAspect(rc) -{ } +QmlProjectEnvironmentAspect::QmlProjectEnvironmentAspect(RunConfiguration *rc) + : EnvironmentAspect(rc) +{ + if (DeviceTypeKitInformation::deviceTypeId(runConfiguration()->target()->kit()) + == Constants::DESKTOP_DEVICE_TYPE) + addPreferredBaseEnvironment(SystemEnvironmentBase, tr("System Environment")); + + addSupportedBaseEnvironment(CleanEnvironmentBase, tr("Clean Environment")); +} } // namespace QmlProjectManager diff --git a/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.h b/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.h index efa32fdfdb..97a49c4b30 100644 --- a/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.h +++ b/src/plugins/qmlprojectmanager/qmlprojectenvironmentaspect.h @@ -36,15 +36,7 @@ class QmlProjectEnvironmentAspect : public ProjectExplorer::EnvironmentAspect public: QmlProjectEnvironmentAspect(ProjectExplorer::RunConfiguration *rc); - QList<int> possibleBaseEnvironments() const override; - QString baseEnvironmentDisplayName(int base) const override; Utils::Environment baseEnvironment() const override; - -private: - enum BaseEnvironmentBase { - SystemEnvironmentBase = 0, - CleanEnvironmentBase, - }; }; } // namespace QmlProjectManager diff --git a/src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp b/src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp index 7a2bc8c1ba..2ad9d3da7e 100644 --- a/src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp +++ b/src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp @@ -28,46 +28,32 @@ #include "remotelinuxenvironmentaspectwidget.h" #include "utils/algorithm.h" -static const char DISPLAY_KEY[] = "DISPLAY"; -static const char VERSION_KEY[] = "RemoteLinux.EnvironmentAspect.Version"; -static const int ENVIRONMENTASPECT_VERSION = 1; // Version was introduced in 4.3 with the value 1 +namespace RemoteLinux { -namespace { +const char DISPLAY_KEY[] = "DISPLAY"; +const char VERSION_KEY[] = "RemoteLinux.EnvironmentAspect.Version"; +const int ENVIRONMENTASPECT_VERSION = 1; // Version was introduced in 4.3 with the value 1 -bool displayAlreadySet(const QList<Utils::EnvironmentItem> &changes) +static bool displayAlreadySet(const QList<Utils::EnvironmentItem> &changes) { return Utils::contains(changes, [](const Utils::EnvironmentItem &item) { return item.name == DISPLAY_KEY; }); } -} // anonymous namespace - -namespace RemoteLinux { +enum BaseEnvironmentBase { + CleanBaseEnvironment = 0, + RemoteBaseEnvironment = 1 +}; -// -------------------------------------------------------------------- -// RemoteLinuxEnvironmentAspect: -// -------------------------------------------------------------------- RemoteLinuxEnvironmentAspect::RemoteLinuxEnvironmentAspect(ProjectExplorer::RunConfiguration *rc) : ProjectExplorer::EnvironmentAspect(rc) { - setRunConfigWidgetCreator([this] { return new RemoteLinuxEnvironmentAspectWidget(this); }); -} - -QList<int> RemoteLinuxEnvironmentAspect::possibleBaseEnvironments() const -{ - return QList<int>() << static_cast<int>(RemoteBaseEnvironment) - << static_cast<int>(CleanBaseEnvironment); -} + addSupportedBaseEnvironment(CleanBaseEnvironment, tr("Clean Environment")); + addPreferredBaseEnvironment(RemoteBaseEnvironment, tr("System Environment")); -QString RemoteLinuxEnvironmentAspect::baseEnvironmentDisplayName(int base) const -{ - if (base == static_cast<int>(CleanBaseEnvironment)) - return tr("Clean Environment"); - else if (base == static_cast<int>(RemoteBaseEnvironment)) - return tr("System Environment"); - return QString(); + setRunConfigWidgetCreator([this] { return new RemoteLinuxEnvironmentAspectWidget(this); }); } Utils::Environment RemoteLinuxEnvironmentAspect::baseEnvironment() const diff --git a/src/plugins/remotelinux/remotelinuxenvironmentaspect.h b/src/plugins/remotelinux/remotelinuxenvironmentaspect.h index 4a3126340e..5f20e3d4a3 100644 --- a/src/plugins/remotelinux/remotelinuxenvironmentaspect.h +++ b/src/plugins/remotelinux/remotelinuxenvironmentaspect.h @@ -38,8 +38,6 @@ class REMOTELINUX_EXPORT RemoteLinuxEnvironmentAspect : public ProjectExplorer:: public: RemoteLinuxEnvironmentAspect(ProjectExplorer::RunConfiguration *rc); - QList<int> possibleBaseEnvironments() const override; - QString baseEnvironmentDisplayName(int base) const override; Utils::Environment baseEnvironment() const override; Utils::Environment remoteEnvironment() const; @@ -52,11 +50,6 @@ protected: void toMap(QVariantMap &map) const override; private: - enum BaseEnvironmentBase { - CleanBaseEnvironment = 0, - RemoteBaseEnvironment = 1 - }; - Utils::Environment m_remoteEnvironment; }; |