summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2019-06-25 10:10:06 +0200
committerhjk <hjk@qt.io>2019-06-25 12:38:03 +0000
commitcc10788d60a704585f6a0304624b0d005baa1405 (patch)
treed822ef41cd4aebad1bc236e8c977c0bcf2022c16 /src
parent63e418024225f104c7bc51110ac2b12dec4d23ba (diff)
downloadqt-creator-cc10788d60a704585f6a0304624b0d005baa1405.tar.gz
ProjectExplorer: Start centralizing BuildStepWidget update logic
... and use the autotool configure step as guinea pig. Change-Id: I0bbc9fee70b3c8626eb0dec0f728e8368f860484 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp2
-rw-r--r--src/plugins/autotoolsprojectmanager/configurestep.cpp56
-rw-r--r--src/plugins/autotoolsprojectmanager/configurestep.h6
-rw-r--r--src/plugins/projectexplorer/buildstep.cpp26
-rw-r--r--src/plugins/projectexplorer/buildstep.h7
5 files changed, 52 insertions, 45 deletions
diff --git a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
index 0007ddf447..3a058c8f03 100644
--- a/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
+++ b/src/plugins/autotoolsprojectmanager/autotoolsbuildconfiguration.cpp
@@ -83,8 +83,6 @@ void AutotoolsBuildConfiguration::initialize(const BuildInfo &info)
// ./configure.
auto configureStep = new ConfigureStep(buildSteps);
buildSteps->appendStep(configureStep);
- connect(this, &BuildConfiguration::buildDirectoryChanged,
- configureStep, &ConfigureStep::notifyBuildDirectoryChanged);
// make
auto makeStep = new MakeStep(buildSteps);
diff --git a/src/plugins/autotoolsprojectmanager/configurestep.cpp b/src/plugins/autotoolsprojectmanager/configurestep.cpp
index 73d6d5e53f..9a5f45a0ad 100644
--- a/src/plugins/autotoolsprojectmanager/configurestep.cpp
+++ b/src/plugins/autotoolsprojectmanager/configurestep.cpp
@@ -89,6 +89,25 @@ ConfigureStep::ConfigureStep(BuildStepList *bsl) : AbstractProcessStep(bsl, CONF
m_additionalArgumentsAspect->setSettingsKey(CONFIGURE_ADDITIONAL_ARGUMENTS_KEY);
m_additionalArgumentsAspect->setLabelText(tr("Arguments:"));
m_additionalArgumentsAspect->setHistoryCompleter("AutotoolsPM.History.ConfigureArgs");
+
+ connect(m_additionalArgumentsAspect, &ProjectConfigurationAspect::changed, this, [this] {
+ m_runConfigure = true;
+ });
+
+ setSummaryUpdater([this] {
+ BuildConfiguration *bc = buildConfiguration();
+
+ ProcessParameters param;
+ param.setMacroExpander(bc->macroExpander());
+ param.setEnvironment(bc->environment());
+ param.setWorkingDirectory(bc->buildDirectory());
+ param.setCommandLine({FilePath::fromString(projectDirRelativeToBuildDir(bc) + "configure"),
+ m_additionalArgumentsAspect->value(),
+ CommandLine::Raw});
+
+ return param.summaryInWorkdir(displayName());
+ });
+
}
bool ConfigureStep::init()
@@ -129,40 +148,3 @@ void ConfigureStep::doRun()
m_runConfigure = false;
AbstractProcessStep::doRun();
}
-
-BuildStepConfigWidget *ConfigureStep::createConfigWidget()
-{
- m_widget = AbstractProcessStep::createConfigWidget();
-
- updateDetails();
-
- connect(m_additionalArgumentsAspect, &ProjectConfigurationAspect::changed, this, [this] {
- m_runConfigure = true;
- updateDetails();
- });
-
- return m_widget.data();
-}
-
-void ConfigureStep::notifyBuildDirectoryChanged()
-{
- updateDetails();
-}
-
-void ConfigureStep::updateDetails()
-{
- if (!m_widget)
- return;
-
- BuildConfiguration *bc = buildConfiguration();
-
- ProcessParameters param;
- param.setMacroExpander(bc->macroExpander());
- param.setEnvironment(bc->environment());
- param.setWorkingDirectory(bc->buildDirectory());
- param.setCommandLine({FilePath::fromString(projectDirRelativeToBuildDir(bc) + "configure"),
- m_additionalArgumentsAspect->value(),
- CommandLine::Raw});
-
- m_widget->setSummaryText(param.summaryInWorkdir(displayName()));
-}
diff --git a/src/plugins/autotoolsprojectmanager/configurestep.h b/src/plugins/autotoolsprojectmanager/configurestep.h
index 4faa7a24b7..380eb413c0 100644
--- a/src/plugins/autotoolsprojectmanager/configurestep.h
+++ b/src/plugins/autotoolsprojectmanager/configurestep.h
@@ -67,20 +67,14 @@ class ConfigureStep : public ProjectExplorer::AbstractProcessStep
public:
explicit ConfigureStep(ProjectExplorer::BuildStepList *bsl);
- ProjectExplorer::BuildStepConfigWidget *createConfigWidget() override;
-
void setAdditionalArguments(const QString &list);
- void notifyBuildDirectoryChanged();
private:
bool init() override;
void doRun() override;
- void updateDetails();
-
ProjectExplorer::BaseStringAspect *m_additionalArgumentsAspect = nullptr;
bool m_runConfigure = false;
- QPointer<ProjectExplorer::BuildStepConfigWidget> m_widget;
};
} // namespace Internal
diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp
index 35e02b8972..68fe979b91 100644
--- a/src/plugins/projectexplorer/buildstep.cpp
+++ b/src/plugins/projectexplorer/buildstep.cpp
@@ -155,6 +155,11 @@ BuildStepConfigWidget *BuildStep::createConfigWidget()
aspect->addToConfigurationLayout(formLayout);
}
+ connect(buildConfiguration(), &BuildConfiguration::buildDirectoryChanged,
+ widget, &BuildStepConfigWidget::recreateSummary);
+
+ widget->setSummaryUpdater(m_summaryUpdater);
+
return widget;
}
@@ -267,6 +272,11 @@ void BuildStep::doCancel()
<< "neeeds to implement the doCancel() function");
}
+void BuildStep::setSummaryUpdater(const std::function<QString ()> &summaryUpdater)
+{
+ m_summaryUpdater = summaryUpdater;
+}
+
void BuildStep::setEnabled(bool b)
{
if (m_enabled == b)
@@ -412,6 +422,10 @@ BuildStepConfigWidget::BuildStepConfigWidget(BuildStep *step)
m_summaryText = "<b>" + m_displayName + "</b>";
connect(m_step, &ProjectConfiguration::displayNameChanged,
this, &BuildStepConfigWidget::updateSummary);
+ for (auto aspect : step->aspects()) {
+ connect(aspect, &ProjectConfigurationAspect::changed,
+ this, &BuildStepConfigWidget::recreateSummary);
+ }
}
QString BuildStepConfigWidget::summaryText() const
@@ -437,4 +451,16 @@ void BuildStepConfigWidget::setSummaryText(const QString &summaryText)
}
}
+void BuildStepConfigWidget::setSummaryUpdater(const std::function<QString()> &summaryUpdater)
+{
+ m_summaryUpdater = summaryUpdater;
+ recreateSummary();
+}
+
+void BuildStepConfigWidget::recreateSummary()
+{
+ if (m_summaryUpdater)
+ setSummaryText(m_summaryUpdater());
+}
+
} // ProjectExplorer
diff --git a/src/plugins/projectexplorer/buildstep.h b/src/plugins/projectexplorer/buildstep.h
index 0abf7d5b78..9322bb459a 100644
--- a/src/plugins/projectexplorer/buildstep.h
+++ b/src/plugins/projectexplorer/buildstep.h
@@ -97,6 +97,8 @@ public:
void setImmutable(bool immutable) { m_immutable = immutable; }
virtual QVariant data(Core::Id id) const;
+ void setSummaryUpdater(const std::function<QString ()> &summaryUpdater);
+
signals:
/// Adds a \p task to the Issues pane.
/// Do note that for linking compile output with tasks, you should first emit the task
@@ -129,6 +131,7 @@ private:
bool m_widgetExpandedByDefault = true;
bool m_runInGuiThread = true;
Utils::optional<bool> m_wasExpanded;
+ std::function<QString()> m_summaryUpdater;
};
class PROJECTEXPLORER_EXPORT BuildStepInfo
@@ -209,6 +212,9 @@ public:
void setDisplayName(const QString &displayName);
void setSummaryText(const QString &summaryText);
+ void setSummaryUpdater(const std::function<QString()> &summaryUpdater);
+ void recreateSummary();
+
signals:
void updateSummary();
@@ -216,6 +222,7 @@ private:
BuildStep *m_step = nullptr;
QString m_displayName;
QString m_summaryText;
+ std::function<QString()> m_summaryUpdater;
};
} // namespace ProjectExplorer