forked from qt-creator/qt-creator
ProjectExplorer: Display build configuration specific variables again
Continues d308b86847
.
Task-number: QTCREATORBUG-31614
Change-Id: I408d96ccd6854b7bb62e13252c00ed3a29788b4c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -69,6 +69,24 @@ class Internal::BaseAspectPrivate
|
|||||||
public:
|
public:
|
||||||
explicit BaseAspectPrivate(AspectContainer *container) : m_container(container) {}
|
explicit BaseAspectPrivate(AspectContainer *container) : m_container(container) {}
|
||||||
|
|
||||||
|
MacroExpander *macroExpander()
|
||||||
|
{
|
||||||
|
if (!m_expander) {
|
||||||
|
m_expander = std::make_unique<MacroExpander>();
|
||||||
|
m_expander->setDisplayName("Variables");
|
||||||
|
if (m_container)
|
||||||
|
m_expander->registerSubProvider([this] { return m_container->macroExpander(); });
|
||||||
|
}
|
||||||
|
return m_expander.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setContainer(AspectContainer *container)
|
||||||
|
{
|
||||||
|
m_container = container;
|
||||||
|
if (m_expander)
|
||||||
|
m_expander->registerSubProvider([this] { return m_container->macroExpander(); });
|
||||||
|
}
|
||||||
|
|
||||||
Id m_id;
|
Id m_id;
|
||||||
std::function<QVariant(const QVariant &)> m_toSettings;
|
std::function<QVariant(const QVariant &)> m_toSettings;
|
||||||
std::function<QVariant(const QVariant &)> m_fromSettings;
|
std::function<QVariant(const QVariant &)> m_fromSettings;
|
||||||
@@ -96,8 +114,10 @@ public:
|
|||||||
BaseAspect::DataCloner m_dataCloner;
|
BaseAspect::DataCloner m_dataCloner;
|
||||||
QList<BaseAspect::DataExtractor> m_dataExtractors;
|
QList<BaseAspect::DataExtractor> m_dataExtractors;
|
||||||
|
|
||||||
MacroExpander *m_expander = globalMacroExpander();
|
|
||||||
QUndoStack *m_undoStack = nullptr;
|
QUndoStack *m_undoStack = nullptr;
|
||||||
|
|
||||||
|
private:
|
||||||
|
std::unique_ptr<MacroExpander> m_expander;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
@@ -649,6 +669,11 @@ void BaseAspect::forEachSubWidget(const std::function<void(QWidget *)> &func)
|
|||||||
func(w);
|
func(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BaseAspect::setContainer(AspectContainer *container)
|
||||||
|
{
|
||||||
|
d->setContainer(container);
|
||||||
|
}
|
||||||
|
|
||||||
void BaseAspect::saveToMap(Store &data, const QVariant &value,
|
void BaseAspect::saveToMap(Store &data, const QVariant &value,
|
||||||
const QVariant &defaultValue, const Key &key)
|
const QVariant &defaultValue, const Key &key)
|
||||||
{
|
{
|
||||||
@@ -741,12 +766,14 @@ QVariant BaseAspect::fromSettingsValue(const QVariant &val) const
|
|||||||
|
|
||||||
void BaseAspect::setMacroExpander(MacroExpander *expander)
|
void BaseAspect::setMacroExpander(MacroExpander *expander)
|
||||||
{
|
{
|
||||||
d->m_expander = expander;
|
d->macroExpander()->clearSubProviders();
|
||||||
|
if (expander)
|
||||||
|
d->macroExpander()->registerSubProvider([expander] { return expander; });
|
||||||
}
|
}
|
||||||
|
|
||||||
MacroExpander *BaseAspect::macroExpander() const
|
MacroExpander *BaseAspect::macroExpander() const
|
||||||
{
|
{
|
||||||
return d->m_expander;
|
return d->macroExpander();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseAspect::addOnChanged(QObject *guard, const Callback &callback)
|
void BaseAspect::addOnChanged(QObject *guard, const Callback &callback)
|
||||||
@@ -781,15 +808,11 @@ void BaseAspect::addOnLabelPixmapChanged(QObject *guard, const Callback &callbac
|
|||||||
|
|
||||||
void BaseAspect::addMacroExpansion(QWidget *w)
|
void BaseAspect::addMacroExpansion(QWidget *w)
|
||||||
{
|
{
|
||||||
if (!d->m_expander)
|
|
||||||
return;
|
|
||||||
const auto chooser = new VariableChooser(w);
|
const auto chooser = new VariableChooser(w);
|
||||||
chooser->addSupportedWidget(w);
|
chooser->addSupportedWidget(w);
|
||||||
if (d->m_expander == globalMacroExpander()) // default for VariableChooser()
|
chooser->addMacroExpanderProvider([this] { return d->macroExpander(); });
|
||||||
return;
|
|
||||||
chooser->addMacroExpanderProvider([this] { return d->m_expander; });
|
|
||||||
if (auto pathChooser = qobject_cast<PathChooser *>(w))
|
if (auto pathChooser = qobject_cast<PathChooser *>(w))
|
||||||
pathChooser->setMacroExpander(d->m_expander);
|
pathChooser->setMacroExpander(d->macroExpander());
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -3169,6 +3192,7 @@ void AspectContainer::addToLayoutImpl(Layouting::Layout &parent)
|
|||||||
*/
|
*/
|
||||||
void AspectContainer::registerAspect(BaseAspect *aspect, bool takeOwnership)
|
void AspectContainer::registerAspect(BaseAspect *aspect, bool takeOwnership)
|
||||||
{
|
{
|
||||||
|
aspect->setContainer(this);
|
||||||
aspect->setAutoApply(isAutoApply());
|
aspect->setAutoApply(isAutoApply());
|
||||||
aspect->setEnabled(isEnabled());
|
aspect->setEnabled(isEnabled());
|
||||||
d->m_items.append(aspect);
|
d->m_items.append(aspect);
|
||||||
@@ -3333,14 +3357,6 @@ void AspectContainer::setEnabled(bool enabled)
|
|||||||
aspect->setEnabled(enabled);
|
aspect->setEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void AspectContainer::setMacroExpander(MacroExpander *expander)
|
|
||||||
{
|
|
||||||
BaseAspect::setMacroExpander(expander);
|
|
||||||
|
|
||||||
for (BaseAspect *aspect : std::as_const(d->m_items))
|
|
||||||
aspect->setMacroExpander(expander);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool AspectContainer::equals(const AspectContainer &other) const
|
bool AspectContainer::equals(const AspectContainer &other) const
|
||||||
{
|
{
|
||||||
// FIXME: Expensive, but should not really be needed in a fully aspectified world.
|
// FIXME: Expensive, but should not really be needed in a fully aspectified world.
|
||||||
|
@@ -286,8 +286,11 @@ protected:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<Internal::BaseAspectPrivate> d;
|
|
||||||
friend class Internal::CheckableAspectImplementation;
|
friend class Internal::CheckableAspectImplementation;
|
||||||
|
friend class AspectContainer;
|
||||||
|
void setContainer(AspectContainer *container);
|
||||||
|
|
||||||
|
std::unique_ptr<Internal::BaseAspectPrivate> d;
|
||||||
};
|
};
|
||||||
|
|
||||||
QTCREATOR_UTILS_EXPORT void addToLayout(Layouting::Layout *layout, const BaseAspect *aspect);
|
QTCREATOR_UTILS_EXPORT void addToLayout(Layouting::Layout *layout, const BaseAspect *aspect);
|
||||||
@@ -999,8 +1002,6 @@ public:
|
|||||||
void setUndoStack(QUndoStack *undoStack) override;
|
void setUndoStack(QUndoStack *undoStack) override;
|
||||||
void setEnabled(bool enabled) override;
|
void setEnabled(bool enabled) override;
|
||||||
|
|
||||||
void setMacroExpander(MacroExpander *expander);
|
|
||||||
|
|
||||||
template <typename T> T *aspect() const
|
template <typename T> T *aspect() const
|
||||||
{
|
{
|
||||||
for (BaseAspect *aspect : aspects())
|
for (BaseAspect *aspect : aspects())
|
||||||
|
@@ -481,6 +481,11 @@ void MacroExpander::registerSubProvider(const MacroExpanderProvider &provider)
|
|||||||
d->m_subProviders.append(provider);
|
d->m_subProviders.append(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MacroExpander::clearSubProviders()
|
||||||
|
{
|
||||||
|
d->m_subProviders.clear();
|
||||||
|
}
|
||||||
|
|
||||||
bool MacroExpander::isAccumulating() const
|
bool MacroExpander::isAccumulating() const
|
||||||
{
|
{
|
||||||
return d->m_accumulating;
|
return d->m_accumulating;
|
||||||
|
@@ -23,7 +23,7 @@ class QTCREATOR_UTILS_EXPORT MacroExpander
|
|||||||
Q_DISABLE_COPY(MacroExpander)
|
Q_DISABLE_COPY(MacroExpander)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MacroExpander();
|
MacroExpander();
|
||||||
~MacroExpander();
|
~MacroExpander();
|
||||||
|
|
||||||
bool resolveMacro(const QString &name, QString *ret) const;
|
bool resolveMacro(const QString &name, QString *ret) const;
|
||||||
@@ -69,6 +69,7 @@ public:
|
|||||||
void setDisplayName(const QString &displayName);
|
void setDisplayName(const QString &displayName);
|
||||||
|
|
||||||
void registerSubProvider(const MacroExpanderProvider &provider);
|
void registerSubProvider(const MacroExpanderProvider &provider);
|
||||||
|
void clearSubProviders();
|
||||||
|
|
||||||
bool isAccumulating() const;
|
bool isAccumulating() const;
|
||||||
void setAccumulating(bool on);
|
void setAccumulating(bool on);
|
||||||
|
@@ -53,7 +53,6 @@ public:
|
|||||||
{
|
{
|
||||||
environment.addSupportedBaseEnvironment(Tr::tr("Clean Environment"), {});
|
environment.addSupportedBaseEnvironment(Tr::tr("Clean Environment"), {});
|
||||||
|
|
||||||
extraAppArgs.setMacroExpander(macroExpander());
|
|
||||||
extraAppArgs.addOnChanged(this, [this, target] {
|
extraAppArgs.addOnChanged(this, [this, target] {
|
||||||
if (target->buildConfigurations().first()->buildType() == BuildConfiguration::BuildType::Release) {
|
if (target->buildConfigurations().first()->buildType() == BuildConfiguration::BuildType::Release) {
|
||||||
const QString buildKey = target->activeBuildKey();
|
const QString buildKey = target->activeBuildKey();
|
||||||
|
@@ -562,7 +562,6 @@ public:
|
|||||||
&m_localPath,
|
&m_localPath,
|
||||||
noMargin};
|
noMargin};
|
||||||
});
|
});
|
||||||
setMacroExpander(nullptr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateContent(const PathMapping &mapping)
|
void updateContent(const PathMapping &mapping)
|
||||||
|
@@ -30,10 +30,6 @@ public:
|
|||||||
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
||||||
executable.setPlaceHolderText(Tr::tr("Unknown"));
|
executable.setPlaceHolderText(Tr::tr("Unknown"));
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
setUpdater([this] {
|
setUpdater([this] {
|
||||||
const BuildTargetInfo bti = buildTargetInfo();
|
const BuildTargetInfo bti = buildTargetInfo();
|
||||||
executable.setExecutable(bti.targetFilePath);
|
executable.setExecutable(bti.targetFilePath);
|
||||||
@@ -60,10 +56,6 @@ public:
|
|||||||
executable.setHistoryCompleter("BareMetal.CustomRunConfig.History");
|
executable.setHistoryCompleter("BareMetal.CustomRunConfig.History");
|
||||||
executable.setExpectedKind(PathChooser::Any);
|
executable.setExpectedKind(PathChooser::Any);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
setDefaultDisplayName(RunConfigurationFactory::decoratedTargetName(
|
setDefaultDisplayName(RunConfigurationFactory::decoratedTargetName(
|
||||||
Tr::tr("Custom Executable"), target));
|
Tr::tr("Custom Executable"), target));
|
||||||
setUsesEmptyBuildKeys();
|
setUsesEmptyBuildKeys();
|
||||||
|
@@ -47,9 +47,6 @@ public:
|
|||||||
|
|
||||||
environment.setDeviceSelector(target, EnvironmentAspect::RunDevice);
|
environment.setDeviceSelector(target, EnvironmentAspect::RunDevice);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setEnvironment(&environment);
|
workingDir.setEnvironment(&environment);
|
||||||
|
|
||||||
fullCommand.setLabelText(Tr::tr("Full command line:"));
|
fullCommand.setLabelText(Tr::tr("Full command line:"));
|
||||||
|
@@ -37,9 +37,6 @@ public:
|
|||||||
executable.setSettingsKey("Haskell.Executable");
|
executable.setSettingsKey("Haskell.Executable");
|
||||||
executable.setLabelText(Tr::tr("Executable"));
|
executable.setLabelText(Tr::tr("Executable"));
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setEnvironment(&environment);
|
workingDir.setEnvironment(&environment);
|
||||||
workingDir.setDefaultWorkingDirectory(project()->projectDirectory());
|
workingDir.setDefaultWorkingDirectory(project()->projectDirectory());
|
||||||
workingDir.setVisible(false);
|
workingDir.setVisible(false);
|
||||||
|
@@ -64,8 +64,6 @@ IosRunConfiguration::IosRunConfiguration(Target *target, Id id)
|
|||||||
{
|
{
|
||||||
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
setUpdater([this, target] {
|
setUpdater([this, target] {
|
||||||
IDevice::ConstPtr dev = DeviceKitAspect::device(target->kit());
|
IDevice::ConstPtr dev = DeviceKitAspect::device(target->kit());
|
||||||
const QString devName = dev ? dev->displayName() : IosDevice::name();
|
const QString devName = dev ? dev->displayName() : IosDevice::name();
|
||||||
|
@@ -31,9 +31,6 @@ public:
|
|||||||
|
|
||||||
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setEnvironment(&environment);
|
workingDir.setEnvironment(&environment);
|
||||||
|
|
||||||
connect(&useLibraryPaths, &BaseAspect::changed,
|
connect(&useLibraryPaths, &BaseAspect::changed,
|
||||||
|
@@ -24,7 +24,6 @@ public:
|
|||||||
NimbleBuildStep(BuildStepList *parentList, Id id)
|
NimbleBuildStep(BuildStepList *parentList, Id id)
|
||||||
: AbstractProcessStep(parentList, id)
|
: AbstractProcessStep(parentList, id)
|
||||||
{
|
{
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
arguments.setSettingsKey(Constants::C_NIMBLEBUILDSTEP_ARGUMENTS);
|
arguments.setSettingsKey(Constants::C_NIMBLEBUILDSTEP_ARGUMENTS);
|
||||||
arguments.setResetter([this] { return defaultArguments(); });
|
arguments.setResetter([this] { return defaultArguments(); });
|
||||||
arguments.setArguments(defaultArguments());
|
arguments.setArguments(defaultArguments());
|
||||||
|
@@ -28,10 +28,6 @@ public:
|
|||||||
|
|
||||||
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
setUpdater([this] {
|
setUpdater([this] {
|
||||||
BuildTargetInfo bti = buildTargetInfo();
|
BuildTargetInfo bti = buildTargetInfo();
|
||||||
setDisplayName(bti.displayName);
|
setDisplayName(bti.displayName);
|
||||||
@@ -74,10 +70,8 @@ public:
|
|||||||
executable.setDeviceSelector(target, ExecutableAspect::BuildDevice);
|
executable.setDeviceSelector(target, ExecutableAspect::BuildDevice);
|
||||||
executable.setExecutable(Nim::nimblePathFromKit(kit()));
|
executable.setExecutable(Nim::nimblePathFromKit(kit()));
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
arguments.setArguments("test");
|
arguments.setArguments("test");
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setDefaultWorkingDirectory(project()->projectDirectory());
|
workingDir.setDefaultWorkingDirectory(project()->projectDirectory());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,10 +30,6 @@ public:
|
|||||||
|
|
||||||
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
setDisplayName(Tr::tr("Current Build Target"));
|
setDisplayName(Tr::tr("Current Build Target"));
|
||||||
setDefaultDisplayName(Tr::tr("Current Build Target"));
|
setDefaultDisplayName(Tr::tr("Current Build Target"));
|
||||||
|
|
||||||
|
@@ -146,7 +146,6 @@ public:
|
|||||||
bool m_configWidgetHasFrame = false;
|
bool m_configWidgetHasFrame = false;
|
||||||
QList<Utils::Id> m_initialBuildSteps;
|
QList<Utils::Id> m_initialBuildSteps;
|
||||||
QList<Utils::Id> m_initialCleanSteps;
|
QList<Utils::Id> m_initialCleanSteps;
|
||||||
Utils::MacroExpander m_macroExpander;
|
|
||||||
bool m_parseStdOut = false;
|
bool m_parseStdOut = false;
|
||||||
QList<Utils::Id> m_customParsers;
|
QList<Utils::Id> m_customParsers;
|
||||||
|
|
||||||
@@ -288,11 +287,6 @@ void BuildConfiguration::doInitialize(const BuildInfo &info)
|
|||||||
d->m_initializer(info);
|
d->m_initializer(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
MacroExpander *BuildConfiguration::macroExpander() const
|
|
||||||
{
|
|
||||||
return &d->m_macroExpander;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool BuildConfiguration::createBuildDirectory()
|
bool BuildConfiguration::createBuildDirectory()
|
||||||
{
|
{
|
||||||
const bool result = bool(buildDirectory().ensureWritableDir());
|
const bool result = bool(buildDirectory().ensureWritableDir());
|
||||||
|
@@ -111,8 +111,6 @@ public:
|
|||||||
|
|
||||||
void doInitialize(const BuildInfo &info);
|
void doInitialize(const BuildInfo &info);
|
||||||
|
|
||||||
Utils::MacroExpander *macroExpander() const;
|
|
||||||
|
|
||||||
bool createBuildDirectory();
|
bool createBuildDirectory();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include <utils/fileinprojectfinder.h>
|
#include <utils/fileinprojectfinder.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
|
#include <utils/macroexpander.h>
|
||||||
#include <utils/outputformatter.h>
|
#include <utils/outputformatter.h>
|
||||||
#include <utils/variablechooser.h>
|
#include <utils/variablechooser.h>
|
||||||
|
|
||||||
@@ -85,10 +86,8 @@ BuildStep::BuildStep(BuildStepList *bsl, Id id)
|
|||||||
: ProjectConfiguration(bsl->target(), id)
|
: ProjectConfiguration(bsl->target(), id)
|
||||||
, m_stepList(bsl)
|
, m_stepList(bsl)
|
||||||
{
|
{
|
||||||
if (auto bc = buildConfiguration())
|
|
||||||
setMacroExpander(bc->macroExpander());
|
|
||||||
|
|
||||||
connect(this, &ProjectConfiguration::displayNameChanged, this, &BuildStep::updateSummary);
|
connect(this, &ProjectConfiguration::displayNameChanged, this, &BuildStep::updateSummary);
|
||||||
|
macroExpander()->registerSubProvider([bsl] { return bsl->projectConfiguration()->macroExpander(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *BuildStep::doCreateConfigWidget()
|
QWidget *BuildStep::doCreateConfigWidget()
|
||||||
|
@@ -32,9 +32,6 @@ CustomExecutableRunConfiguration::CustomExecutableRunConfiguration(Target *targe
|
|||||||
executable.setExpectedKind(PathChooser::ExistingCommand);
|
executable.setExpectedKind(PathChooser::ExistingCommand);
|
||||||
executable.setEnvironment(environment.environment());
|
executable.setEnvironment(environment.environment());
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setEnvironment(&environment);
|
workingDir.setEnvironment(&environment);
|
||||||
|
|
||||||
connect(&environment, &EnvironmentAspect::environmentChanged, this, [this] {
|
connect(&environment, &EnvironmentAspect::environmentChanged, this, [this] {
|
||||||
|
@@ -32,9 +32,6 @@ protected:
|
|||||||
|
|
||||||
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
executable.setDeviceSelector(target, ExecutableAspect::RunDevice);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setEnvironment(&environment);
|
workingDir.setEnvironment(&environment);
|
||||||
|
|
||||||
connect(&useLibraryPaths, &UseLibraryPathsAspect::changed,
|
connect(&useLibraryPaths, &UseLibraryPathsAspect::changed,
|
||||||
|
@@ -148,28 +148,27 @@ RunConfiguration::RunConfiguration(Target *target, Utils::Id id)
|
|||||||
forceDisplayNameSerialization();
|
forceDisplayNameSerialization();
|
||||||
connect(target, &Target::parsingFinished, this, &RunConfiguration::update);
|
connect(target, &Target::parsingFinished, this, &RunConfiguration::update);
|
||||||
|
|
||||||
setMacroExpander(&m_expander);
|
MacroExpander &expander = *macroExpander();
|
||||||
|
expander.setDisplayName(Tr::tr("Run Settings"));
|
||||||
m_expander.setDisplayName(Tr::tr("Run Settings"));
|
expander.setAccumulating(true);
|
||||||
m_expander.setAccumulating(true);
|
expander.registerSubProvider([target] {
|
||||||
m_expander.registerSubProvider([target] {
|
|
||||||
BuildConfiguration *bc = target->activeBuildConfiguration();
|
BuildConfiguration *bc = target->activeBuildConfiguration();
|
||||||
return bc ? bc->macroExpander() : target->macroExpander();
|
return bc ? bc->macroExpander() : target->macroExpander();
|
||||||
});
|
});
|
||||||
m_expander.registerPrefix("RunConfig:Env", Tr::tr("Variables in the run environment."),
|
expander.registerPrefix("RunConfig:Env", Tr::tr("Variables in the run environment."),
|
||||||
[this](const QString &var) {
|
[this](const QString &var) {
|
||||||
const auto envAspect = aspect<EnvironmentAspect>();
|
const auto envAspect = aspect<EnvironmentAspect>();
|
||||||
return envAspect ? envAspect->environment().expandedValueForKey(var) : QString();
|
return envAspect ? envAspect->environment().expandedValueForKey(var) : QString();
|
||||||
});
|
});
|
||||||
m_expander.registerVariable("RunConfig:WorkingDir",
|
expander.registerVariable("RunConfig:WorkingDir",
|
||||||
Tr::tr("The run configuration's working directory."),
|
Tr::tr("The run configuration's working directory."),
|
||||||
[this] {
|
[this] {
|
||||||
const auto wdAspect = aspect<WorkingDirectoryAspect>();
|
const auto wdAspect = aspect<WorkingDirectoryAspect>();
|
||||||
return wdAspect ? wdAspect->workingDirectory().toString() : QString();
|
return wdAspect ? wdAspect->workingDirectory().toString() : QString();
|
||||||
});
|
});
|
||||||
m_expander.registerVariable("RunConfig:Name", Tr::tr("The run configuration's name."),
|
expander.registerVariable("RunConfig:Name", Tr::tr("The run configuration's name."),
|
||||||
[this] { return displayName(); });
|
[this] { return displayName(); });
|
||||||
m_expander.registerFileVariables("RunConfig:Executable",
|
expander.registerFileVariables("RunConfig:Executable",
|
||||||
Tr::tr("The run configuration's executable."),
|
Tr::tr("The run configuration's executable."),
|
||||||
[this] { return commandLine().executable(); });
|
[this] { return commandLine().executable(); });
|
||||||
|
|
||||||
@@ -222,7 +221,7 @@ QWidget *RunConfiguration::createConfigurationWidget()
|
|||||||
}
|
}
|
||||||
auto widget = form.emerge();
|
auto widget = form.emerge();
|
||||||
|
|
||||||
VariableChooser::addSupportForChildWidgets(widget, &m_expander);
|
VariableChooser::addSupportForChildWidgets(widget, macroExpander());
|
||||||
|
|
||||||
auto detailsWidget = new Utils::DetailsWidget;
|
auto detailsWidget = new Utils::DetailsWidget;
|
||||||
detailsWidget->setState(DetailsWidget::NoSummary);
|
detailsWidget->setState(DetailsWidget::NoSummary);
|
||||||
|
@@ -203,7 +203,6 @@ private:
|
|||||||
CommandLineGetter m_commandLineGetter;
|
CommandLineGetter m_commandLineGetter;
|
||||||
RunnableModifier m_runnableModifier;
|
RunnableModifier m_runnableModifier;
|
||||||
Updater m_updater;
|
Updater m_updater;
|
||||||
Utils::MacroExpander m_expander;
|
|
||||||
Utils::Store m_pristineState;
|
Utils::Store m_pristineState;
|
||||||
bool m_customized = false;
|
bool m_customized = false;
|
||||||
bool m_usesEmptyBuildKeys = false;
|
bool m_usesEmptyBuildKeys = false;
|
||||||
|
@@ -320,11 +320,6 @@ ArgumentsAspect::ArgumentsAspect(AspectContainer *container)
|
|||||||
addDataExtractor(this, &ArgumentsAspect::arguments, &Data::arguments);
|
addDataExtractor(this, &ArgumentsAspect::arguments, &Data::arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArgumentsAspect::setMacroExpander(const MacroExpander *expander)
|
|
||||||
{
|
|
||||||
m_macroExpander = expander;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the main value of this aspect.
|
Returns the main value of this aspect.
|
||||||
|
|
||||||
@@ -332,12 +327,11 @@ void ArgumentsAspect::setMacroExpander(const MacroExpander *expander)
|
|||||||
*/
|
*/
|
||||||
QString ArgumentsAspect::arguments() const
|
QString ArgumentsAspect::arguments() const
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_macroExpander, return m_arguments);
|
|
||||||
if (m_currentlyExpanding)
|
if (m_currentlyExpanding)
|
||||||
return m_arguments;
|
return m_arguments;
|
||||||
|
|
||||||
m_currentlyExpanding = true;
|
m_currentlyExpanding = true;
|
||||||
const QString expanded = m_macroExpander->expandProcessArgs(m_arguments);
|
const QString expanded = macroExpander()->expandProcessArgs(m_arguments);
|
||||||
m_currentlyExpanding = false;
|
m_currentlyExpanding = false;
|
||||||
return expanded;
|
return expanded;
|
||||||
}
|
}
|
||||||
@@ -969,15 +963,9 @@ X11ForwardingAspect::X11ForwardingAspect(AspectContainer *container)
|
|||||||
addDataExtractor(this, &X11ForwardingAspect::display, &Data::display);
|
addDataExtractor(this, &X11ForwardingAspect::display, &Data::display);
|
||||||
}
|
}
|
||||||
|
|
||||||
void X11ForwardingAspect::setMacroExpander(const MacroExpander *expander)
|
|
||||||
{
|
|
||||||
m_macroExpander = expander;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString X11ForwardingAspect::display() const
|
QString X11ForwardingAspect::display() const
|
||||||
{
|
{
|
||||||
QTC_ASSERT(m_macroExpander, return value());
|
return !isChecked() ? QString() : macroExpander()->expandProcessArgs(value());
|
||||||
return !isChecked() ? QString() : m_macroExpander->expandProcessArgs(value());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -100,7 +100,6 @@ public:
|
|||||||
void setArguments(const QString &arguments);
|
void setArguments(const QString &arguments);
|
||||||
void setResetter(const std::function<QString()> &resetter);
|
void setResetter(const std::function<QString()> &resetter);
|
||||||
void resetArguments();
|
void resetArguments();
|
||||||
void setMacroExpander(const Utils::MacroExpander *macroExpander);
|
|
||||||
|
|
||||||
struct Data : BaseAspect::Data
|
struct Data : BaseAspect::Data
|
||||||
{
|
{
|
||||||
@@ -121,7 +120,6 @@ private:
|
|||||||
bool m_multiLine = false;
|
bool m_multiLine = false;
|
||||||
mutable bool m_currentlyExpanding = false;
|
mutable bool m_currentlyExpanding = false;
|
||||||
std::function<QString()> m_resetter;
|
std::function<QString()> m_resetter;
|
||||||
const Utils::MacroExpander *m_macroExpander = nullptr;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT UseLibraryPathsAspect : public Utils::BoolAspect
|
class PROJECTEXPLORER_EXPORT UseLibraryPathsAspect : public Utils::BoolAspect
|
||||||
@@ -268,14 +266,9 @@ class PROJECTEXPLORER_EXPORT X11ForwardingAspect : public Utils::StringAspect
|
|||||||
public:
|
public:
|
||||||
X11ForwardingAspect(Utils::AspectContainer *container = nullptr);
|
X11ForwardingAspect(Utils::AspectContainer *container = nullptr);
|
||||||
|
|
||||||
void setMacroExpander(const Utils::MacroExpander *macroExpander);
|
|
||||||
|
|
||||||
struct Data : StringAspect::Data { QString display; };
|
struct Data : StringAspect::Data { QString display; };
|
||||||
|
|
||||||
QString display() const;
|
QString display() const;
|
||||||
|
|
||||||
private:
|
|
||||||
const Utils::MacroExpander *m_macroExpander;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
@@ -119,11 +119,6 @@ public:
|
|||||||
|
|
||||||
environment.setSupportForBuildEnvironment(target);
|
environment.setSupportForBuildEnvironment(target);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
x11Forwarding.setMacroExpander(macroExpander());
|
|
||||||
x11Forwarding.setVisible(HostOsInfo::isAnyUnixHost());
|
x11Forwarding.setVisible(HostOsInfo::isAnyUnixHost());
|
||||||
|
|
||||||
interpreter.setLabelText(Tr::tr("Python:"));
|
interpreter.setLabelText(Tr::tr("Python:"));
|
||||||
|
@@ -518,9 +518,9 @@ QbsBuildStepConfigWidget::QbsBuildStepConfigWidget(QbsBuildStep *step)
|
|||||||
defaultInstallDirCheckBox->setText(QbsProjectManager::Tr::tr("Use default location"));
|
defaultInstallDirCheckBox->setText(QbsProjectManager::Tr::tr("Use default location"));
|
||||||
|
|
||||||
auto chooser = new VariableChooser(this);
|
auto chooser = new VariableChooser(this);
|
||||||
|
chooser->addMacroExpanderProvider([this] { return m_qbsStep->macroExpander(); });
|
||||||
chooser->addSupportedWidget(propertyEdit);
|
chooser->addSupportedWidget(propertyEdit);
|
||||||
chooser->addSupportedWidget(installDirChooser->lineEdit());
|
chooser->addSupportedWidget(installDirChooser->lineEdit());
|
||||||
chooser->addMacroExpanderProvider([step] { return step->macroExpander(); });
|
|
||||||
propertyEdit->setValidationFunction([this](FancyLineEdit *edit, QString *errorMessage) {
|
propertyEdit->setValidationFunction([this](FancyLineEdit *edit, QString *errorMessage) {
|
||||||
return validateProperties(edit, errorMessage);
|
return validateProperties(edit, errorMessage);
|
||||||
});
|
});
|
||||||
|
@@ -69,7 +69,6 @@ QMakeStep::QMakeStep(BuildStepList *bsl, Id id)
|
|||||||
buildType.addOption(Tr::tr("Debug"));
|
buildType.addOption(Tr::tr("Debug"));
|
||||||
buildType.addOption(Tr::tr("Release"));
|
buildType.addOption(Tr::tr("Release"));
|
||||||
|
|
||||||
userArguments.setMacroExpander(macroExpander());
|
|
||||||
userArguments.setSettingsKey(QMAKE_ARGUMENTS_KEY);
|
userArguments.setSettingsKey(QMAKE_ARGUMENTS_KEY);
|
||||||
userArguments.setLabelText(Tr::tr("Additional arguments:"));
|
userArguments.setLabelText(Tr::tr("Additional arguments:"));
|
||||||
|
|
||||||
|
@@ -84,7 +84,6 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
|
|||||||
qmlViewer.setHistoryCompleter("QmlProjectManager.viewer.history");
|
qmlViewer.setHistoryCompleter("QmlProjectManager.viewer.history");
|
||||||
|
|
||||||
arguments.setSettingsKey(Constants::QML_VIEWER_ARGUMENTS_KEY);
|
arguments.setSettingsKey(Constants::QML_VIEWER_ARGUMENTS_KEY);
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
setCommandLineGetter([this, target] {
|
setCommandLineGetter([this, target] {
|
||||||
const FilePath qmlRuntime = qmlRuntimeFilePath();
|
const FilePath qmlRuntime = qmlRuntimeFilePath();
|
||||||
@@ -169,8 +168,6 @@ QmlProjectRunConfiguration::QmlProjectRunConfiguration(Target *target, Id id)
|
|||||||
return envModifier(environment);
|
return envModifier(environment);
|
||||||
});
|
});
|
||||||
|
|
||||||
x11Forwarding.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
setRunnableModifier([this](ProcessRunData &r) {
|
setRunnableModifier([this](ProcessRunData &r) {
|
||||||
const QmlBuildSystem *bs = static_cast<QmlBuildSystem *>(activeBuildSystem());
|
const QmlBuildSystem *bs = static_cast<QmlBuildSystem *>(activeBuildSystem());
|
||||||
r.workingDirectory = bs->targetDirectory();
|
r.workingDirectory = bs->targetDirectory();
|
||||||
|
@@ -42,9 +42,6 @@ public:
|
|||||||
|
|
||||||
environment.setDeviceSelector(target, EnvironmentAspect::RunDevice);
|
environment.setDeviceSelector(target, EnvironmentAspect::RunDevice);
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setEnvironment(&environment);
|
workingDir.setEnvironment(&environment);
|
||||||
|
|
||||||
qtLibraries.setSettingsKey("Qt4ProjectManager.QnxRunConfiguration.QtLibPath");
|
qtLibraries.setSettingsKey("Qt4ProjectManager.QnxRunConfiguration.QtLibPath");
|
||||||
|
@@ -51,15 +51,10 @@ RemoteLinuxCustomRunConfiguration::RemoteLinuxCustomRunConfiguration(Target *tar
|
|||||||
symbolFile.setSettingsKey("RemoteLinux.CustomRunConfig.LocalExecutable");
|
symbolFile.setSettingsKey("RemoteLinux.CustomRunConfig.LocalExecutable");
|
||||||
symbolFile.setLabelText(Tr::tr("Local executable:"));
|
symbolFile.setLabelText(Tr::tr("Local executable:"));
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setEnvironment(&environment);
|
workingDir.setEnvironment(&environment);
|
||||||
|
|
||||||
terminal.setVisible(HostOsInfo::isAnyUnixHost());
|
terminal.setVisible(HostOsInfo::isAnyUnixHost());
|
||||||
|
|
||||||
x11Forwarding.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
setDefaultDisplayName(runConfigDefaultDisplayName());
|
setDefaultDisplayName(runConfigDefaultDisplayName());
|
||||||
setUsesEmptyBuildKeys();
|
setUsesEmptyBuildKeys();
|
||||||
}
|
}
|
||||||
|
@@ -52,15 +52,10 @@ RemoteLinuxRunConfiguration::RemoteLinuxRunConfiguration(Target *target, Id id)
|
|||||||
|
|
||||||
symbolFile.setLabelText(Tr::tr("Executable on host:"));
|
symbolFile.setLabelText(Tr::tr("Executable on host:"));
|
||||||
|
|
||||||
arguments.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
workingDir.setMacroExpander(macroExpander());
|
|
||||||
workingDir.setEnvironment(&environment);
|
workingDir.setEnvironment(&environment);
|
||||||
|
|
||||||
terminal.setVisible(HostOsInfo::isAnyUnixHost());
|
terminal.setVisible(HostOsInfo::isAnyUnixHost());
|
||||||
|
|
||||||
x11Forwarding.setMacroExpander(macroExpander());
|
|
||||||
|
|
||||||
connect(&useLibraryPath, &BaseAspect::changed,
|
connect(&useLibraryPath, &BaseAspect::changed,
|
||||||
&environment, &EnvironmentAspect::environmentChanged);
|
&environment, &EnvironmentAspect::environmentChanged);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user