forked from qt-creator/qt-creator
CMake: Use LayoutBuilder in build configuration widget
Drop intermediate widget layers, also fix the QML debugging and profiling aspect misalignment. Change-Id: I5ee5041ab7db2c05efdd66598c39b589e3d4f56a Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -127,7 +127,6 @@ private:
|
|||||||
CategorySortFilterModel *m_configTextFilterModel;
|
CategorySortFilterModel *m_configTextFilterModel;
|
||||||
ProgressIndicator *m_progressIndicator;
|
ProgressIndicator *m_progressIndicator;
|
||||||
QPushButton *m_addButton;
|
QPushButton *m_addButton;
|
||||||
QMenu *m_addButtonMenu;
|
|
||||||
QPushButton *m_editButton;
|
QPushButton *m_editButton;
|
||||||
QPushButton *m_setButton;
|
QPushButton *m_setButton;
|
||||||
QPushButton *m_unsetButton;
|
QPushButton *m_unsetButton;
|
||||||
@@ -174,52 +173,22 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
auto details = new QWidget(container);
|
auto details = new QWidget(container);
|
||||||
container->setWidget(details);
|
container->setWidget(details);
|
||||||
|
|
||||||
auto mainLayout = new QGridLayout(details);
|
|
||||||
mainLayout->setContentsMargins(0, 0, 0, 0);
|
|
||||||
mainLayout->setColumnStretch(1, 10);
|
|
||||||
|
|
||||||
int row = 0;
|
|
||||||
auto buildDirAspect = bc->buildDirectoryAspect();
|
auto buildDirAspect = bc->buildDirectoryAspect();
|
||||||
connect(buildDirAspect, &BaseAspect::changed, this, [this]() {
|
connect(buildDirAspect, &BaseAspect::changed, this, [this]() {
|
||||||
m_configModel->flush(); // clear out config cache...;
|
m_configModel->flush(); // clear out config cache...;
|
||||||
});
|
});
|
||||||
auto initialCMakeAspect = bc->aspect<InitialCMakeArgumentsAspect>();
|
|
||||||
auto aspectWidget = new QWidget;
|
|
||||||
Layouting::Form aspectWidgetBuilder;
|
|
||||||
buildDirAspect->addToLayout(aspectWidgetBuilder);
|
|
||||||
aspectWidgetBuilder.finishRow();
|
|
||||||
initialCMakeAspect->addToLayout(aspectWidgetBuilder);
|
|
||||||
aspectWidgetBuilder.attachTo(aspectWidget, false);
|
|
||||||
mainLayout->addWidget(aspectWidget, row, 0, 1, -1);
|
|
||||||
++row;
|
|
||||||
|
|
||||||
auto qmlDebugAspect = bc->aspect<QtSupport::QmlDebuggingAspect>();
|
auto qmlDebugAspect = bc->aspect<QtSupport::QmlDebuggingAspect>();
|
||||||
connect(qmlDebugAspect, &QtSupport::QmlDebuggingAspect::changed, this, [this]() {
|
connect(qmlDebugAspect, &QtSupport::QmlDebuggingAspect::changed, this, [this]() {
|
||||||
updateButtonState();
|
updateButtonState();
|
||||||
});
|
});
|
||||||
Layouting::Form builder;
|
|
||||||
qmlDebugAspect->addToLayout(builder);
|
|
||||||
auto widget = builder.emerge();
|
|
||||||
mainLayout->addWidget(widget, row, 0, 1, -1);
|
|
||||||
|
|
||||||
++row;
|
|
||||||
mainLayout->addItem(new QSpacerItem(20, 10), row, 0);
|
|
||||||
|
|
||||||
++row;
|
|
||||||
m_warningMessageLabel = new InfoLabel({}, InfoLabel::Warning);
|
m_warningMessageLabel = new InfoLabel({}, InfoLabel::Warning);
|
||||||
m_warningMessageLabel->setVisible(false);
|
m_warningMessageLabel->setVisible(false);
|
||||||
mainLayout->addWidget(m_warningMessageLabel, row, 0, 1, -1, Qt::AlignHCenter);
|
|
||||||
|
|
||||||
++row;
|
|
||||||
mainLayout->addItem(new QSpacerItem(20, 10), row, 0);
|
|
||||||
|
|
||||||
++row;
|
|
||||||
m_filterEdit = new FancyLineEdit;
|
m_filterEdit = new FancyLineEdit;
|
||||||
m_filterEdit->setPlaceholderText(tr("Filter"));
|
m_filterEdit->setPlaceholderText(tr("Filter"));
|
||||||
m_filterEdit->setFiltering(true);
|
m_filterEdit->setFiltering(true);
|
||||||
mainLayout->addWidget(m_filterEdit, row, 0, 1, 2);
|
|
||||||
|
|
||||||
++row;
|
|
||||||
auto tree = new TreeView;
|
auto tree = new TreeView;
|
||||||
connect(tree, &TreeView::activated,
|
connect(tree, &TreeView::activated,
|
||||||
tree, [tree](const QModelIndex &idx) { tree->edit(idx); });
|
tree, [tree](const QModelIndex &idx) { tree->edit(idx); });
|
||||||
@@ -264,60 +233,79 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
m_showProgressTimer.setInterval(50); // don't show progress for < 50ms tasks
|
m_showProgressTimer.setInterval(50); // don't show progress for < 50ms tasks
|
||||||
connect(&m_showProgressTimer, &QTimer::timeout, [this]() { m_progressIndicator->show(); });
|
connect(&m_showProgressTimer, &QTimer::timeout, [this]() { m_progressIndicator->show(); });
|
||||||
|
|
||||||
mainLayout->addWidget(findWrapper, row, 0, 1, 2);
|
|
||||||
|
|
||||||
auto buttonLayout = new QVBoxLayout;
|
|
||||||
m_addButton = new QPushButton(tr("&Add"));
|
m_addButton = new QPushButton(tr("&Add"));
|
||||||
m_addButton->setToolTip(tr("Add a new configuration value."));
|
m_addButton->setToolTip(tr("Add a new configuration value."));
|
||||||
buttonLayout->addWidget(m_addButton);
|
auto addButtonMenu = new QMenu(this);
|
||||||
{
|
addButtonMenu->addAction(tr("&Boolean"))->setData(
|
||||||
m_addButtonMenu = new QMenu(this);
|
|
||||||
m_addButtonMenu->addAction(tr("&Boolean"))->setData(
|
|
||||||
QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::BOOLEAN)));
|
QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::BOOLEAN)));
|
||||||
m_addButtonMenu->addAction(tr("&String"))->setData(
|
addButtonMenu->addAction(tr("&String"))->setData(
|
||||||
QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::STRING)));
|
QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::STRING)));
|
||||||
m_addButtonMenu->addAction(tr("&Directory"))->setData(
|
addButtonMenu->addAction(tr("&Directory"))->setData(
|
||||||
QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::DIRECTORY)));
|
QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::DIRECTORY)));
|
||||||
m_addButtonMenu->addAction(tr("&File"))->setData(
|
addButtonMenu->addAction(tr("&File"))->setData(
|
||||||
QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::FILE)));
|
QVariant::fromValue(static_cast<int>(ConfigModel::DataItem::FILE)));
|
||||||
m_addButton->setMenu(m_addButtonMenu);
|
m_addButton->setMenu(addButtonMenu);
|
||||||
}
|
|
||||||
m_editButton = new QPushButton(tr("&Edit"));
|
m_editButton = new QPushButton(tr("&Edit"));
|
||||||
m_editButton->setToolTip(tr("Edit the current CMake configuration value."));
|
m_editButton->setToolTip(tr("Edit the current CMake configuration value."));
|
||||||
buttonLayout->addWidget(m_editButton);
|
|
||||||
m_setButton = new QPushButton(tr("&Set"));
|
m_setButton = new QPushButton(tr("&Set"));
|
||||||
m_setButton->setToolTip(tr("Set a value in the CMake configuration."));
|
m_setButton->setToolTip(tr("Set a value in the CMake configuration."));
|
||||||
buttonLayout->addWidget(m_setButton);
|
|
||||||
m_unsetButton = new QPushButton(tr("&Unset"));
|
m_unsetButton = new QPushButton(tr("&Unset"));
|
||||||
m_unsetButton->setToolTip(tr("Unset a value in the CMake configuration."));
|
m_unsetButton->setToolTip(tr("Unset a value in the CMake configuration."));
|
||||||
buttonLayout->addWidget(m_unsetButton);
|
|
||||||
m_resetButton = new QPushButton(tr("&Reset"));
|
m_resetButton = new QPushButton(tr("&Reset"));
|
||||||
m_resetButton->setToolTip(tr("Reset all unapplied changes."));
|
m_resetButton->setToolTip(tr("Reset all unapplied changes."));
|
||||||
m_resetButton->setEnabled(false);
|
m_resetButton->setEnabled(false);
|
||||||
|
|
||||||
m_clearSelectionButton = new QPushButton(tr("Clear Selection"));
|
m_clearSelectionButton = new QPushButton(tr("Clear Selection"));
|
||||||
m_clearSelectionButton->setToolTip(tr("Clear selection."));
|
m_clearSelectionButton->setToolTip(tr("Clear selection."));
|
||||||
m_clearSelectionButton->setEnabled(false);
|
m_clearSelectionButton->setEnabled(false);
|
||||||
buttonLayout->addWidget(m_clearSelectionButton);
|
|
||||||
buttonLayout->addWidget(m_resetButton);
|
|
||||||
m_batchEditButton = new QPushButton(tr("Batch Edit..."));
|
m_batchEditButton = new QPushButton(tr("Batch Edit..."));
|
||||||
m_batchEditButton->setToolTip(tr("Set or reset multiple values in the CMake Configuration."));
|
m_batchEditButton->setToolTip(tr("Set or reset multiple values in the CMake Configuration."));
|
||||||
buttonLayout->addWidget(m_batchEditButton);
|
|
||||||
buttonLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Fixed, QSizePolicy::Fixed));
|
|
||||||
m_showAdvancedCheckBox = new QCheckBox(tr("Advanced"));
|
|
||||||
buttonLayout->addWidget(m_showAdvancedCheckBox);
|
|
||||||
buttonLayout->addItem(new QSpacerItem(10, 10, QSizePolicy::Minimum, QSizePolicy::Expanding));
|
|
||||||
|
|
||||||
mainLayout->addLayout(buttonLayout, row, 2);
|
m_showAdvancedCheckBox = new QCheckBox(tr("Advanced"));
|
||||||
|
|
||||||
connect(m_configView->selectionModel(), &QItemSelectionModel::selectionChanged,
|
connect(m_configView->selectionModel(), &QItemSelectionModel::selectionChanged,
|
||||||
this, [this](const QItemSelection &, const QItemSelection &) {
|
this, [this](const QItemSelection &, const QItemSelection &) {
|
||||||
updateSelection();
|
updateSelection();
|
||||||
});
|
});
|
||||||
|
|
||||||
++row;
|
|
||||||
m_reconfigureButton = new QPushButton(tr("Apply Configuration Changes"));
|
m_reconfigureButton = new QPushButton(tr("Apply Configuration Changes"));
|
||||||
m_reconfigureButton->setEnabled(false);
|
m_reconfigureButton->setEnabled(false);
|
||||||
mainLayout->addWidget(m_reconfigureButton, row, 0, 1, 3);
|
|
||||||
|
using namespace Layouting;
|
||||||
|
Grid cmakeConfiguration {
|
||||||
|
m_filterEdit, Break(),
|
||||||
|
findWrapper,
|
||||||
|
Column {
|
||||||
|
m_addButton,
|
||||||
|
m_editButton,
|
||||||
|
m_setButton,
|
||||||
|
m_unsetButton,
|
||||||
|
m_clearSelectionButton,
|
||||||
|
m_resetButton,
|
||||||
|
m_batchEditButton,
|
||||||
|
Space(10),
|
||||||
|
m_showAdvancedCheckBox,
|
||||||
|
Stretch()
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Column {
|
||||||
|
Form {
|
||||||
|
buildDirAspect, Break(),
|
||||||
|
bc->aspect<InitialCMakeArgumentsAspect>(), Break(),
|
||||||
|
qmlDebugAspect
|
||||||
|
},
|
||||||
|
Space(10),
|
||||||
|
m_warningMessageLabel,
|
||||||
|
Space(10),
|
||||||
|
cmakeConfiguration,
|
||||||
|
m_reconfigureButton,
|
||||||
|
}.attachTo(details, false);
|
||||||
|
|
||||||
updateAdvancedCheckBox();
|
updateAdvancedCheckBox();
|
||||||
setError(bc->error());
|
setError(bc->error());
|
||||||
@@ -398,7 +386,7 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
|
|||||||
connect(m_clearSelectionButton, &QPushButton::clicked, this, [this]() {
|
connect(m_clearSelectionButton, &QPushButton::clicked, this, [this]() {
|
||||||
m_configView->selectionModel()->clear();
|
m_configView->selectionModel()->clear();
|
||||||
});
|
});
|
||||||
connect(m_addButtonMenu, &QMenu::triggered, this, [this](QAction *action) {
|
connect(addButtonMenu, &QMenu::triggered, this, [this](QAction *action) {
|
||||||
ConfigModel::DataItem::Type type =
|
ConfigModel::DataItem::Type type =
|
||||||
static_cast<ConfigModel::DataItem::Type>(action->data().value<int>());
|
static_cast<ConfigModel::DataItem::Type>(action->data().value<int>());
|
||||||
QString value = tr("<UNSET>");
|
QString value = tr("<UNSET>");
|
||||||
|
Reference in New Issue
Block a user