Kit: Allow for Macros in EnvironmentKitInformation

Task-number: QTCREATORBUG-19359
Change-Id: I215fcbb6156f864176d7a8284371029e3ae62e92
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
Tobias Hunger
2017-11-23 16:48:05 +01:00
parent cf781640cf
commit dbd365afe6
4 changed files with 23 additions and 7 deletions

View File

@@ -153,9 +153,11 @@ void EnvironmentDialog::setPlaceholderText(const QString &text)
QList<EnvironmentItem> EnvironmentDialog::getEnvironmentItems(bool *ok, QList<EnvironmentItem> EnvironmentDialog::getEnvironmentItems(bool *ok,
QWidget *parent, QWidget *parent,
const QList<EnvironmentItem> &initial, const QList<EnvironmentItem> &initial,
const QString &placeholderText) const QString &placeholderText,
Polisher polisher)
{ {
EnvironmentDialog dlg(parent); EnvironmentDialog dlg(parent);
polisher(&dlg);
dlg.setEnvironmentItems(initial); dlg.setEnvironmentItems(initial);
dlg.setPlaceholderText(placeholderText); dlg.setPlaceholderText(placeholderText);
bool result = dlg.exec() == QDialog::Accepted; bool result = dlg.exec() == QDialog::Accepted;

View File

@@ -46,10 +46,12 @@ public:
void setPlaceholderText(const QString &text); void setPlaceholderText(const QString &text);
using Polisher = std::function<void(QWidget*)>;
static QList<EnvironmentItem> getEnvironmentItems(bool *ok, static QList<EnvironmentItem> getEnvironmentItems(bool *ok,
QWidget *parent = nullptr, QWidget *parent = nullptr,
const QList<EnvironmentItem> &initial = QList<EnvironmentItem>(), const QList<EnvironmentItem> &initial = QList<EnvironmentItem>(),
const QString &placeholderText = QString()); const QString &placeholderText = QString(),
Polisher polish = Polisher());
private: private:
Internal::EnvironmentDialogPrivate *d; Internal::EnvironmentDialogPrivate *d;

View File

@@ -823,8 +823,12 @@ void EnvironmentKitInformation::fix(Kit *k)
void EnvironmentKitInformation::addToEnvironment(const Kit *k, Utils::Environment &env) const void EnvironmentKitInformation::addToEnvironment(const Kit *k, Utils::Environment &env) const
{ {
const QVariant envValue = k->value(EnvironmentKitInformation::id()); const QVariant envValue = k->value(EnvironmentKitInformation::id());
if (envValue.isValid()) if (envValue.isValid()) {
env.modify(Utils::EnvironmentItem::fromStringList(envValue.toStringList())); const QStringList values = Utils::transform(envValue.toStringList(), [k](const QString &v) {
return k->macroExpander()->expand(v);
});
env.modify(Utils::EnvironmentItem::fromStringList(values));
}
} }
KitConfigWidget *EnvironmentKitInformation::createConfigWidget(Kit *k) const KitConfigWidget *EnvironmentKitInformation::createConfigWidget(Kit *k) const

View File

@@ -36,6 +36,7 @@
#include "environmentwidget.h" #include "environmentwidget.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <coreplugin/variablechooser.h>
#include <extensionsystem/pluginmanager.h> #include <extensionsystem/pluginmanager.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/fancylineedit.h> #include <utils/fancylineedit.h>
@@ -461,9 +462,16 @@ QList<Utils::EnvironmentItem> KitEnvironmentConfigWidget::currentEnvironment() c
void KitEnvironmentConfigWidget::editEnvironmentChanges() void KitEnvironmentConfigWidget::editEnvironmentChanges()
{ {
bool ok; bool ok;
const QList<Utils::EnvironmentItem> changes = Utils::EnvironmentDialog::getEnvironmentItems(&ok, Utils::MacroExpander *expander = m_kit->macroExpander();
m_summaryLabel, Utils::EnvironmentDialog::Polisher polisher = [expander](QWidget *w) {
currentEnvironment()); Core::VariableChooser::addSupportForChildWidgets(w, expander);
};
const QList<Utils::EnvironmentItem>
changes = Utils::EnvironmentDialog::getEnvironmentItems(&ok,
m_summaryLabel,
currentEnvironment(),
QString(),
polisher);
if (!ok) if (!ok)
return; return;