Consolidate some run configuration widget boilerplate

This removes the outermost layer of widget-vbox and moves some
common code into a helper function.

The pattern repeats (with variations) a few more times, that's
left for later patches.

Change-Id: I8c98229cf41d03d5330c896ec9fa0965bfc65602
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
hjk
2018-03-20 13:09:16 +01:00
parent 066376fdd0
commit 798d115a5c
6 changed files with 18 additions and 40 deletions

View File

@@ -35,7 +35,6 @@
#include <projectexplorer/runconfigurationaspects.h> #include <projectexplorer/runconfigurationaspects.h>
#include <projectexplorer/target.h> #include <projectexplorer/target.h>
#include <utils/detailswidget.h>
#include <utils/fancylineedit.h> #include <utils/fancylineedit.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -164,7 +163,7 @@ void CMakeRunConfiguration::updateEnabledState()
QWidget *CMakeRunConfiguration::createConfigurationWidget() QWidget *CMakeRunConfiguration::createConfigurationWidget()
{ {
return new CMakeRunConfigurationWidget(this); return wrapWidget(new CMakeRunConfigurationWidget(this));
} }
QString CMakeRunConfiguration::disabledReason() const QString CMakeRunConfiguration::disabledReason() const
@@ -190,10 +189,9 @@ static void updateExecutable(CMakeRunConfiguration *rc, Utils::FancyLineEdit *fl
} }
// Configuration widget // Configuration widget
CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration, QWidget *parent) CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration)
: QWidget(parent)
{ {
auto fl = new QFormLayout(); auto fl = new QFormLayout(this);
fl->setMargin(0); fl->setMargin(0);
fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
@@ -210,17 +208,6 @@ CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration *
cmakeRunConfiguration->extraAspect<ArgumentsAspect>()->addToMainConfigurationWidget(this, fl); cmakeRunConfiguration->extraAspect<ArgumentsAspect>()->addToMainConfigurationWidget(this, fl);
cmakeRunConfiguration->extraAspect<WorkingDirectoryAspect>()->addToMainConfigurationWidget(this, fl); cmakeRunConfiguration->extraAspect<WorkingDirectoryAspect>()->addToMainConfigurationWidget(this, fl);
cmakeRunConfiguration->extraAspect<TerminalAspect>()->addToMainConfigurationWidget(this, fl); cmakeRunConfiguration->extraAspect<TerminalAspect>()->addToMainConfigurationWidget(this, fl);
auto detailsContainer = new Utils::DetailsWidget(this);
detailsContainer->setState(Utils::DetailsWidget::NoSummary);
auto detailsWidget = new QWidget(detailsContainer);
detailsContainer->setWidget(detailsWidget);
detailsWidget->setLayout(fl);
auto vbx = new QVBoxLayout(this);
vbx->setMargin(0);
vbx->addWidget(detailsContainer);
} }
// Factory // Factory

View File

@@ -71,7 +71,7 @@ class CMakeRunConfigurationWidget : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration, QWidget *parent = 0); explicit CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration);
}; };
class CMakeRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory class CMakeRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory

View File

@@ -38,6 +38,7 @@
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/checkablemessagebox.h> #include <utils/checkablemessagebox.h>
#include <utils/detailswidget.h>
#include <utils/outputformatter.h> #include <utils/outputformatter.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/utilsicons.h> #include <utils/utilsicons.h>
@@ -298,6 +299,14 @@ BuildConfiguration *RunConfiguration::activeBuildConfiguration() const
return target()->activeBuildConfiguration(); return target()->activeBuildConfiguration();
} }
QWidget *RunConfiguration::wrapWidget(QWidget *inner) const
{
auto detailsWidget = new Utils::DetailsWidget;
detailsWidget->setState(DetailsWidget::NoSummary);
detailsWidget->setWidget(inner);
return detailsWidget;
}
Target *RunConfiguration::target() const Target *RunConfiguration::target() const
{ {
return static_cast<Target *>(parent()); return static_cast<Target *>(parent());

View File

@@ -269,6 +269,7 @@ protected:
/// convenience function to get current build configuration. /// convenience function to get current build configuration.
BuildConfiguration *activeBuildConfiguration() const; BuildConfiguration *activeBuildConfiguration() const;
QWidget *wrapWidget(QWidget *inner) const;
virtual void updateEnabledState(); virtual void updateEnabledState();
virtual void doAdditionalSetup(const RunConfigurationCreationInfo &) {} virtual void doAdditionalSetup(const RunConfigurationCreationInfo &) {}

View File

@@ -44,7 +44,6 @@
#include <qtsupport/qtsupportconstants.h> #include <qtsupport/qtsupportconstants.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <utils/detailswidget.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/persistentsettings.h> #include <utils/persistentsettings.h>
@@ -89,16 +88,7 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc)
{ {
m_runConfiguration = rc; m_runConfiguration = rc;
auto mainLayout = new QVBoxLayout(this); auto toplayout = new QFormLayout(this);
mainLayout->setMargin(0);
auto detailsContainer = new Utils::DetailsWidget(this);
detailsContainer->setState(Utils::DetailsWidget::NoSummary);
mainLayout->addWidget(detailsContainer);
auto detailsWidget = new QWidget(detailsContainer);
detailsContainer->setWidget(detailsWidget);
auto toplayout = new QFormLayout(detailsWidget);
toplayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); toplayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
toplayout->setMargin(0); toplayout->setMargin(0);
@@ -230,7 +220,7 @@ void QbsRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo &
QWidget *QbsRunConfiguration::createConfigurationWidget() QWidget *QbsRunConfiguration::createConfigurationWidget()
{ {
return new QbsRunConfigurationWidget(this); return wrapWidget(new QbsRunConfigurationWidget(this));
} }
Runnable QbsRunConfiguration::runnable() const Runnable QbsRunConfiguration::runnable() const

View File

@@ -38,7 +38,6 @@
#include <qtsupport/qtoutputformatter.h> #include <qtsupport/qtoutputformatter.h>
#include <qtsupport/qtsupportconstants.h> #include <qtsupport/qtsupportconstants.h>
#include <utils/detailswidget.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
@@ -115,15 +114,7 @@ void DesktopQmakeRunConfiguration::updateTargetInformation()
DesktopQmakeRunConfigurationWidget::DesktopQmakeRunConfigurationWidget(DesktopQmakeRunConfiguration *qmakeRunConfiguration) DesktopQmakeRunConfigurationWidget::DesktopQmakeRunConfigurationWidget(DesktopQmakeRunConfiguration *qmakeRunConfiguration)
: m_qmakeRunConfiguration(qmakeRunConfiguration) : m_qmakeRunConfiguration(qmakeRunConfiguration)
{ {
auto vboxTopLayout = new QVBoxLayout(this); auto toplayout = new QFormLayout(this);
vboxTopLayout->setMargin(0);
auto detailsContainer = new DetailsWidget(this);
detailsContainer->setState(DetailsWidget::NoSummary);
vboxTopLayout->addWidget(detailsContainer);
auto detailsWidget = new QWidget(detailsContainer);
detailsContainer->setWidget(detailsWidget);
auto toplayout = new QFormLayout(detailsWidget);
toplayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); toplayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
toplayout->setMargin(0); toplayout->setMargin(0);
@@ -207,7 +198,7 @@ void DesktopQmakeRunConfigurationWidget::effectiveTargetInformationChanged()
QWidget *DesktopQmakeRunConfiguration::createConfigurationWidget() QWidget *DesktopQmakeRunConfiguration::createConfigurationWidget()
{ {
return new DesktopQmakeRunConfigurationWidget(this); return wrapWidget(new DesktopQmakeRunConfigurationWidget(this));
} }
Runnable DesktopQmakeRunConfiguration::runnable() const Runnable DesktopQmakeRunConfiguration::runnable() const