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,
QWidget *parent,
const QList<EnvironmentItem> &initial,
const QString &placeholderText)
const QString &placeholderText,
Polisher polisher)
{
EnvironmentDialog dlg(parent);
polisher(&dlg);
dlg.setEnvironmentItems(initial);
dlg.setPlaceholderText(placeholderText);
bool result = dlg.exec() == QDialog::Accepted;

View File

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

View File

@@ -823,8 +823,12 @@ void EnvironmentKitInformation::fix(Kit *k)
void EnvironmentKitInformation::addToEnvironment(const Kit *k, Utils::Environment &env) const
{
const QVariant envValue = k->value(EnvironmentKitInformation::id());
if (envValue.isValid())
env.modify(Utils::EnvironmentItem::fromStringList(envValue.toStringList()));
if (envValue.isValid()) {
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

View File

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