From f0834e87259a4d9787dba3c8276cc986cf98222b Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 4 Oct 2022 18:10:24 +0200 Subject: [PATCH] Meson: Inline mesonbuildsettingswidget.ui Change-Id: Ib927f8166f9c43f10c4dd0feae912e3cb4cb153f Reviewed-by: hjk Reviewed-by: Alessandro Portale --- .../mesonprojectmanager/CMakeLists.txt | 1 - .../mesonprojectmanager.qbs | 1 - .../buildoptions/mesonbuildsettingswidget.cpp | 151 ++++++++++------- .../buildoptions/mesonbuildsettingswidget.h | 10 +- .../buildoptions/mesonbuildsettingswidget.ui | 158 ------------------ 5 files changed, 97 insertions(+), 224 deletions(-) delete mode 100644 src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.ui diff --git a/src/plugins/mesonprojectmanager/CMakeLists.txt b/src/plugins/mesonprojectmanager/CMakeLists.txt index cea74e07510..d11468c7579 100644 --- a/src/plugins/mesonprojectmanager/CMakeLists.txt +++ b/src/plugins/mesonprojectmanager/CMakeLists.txt @@ -60,7 +60,6 @@ add_qtc_plugin(MesonProjectManager project/mesonbuildconfiguration.cpp project/ninjabuildstep.h project/ninjabuildstep.cpp - project/buildoptions/mesonbuildsettingswidget.ui project/buildoptions/mesonbuildsettingswidget.h project/buildoptions/mesonbuildsettingswidget.cpp project/buildoptions/optionsmodel/buildoptionsmodel.h diff --git a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs index 2499ac3f9c0..f4495b103ae 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs +++ b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs @@ -49,7 +49,6 @@ Project { "mesonprojectplugin.h", "project/buildoptions/mesonbuildsettingswidget.cpp", "project/buildoptions/mesonbuildsettingswidget.h", - "project/buildoptions/mesonbuildsettingswidget.ui", "project/buildoptions/optionsmodel/arrayoptionlineedit.cpp", "project/buildoptions/optionsmodel/arrayoptionlineedit.h", "project/buildoptions/optionsmodel/buildoptionsmodel.cpp", diff --git a/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.cpp b/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.cpp index 5b593b0a5cd..c3852917310 100644 --- a/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.cpp +++ b/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.cpp @@ -5,7 +5,6 @@ #include "../mesonbuildconfiguration.h" #include "../mesonbuildsystem.h" -#include "ui_mesonbuildsettingswidget.h" #include @@ -14,119 +13,157 @@ #include #include +#include #include +#include + +#include +#include using namespace Utils; -namespace MesonProjectManager { -namespace Internal { +namespace MesonProjectManager::Internal { MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buildCfg) : ProjectExplorer::NamedWidget{tr("Meson")} - , ui{new Ui::MesonBuildSettingsWidget} - , m_progressIndicator(Utils::ProgressIndicatorSize::Large) + , m_progressIndicator(ProgressIndicatorSize::Large) { - ui->setupUi(this); - ui->container->setState(Utils::DetailsWidget::NoSummary); - ui->container->setWidget(ui->details); + auto configureButton = new QPushButton(tr("Apply Configuration Changes")); + configureButton->setEnabled(false); + configureButton->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); - Layouting::Form buildDirWBuilder; + auto wipeButton = new QPushButton(tr("Wipe Project")); + wipeButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); + wipeButton->setIcon(Utils::Icons::WARNING.icon()); + wipeButton->setToolTip(tr("Wipes build directory and reconfigures using previous command " + "line options.\nUseful if build directory is corrupted or when " + "rebuilding with a newer version of Meson.")); + + auto container = new DetailsWidget; + + auto details = new QWidget; + + container->setState(DetailsWidget::NoSummary); + container->setWidget(details); + + auto parametersLineEdit = new QLineEdit; + + auto buildDirWidget = new QWidget; + + auto optionsFilterLineEdit = new FancyLineEdit; + + auto optionsTreeView = new TreeView; + optionsTreeView->setMinimumHeight(300); + optionsTreeView->setFrameShape(QFrame::NoFrame); + optionsTreeView->setSelectionBehavior(QAbstractItemView::SelectItems); + optionsTreeView->setUniformRowHeights(true); + optionsTreeView->setSortingEnabled(true); + + using namespace Layouting; + + Column { + Form { tr("Parameters"), parametersLineEdit, br, }, + buildDirWidget, + optionsFilterLineEdit, + optionsTreeView, + }.attachTo(details, WithoutMargins); + + Column { + container, + Row { configureButton, wipeButton, } + }.attachTo(this, WithoutMargins); + + Form buildDirWBuilder; buildCfg->buildDirectoryAspect()->addToLayout(buildDirWBuilder); - buildDirWBuilder.attachTo(ui->buildDirWidget); + buildDirWBuilder.attachTo(buildDirWidget, WithoutMargins); - ui->parametersLineEdit->setText(buildCfg->parameters()); - ui->optionsFilterLineEdit->setFiltering(true); + parametersLineEdit->setText(buildCfg->parameters()); + optionsFilterLineEdit->setFiltering(true); - ui->optionsTreeView->sortByColumn(0, Qt::AscendingOrder); + optionsTreeView->sortByColumn(0, Qt::AscendingOrder); QFrame *findWrapper - = Core::ItemViewFind::createSearchableWrapper(ui->optionsTreeView, + = Core::ItemViewFind::createSearchableWrapper(optionsTreeView, Core::ItemViewFind::LightColored); findWrapper->setFrameStyle(QFrame::StyledPanel); m_progressIndicator.attachToWidget(findWrapper); m_progressIndicator.raise(); m_progressIndicator.hide(); - ui->details->layout()->addWidget(findWrapper); + details->layout()->addWidget(findWrapper); m_showProgressTimer.setSingleShot(true); m_showProgressTimer.setInterval(50); // don't show progress for < 50ms tasks connect(&m_showProgressTimer, &QTimer::timeout, [this]() { m_progressIndicator.show(); }); - connect(&m_optionsModel, &BuidOptionsModel::configurationChanged, this, [this]() { - ui->configureButton->setEnabled(true); + connect(&m_optionsModel, &BuidOptionsModel::configurationChanged, this, [configureButton] { + configureButton->setEnabled(true); }); m_optionsFilter.setSourceModel(&m_optionsModel); m_optionsFilter.setSortRole(Qt::DisplayRole); m_optionsFilter.setFilterKeyColumn(-1); - ui->optionsTreeView->setModel(&m_optionsFilter); + optionsTreeView->setModel(&m_optionsFilter); + optionsTreeView->setItemDelegate(new BuildOptionDelegate{optionsTreeView}); - ui->optionsTreeView->setItemDelegate(new BuildOptionDelegate{ui->optionsTreeView}); MesonBuildSystem *bs = static_cast(buildCfg->buildSystem()); - connect(buildCfg->target(), - &ProjectExplorer::Target::parsingFinished, - this, - [this, bs](bool success) { + connect(buildCfg->target(), &ProjectExplorer::Target::parsingFinished, + this, [this, bs, optionsTreeView](bool success) { if (success) { m_optionsModel.setConfiguration(bs->buildOptions()); } else { m_optionsModel.clear(); } - ui->optionsTreeView->expandAll(); - ui->optionsTreeView->resizeColumnToContents(0); - ui->optionsTreeView->setEnabled(true); + optionsTreeView->expandAll(); + optionsTreeView->resizeColumnToContents(0); + optionsTreeView->setEnabled(true); m_showProgressTimer.stop(); m_progressIndicator.hide(); }); - connect(bs, &MesonBuildSystem::parsingStarted, this, [this]() { + connect(bs, &MesonBuildSystem::parsingStarted, this, [this, optionsTreeView] { if (!m_showProgressTimer.isActive()) { - ui->optionsTreeView->setEnabled(false); + optionsTreeView->setEnabled(false); m_showProgressTimer.start(); } }); - connect(&m_optionsModel, &BuidOptionsModel::dataChanged, this, [bs, this]() { + connect(&m_optionsModel, &BuidOptionsModel::dataChanged, this, [bs, this] { bs->setMesonConfigArgs(this->m_optionsModel.changesAsMesonArgs()); }); - connect(&m_optionsFilter, &QAbstractItemModel::modelReset, this, [this]() { - ui->optionsTreeView->expandAll(); - ui->optionsTreeView->resizeColumnToContents(0); + connect(&m_optionsFilter, &QAbstractItemModel::modelReset, this, [optionsTreeView] { + optionsTreeView->expandAll(); + optionsTreeView->resizeColumnToContents(0); }); - connect(ui->optionsFilterLineEdit, - &QLineEdit::textChanged, - &m_optionsFilter, - [this](const QString &txt) { - m_optionsFilter.setFilterRegularExpression( - QRegularExpression(QRegularExpression::escape(txt), - QRegularExpression::CaseInsensitiveOption)); - }); - connect(ui->optionsTreeView, + + connect(optionsFilterLineEdit, &QLineEdit::textChanged, &m_optionsFilter, [this](const QString &txt) { + m_optionsFilter.setFilterRegularExpression( + QRegularExpression(QRegularExpression::escape(txt), + QRegularExpression::CaseInsensitiveOption)); + }); + + connect(optionsTreeView, &Utils::TreeView::activated, - ui->optionsTreeView, - [tree = ui->optionsTreeView](const QModelIndex &idx) { tree->edit(idx); }); - connect(ui->configureButton, &QPushButton::clicked, [bs, this]() { - ui->optionsTreeView->setEnabled(false); - ui->configureButton->setEnabled(false); + optionsTreeView, + [tree = optionsTreeView](const QModelIndex &idx) { tree->edit(idx); }); + + connect(configureButton, &QPushButton::clicked, [this, bs, configureButton, optionsTreeView] { + optionsTreeView->setEnabled(false); + configureButton->setEnabled(false); m_showProgressTimer.start(); bs->configure(); }); - connect(ui->wipeButton, &QPushButton::clicked, [bs, this]() { - ui->optionsTreeView->setEnabled(false); - ui->configureButton->setEnabled(false); + connect(wipeButton, &QPushButton::clicked, [this, bs, configureButton, optionsTreeView] { + optionsTreeView->setEnabled(false); + configureButton->setEnabled(false); m_showProgressTimer.start(); bs->wipe(); }); - connect(ui->parametersLineEdit, &QLineEdit::editingFinished, this, [this, buildCfg] { - buildCfg->setParameters(ui->parametersLineEdit->text()); + connect(parametersLineEdit, &QLineEdit::editingFinished, this, [ buildCfg, parametersLineEdit] { + buildCfg->setParameters(parametersLineEdit->text()); }); bs->triggerParsing(); } -MesonBuildSettingsWidget::~MesonBuildSettingsWidget() -{ - delete ui; -} +MesonBuildSettingsWidget::~MesonBuildSettingsWidget() = default; -} // namespace Internal -} // namespace MesonProjectManager +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.h b/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.h index 91d2955d0df..52752285350 100644 --- a/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.h +++ b/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.h @@ -12,12 +12,10 @@ #include -namespace MesonProjectManager { -namespace Internal { - -namespace Ui { class MesonBuildSettingsWidget; } +namespace MesonProjectManager::Internal { class MesonBuildConfiguration; + class MesonBuildSettingsWidget : public ProjectExplorer::NamedWidget { Q_OBJECT @@ -27,12 +25,10 @@ public: ~MesonBuildSettingsWidget(); private: - Ui::MesonBuildSettingsWidget *ui; BuidOptionsModel m_optionsModel; Utils::CategorySortFilterModel m_optionsFilter; Utils::ProgressIndicator m_progressIndicator; QTimer m_showProgressTimer; }; -} // namespace Internal -} // namespace MesonProjectManager +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.ui b/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.ui deleted file mode 100644 index 214101daaae..00000000000 --- a/src/plugins/mesonprojectmanager/project/buildoptions/mesonbuildsettingswidget.ui +++ /dev/null @@ -1,158 +0,0 @@ - - - MesonProjectManager::Internal::MesonBuildSettingsWidget - - - - 0 - 0 - 400 - 300 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - false - - - - 0 - 0 - - - - Apply Configuration Changes - - - - - - - - 0 - 0 - - - - Wipes build directory and reconfigures using previous command line options. -Useful if build directory is corrupted or when rebuilding with a newer version of Meson. - - - Wipe Project - - - - - - - - - - - - 10 - 20 - 371 - 211 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - Parameters - - - - - - - - - - - - - - - Filter - - - - - - - - 0 - 300 - - - - QFrame::NoFrame - - - QAbstractItemView::SelectItems - - - true - - - true - - - - - - - - - - - - Utils::DetailsWidget - QWidget -
utils/detailswidget.h
- 1 -
- - Utils::FancyLineEdit - QLineEdit -
utils/fancylineedit.h
-
- - Utils::TreeView - QTreeView -
utils/itemviews.h
-
-
- - -