forked from qt-creator/qt-creator
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:
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user