forked from qt-creator/qt-creator
LayoutBuilder: Allow for more compact code at calling sites
Change-Id: I12bb6dbfc138e03138b9a74d36e864d8ea36092f Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -168,16 +168,12 @@ DebuggerRunConfigurationAspect::DebuggerRunConfigurationAspect(Target *target)
|
|||||||
QWidget *w = new QWidget;
|
QWidget *w = new QWidget;
|
||||||
LayoutBuilder builder(w);
|
LayoutBuilder builder(w);
|
||||||
m_cppAspect->addToLayout(builder);
|
m_cppAspect->addToLayout(builder);
|
||||||
builder.startNewRow();
|
m_qmlAspect->addToLayout(builder.startNewRow());
|
||||||
m_qmlAspect->addToLayout(builder);
|
m_overrideStartupAspect->addToLayout(builder.startNewRow());
|
||||||
builder.startNewRow();
|
|
||||||
m_overrideStartupAspect->addToLayout(builder);
|
|
||||||
|
|
||||||
static const QByteArray env = qgetenv("QTC_DEBUGGER_MULTIPROCESS");
|
static const QByteArray env = qgetenv("QTC_DEBUGGER_MULTIPROCESS");
|
||||||
if (env.toInt()) {
|
if (env.toInt())
|
||||||
builder.startNewRow();
|
m_multiProcessAspect->addToLayout(builder.startNewRow());
|
||||||
m_multiProcessAspect->addToLayout(builder);
|
|
||||||
}
|
|
||||||
|
|
||||||
return w;
|
return w;
|
||||||
});
|
});
|
||||||
|
@@ -328,8 +328,7 @@ void IosDeviceTypeAspect::addToLayout(LayoutBuilder &builder)
|
|||||||
|
|
||||||
m_deviceTypeLabel = new QLabel(IosRunConfiguration::tr("Device type:"));
|
m_deviceTypeLabel = new QLabel(IosRunConfiguration::tr("Device type:"));
|
||||||
|
|
||||||
builder.addItem(m_deviceTypeLabel);
|
builder.addItems(m_deviceTypeLabel, m_deviceTypeComboBox);
|
||||||
builder.addItem(m_deviceTypeComboBox);
|
|
||||||
|
|
||||||
updateValues();
|
updateValues();
|
||||||
|
|
||||||
|
@@ -185,10 +185,8 @@ NamedWidget *BuildConfiguration::createConfigWidget()
|
|||||||
|
|
||||||
LayoutBuilder builder(widget);
|
LayoutBuilder builder(widget);
|
||||||
for (ProjectConfigurationAspect *aspect : aspects()) {
|
for (ProjectConfigurationAspect *aspect : aspects()) {
|
||||||
if (aspect->isVisible()) {
|
if (aspect->isVisible())
|
||||||
builder.startNewRow();
|
aspect->addToLayout(builder.startNewRow());
|
||||||
aspect->addToLayout(builder);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return named;
|
return named;
|
||||||
|
@@ -152,10 +152,8 @@ BuildStepConfigWidget *BuildStep::createConfigWidget()
|
|||||||
{
|
{
|
||||||
LayoutBuilder builder(widget);
|
LayoutBuilder builder(widget);
|
||||||
for (ProjectConfigurationAspect *aspect : m_aspects) {
|
for (ProjectConfigurationAspect *aspect : m_aspects) {
|
||||||
if (aspect->isVisible()) {
|
if (aspect->isVisible())
|
||||||
builder.startNewRow();
|
aspect->addToLayout(builder.startNewRow());
|
||||||
aspect->addToLayout(builder);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -126,9 +126,7 @@ CustomExecutableDialog::CustomExecutableDialog(RunConfiguration *rc)
|
|||||||
|
|
||||||
{
|
{
|
||||||
LayoutBuilder builder(detailsWidget);
|
LayoutBuilder builder(detailsWidget);
|
||||||
builder.addItem(tr("Executable:"));
|
builder.addItems(tr("Executable:"), m_executableChooser).startNewRow();
|
||||||
builder.addItem(m_executableChooser);
|
|
||||||
builder.startNewRow();
|
|
||||||
m_arguments.addToLayout(builder);
|
m_arguments.addToLayout(builder);
|
||||||
m_workingDirectory.addToLayout(builder);
|
m_workingDirectory.addToLayout(builder);
|
||||||
m_terminal.addToLayout(builder);
|
m_terminal.addToLayout(builder);
|
||||||
|
@@ -73,9 +73,10 @@ LayoutBuilder::~LayoutBuilder()
|
|||||||
flushPendingItems();
|
flushPendingItems();
|
||||||
}
|
}
|
||||||
|
|
||||||
void LayoutBuilder::startNewRow()
|
LayoutBuilder &LayoutBuilder::startNewRow()
|
||||||
{
|
{
|
||||||
flushPendingItems();
|
flushPendingItems();
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LayoutBuilder::flushPendingItems()
|
void LayoutBuilder::flushPendingItems()
|
||||||
@@ -132,12 +133,12 @@ QLayout *LayoutBuilder::layout() const
|
|||||||
return m_layout;
|
return m_layout;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LayoutBuilder::addItem(LayoutItem item)
|
LayoutBuilder &LayoutBuilder::addItem(LayoutItem item)
|
||||||
{
|
{
|
||||||
if (item.widget && !item.widget->parent())
|
if (item.widget && !item.widget->parent())
|
||||||
item.widget->setParent(m_layout->parentWidget());
|
item.widget->setParent(m_layout->parentWidget());
|
||||||
|
|
||||||
m_pendingItems.append(item);
|
m_pendingItems.append(item);
|
||||||
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -61,8 +61,14 @@ public:
|
|||||||
QString text;
|
QString text;
|
||||||
};
|
};
|
||||||
|
|
||||||
void addItem(LayoutItem item);
|
template<typename ...Items>
|
||||||
void startNewRow();
|
LayoutBuilder &addItems(LayoutItem first, Items... rest) {
|
||||||
|
return addItem(first).addItems(rest...);
|
||||||
|
}
|
||||||
|
LayoutBuilder &addItems() { return *this; }
|
||||||
|
LayoutBuilder &addItem(LayoutItem item);
|
||||||
|
|
||||||
|
LayoutBuilder &startNewRow();
|
||||||
|
|
||||||
QLayout *layout() const;
|
QLayout *layout() const;
|
||||||
|
|
||||||
|
@@ -377,8 +377,7 @@ void BaseBoolAspect::addToLayout(LayoutBuilder &builder)
|
|||||||
d->m_checkBox = new QCheckBox(d->m_label);
|
d->m_checkBox = new QCheckBox(d->m_label);
|
||||||
d->m_checkBox->setChecked(d->m_value);
|
d->m_checkBox->setChecked(d->m_value);
|
||||||
d->m_checkBox->setToolTip(d->m_tooltip);
|
d->m_checkBox->setToolTip(d->m_tooltip);
|
||||||
builder.addItem(QString());
|
builder.addItems(QString(), d->m_checkBox.data());
|
||||||
builder.addItem(d->m_checkBox.data());
|
|
||||||
connect(d->m_checkBox.data(), &QAbstractButton::clicked, this, [this] {
|
connect(d->m_checkBox.data(), &QAbstractButton::clicked, this, [this] {
|
||||||
d->m_value = d->m_checkBox->isChecked();
|
d->m_value = d->m_checkBox->isChecked();
|
||||||
emit changed();
|
emit changed();
|
||||||
@@ -450,8 +449,7 @@ void BaseSelectionAspect::addToLayout(LayoutBuilder &builder)
|
|||||||
auto button = new QRadioButton(option.displayName);
|
auto button = new QRadioButton(option.displayName);
|
||||||
button->setChecked(i == d->m_value);
|
button->setChecked(i == d->m_value);
|
||||||
button->setToolTip(option.tooltip);
|
button->setToolTip(option.tooltip);
|
||||||
builder.addItem(QString());
|
builder.addItems(QString(), button);
|
||||||
builder.addItem(button);
|
|
||||||
d->m_buttons.append(button);
|
d->m_buttons.append(button);
|
||||||
d->m_buttonGroup->addButton(button);
|
d->m_buttonGroup->addButton(button);
|
||||||
connect(button, &QAbstractButton::clicked, this, [this, i] {
|
connect(button, &QAbstractButton::clicked, this, [this, i] {
|
||||||
@@ -521,8 +519,7 @@ void BaseIntegerAspect::addToLayout(LayoutBuilder &builder)
|
|||||||
if (d->m_maximumValue.isValid() && d->m_maximumValue.isValid())
|
if (d->m_maximumValue.isValid() && d->m_maximumValue.isValid())
|
||||||
d->m_spinBox->setRange(int(d->m_minimumValue.toLongLong() / d->m_displayScaleFactor),
|
d->m_spinBox->setRange(int(d->m_minimumValue.toLongLong() / d->m_displayScaleFactor),
|
||||||
int(d->m_maximumValue.toLongLong() / d->m_displayScaleFactor));
|
int(d->m_maximumValue.toLongLong() / d->m_displayScaleFactor));
|
||||||
builder.addItem(d->m_label);
|
builder.addItems(d->m_label, d->m_spinBox.data());
|
||||||
builder.addItem(d->m_spinBox.data());
|
|
||||||
connect(d->m_spinBox.data(), QOverload<int>::of(&QSpinBox::valueChanged),
|
connect(d->m_spinBox.data(), QOverload<int>::of(&QSpinBox::valueChanged),
|
||||||
this, [this](int value) {
|
this, [this](int value) {
|
||||||
d->m_value = value * d->m_displayScaleFactor;
|
d->m_value = value * d->m_displayScaleFactor;
|
||||||
|
@@ -251,10 +251,8 @@ QWidget *RunConfiguration::createConfigurationWidget()
|
|||||||
{
|
{
|
||||||
LayoutBuilder builder(widget);
|
LayoutBuilder builder(widget);
|
||||||
for (ProjectConfigurationAspect *aspect : m_aspects) {
|
for (ProjectConfigurationAspect *aspect : m_aspects) {
|
||||||
if (aspect->isVisible()) {
|
if (aspect->isVisible())
|
||||||
builder.startNewRow();
|
aspect->addToLayout(builder.startNewRow());
|
||||||
aspect->addToLayout(builder);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -68,8 +68,7 @@ void TerminalAspect::addToLayout(LayoutBuilder &builder)
|
|||||||
QTC_CHECK(!m_checkBox);
|
QTC_CHECK(!m_checkBox);
|
||||||
m_checkBox = new QCheckBox(tr("Run in terminal"));
|
m_checkBox = new QCheckBox(tr("Run in terminal"));
|
||||||
m_checkBox->setChecked(m_useTerminal);
|
m_checkBox->setChecked(m_useTerminal);
|
||||||
builder.addItem(QString());
|
builder.addItems(QString(), m_checkBox.data());
|
||||||
builder.addItem(m_checkBox.data());
|
|
||||||
connect(m_checkBox.data(), &QAbstractButton::clicked, this, [this] {
|
connect(m_checkBox.data(), &QAbstractButton::clicked, this, [this] {
|
||||||
m_userSet = true;
|
m_userSet = true;
|
||||||
m_useTerminal = m_checkBox->isChecked();
|
m_useTerminal = m_checkBox->isChecked();
|
||||||
@@ -169,9 +168,7 @@ void WorkingDirectoryAspect::addToLayout(LayoutBuilder &builder)
|
|||||||
m_chooser->setEnvironment(m_envAspect->environment());
|
m_chooser->setEnvironment(m_envAspect->environment());
|
||||||
}
|
}
|
||||||
|
|
||||||
builder.addItem(tr("Working directory:"));
|
builder.addItems(tr("Working directory:"), m_chooser.data(), m_resetButton.data());
|
||||||
builder.addItem(m_chooser.data());
|
|
||||||
builder.addItem(m_resetButton.data());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WorkingDirectoryAspect::acquaintSiblings(const ProjectConfigurationAspects &siblings)
|
void WorkingDirectoryAspect::acquaintSiblings(const ProjectConfigurationAspects &siblings)
|
||||||
@@ -455,10 +452,8 @@ FilePath ExecutableAspect::executable() const
|
|||||||
void ExecutableAspect::addToLayout(LayoutBuilder &builder)
|
void ExecutableAspect::addToLayout(LayoutBuilder &builder)
|
||||||
{
|
{
|
||||||
m_executable.addToLayout(builder);
|
m_executable.addToLayout(builder);
|
||||||
if (m_alternativeExecutable) {
|
if (m_alternativeExecutable)
|
||||||
builder.startNewRow();
|
m_alternativeExecutable->addToLayout(builder.startNewRow());
|
||||||
m_alternativeExecutable->addToLayout(builder);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ExecutableAspect::setLabelText(const QString &labelText)
|
void ExecutableAspect::setLabelText(const QString &labelText)
|
||||||
|
@@ -204,9 +204,7 @@ void InterpreterAspect::addToLayout(LayoutBuilder &builder)
|
|||||||
Core::ICore::showOptionsDialog(Constants::C_PYTHONOPTIONS_PAGE_ID);
|
Core::ICore::showOptionsDialog(Constants::C_PYTHONOPTIONS_PAGE_ID);
|
||||||
});
|
});
|
||||||
|
|
||||||
builder.addItem(tr("Interpreter"));
|
builder.addItems(tr("Interpreter"), m_comboBox.data(), manageButton);
|
||||||
builder.addItem(m_comboBox.data());
|
|
||||||
builder.addItem(manageButton);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void InterpreterAspect::updateCurrentInterpreter()
|
void InterpreterAspect::updateCurrentInterpreter()
|
||||||
|
@@ -130,8 +130,7 @@ void MainQmlFileAspect::addToLayout(LayoutBuilder &builder)
|
|||||||
connect(m_fileListCombo, QOverload<int>::of(&QComboBox::activated),
|
connect(m_fileListCombo, QOverload<int>::of(&QComboBox::activated),
|
||||||
this, &MainQmlFileAspect::setMainScript);
|
this, &MainQmlFileAspect::setMainScript);
|
||||||
|
|
||||||
builder.addItem(QmlProjectRunConfiguration::tr("Main QML file:"));
|
builder.addItems(QmlProjectRunConfiguration::tr("Main QML file:"), m_fileListCombo.data());
|
||||||
builder.addItem(m_fileListCombo.data());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainQmlFileAspect::toMap(QVariantMap &map) const
|
void MainQmlFileAspect::toMap(QVariantMap &map) const
|
||||||
|
@@ -88,8 +88,7 @@ void WebBrowserSelectionAspect::addToLayout(ProjectExplorer::LayoutBuilder &buil
|
|||||||
m_currentBrowser = selectedBrowser;
|
m_currentBrowser = selectedBrowser;
|
||||||
emit changed();
|
emit changed();
|
||||||
});
|
});
|
||||||
builder.addItem(tr("Web browser:"));
|
builder.addItems(tr("Web browser:"), m_webBrowserComboBox);
|
||||||
builder.addItem(m_webBrowserComboBox);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebBrowserSelectionAspect::fromMap(const QVariantMap &map)
|
void WebBrowserSelectionAspect::fromMap(const QVariantMap &map)
|
||||||
|
Reference in New Issue
Block a user