diff --git a/src/plugins/mesonprojectmanager/CMakeLists.txt b/src/plugins/mesonprojectmanager/CMakeLists.txt index afc73cbb9df..3e2a55dfe54 100644 --- a/src/plugins/mesonprojectmanager/CMakeLists.txt +++ b/src/plugins/mesonprojectmanager/CMakeLists.txt @@ -10,7 +10,6 @@ add_qtc_plugin(MesonProjectManager mesonactionsmanager/mesonactionsmanager.cpp settings/tools/toolsmodel.cpp settings/tools/toolssettingswidget.h - settings/tools/toolssettingswidget.ui settings/tools/toolssettingswidget.cpp settings/tools/toolssettingspage.cpp settings/tools/toolssettingspage.h diff --git a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs index 1749a697bb9..bc7e9361947 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs +++ b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs @@ -96,7 +96,6 @@ Project { "settings/tools/toolssettingspage.h", "settings/tools/toolssettingswidget.cpp", "settings/tools/toolssettingswidget.h", - "settings/tools/toolssettingswidget.ui", "settings/tools/tooltreeitem.cpp", "settings/tools/tooltreeitem.h", "versionhelper.h", diff --git a/src/plugins/mesonprojectmanager/settings/tools/toolsmodel.h b/src/plugins/mesonprojectmanager/settings/tools/toolsmodel.h index 29d5d720efd..0e13a234f28 100644 --- a/src/plugins/mesonprojectmanager/settings/tools/toolsmodel.h +++ b/src/plugins/mesonprojectmanager/settings/tools/toolsmodel.h @@ -4,7 +4,6 @@ #pragma once #include "exewrappers/mesontools.h" -#include "toolssettingspage.h" #include diff --git a/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.cpp b/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.cpp index 65bee591d53..e7bda909709 100644 --- a/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.cpp +++ b/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.cpp @@ -5,47 +5,80 @@ #include "toolsmodel.h" #include "tooltreeitem.h" -#include "ui_toolssettingswidget.h" -namespace MesonProjectManager { -namespace Internal { +#include +#include + +#include +#include +#include + +using namespace Utils; + +namespace MesonProjectManager::Internal { ToolsSettingsWidget::ToolsSettingsWidget() : Core::IOptionsPageWidget() - , ui(new Ui::ToolsSettingsWidget) { - ui->setupUi(this); - ui->mesonDetails->setState(Utils::DetailsWidget::NoSummary); - ui->mesonDetails->setVisible(false); + m_mesonList = new QTreeView; + m_mesonList->setModel(&m_model); + m_mesonList->expandAll(); + m_mesonList->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); + m_mesonList->header()->setSectionResizeMode(1, QHeaderView::Stretch); + m_itemSettings = new ToolItemSettings; - ui->mesonDetails->setWidget(m_itemSettings); - ui->mesonList->setModel(&m_model); - ui->mesonList->expandAll(); - ui->mesonList->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); - ui->mesonList->header()->setSectionResizeMode(1, QHeaderView::Stretch); + m_mesonDetails = new DetailsWidget; + m_mesonDetails->setState(DetailsWidget::NoSummary); + m_mesonDetails->setVisible(false); + m_mesonDetails->setWidget(m_itemSettings); - connect(ui->mesonList->selectionModel(), - &QItemSelectionModel::currentChanged, - this, - &ToolsSettingsWidget::currentMesonToolChanged); + auto addButton = new QPushButton(tr("Add")); + + m_cloneButton = new QPushButton(tr("Clone")); + m_cloneButton->setEnabled(false); + + m_removeButton = new QPushButton(tr("Remove")); + m_removeButton->setEnabled(false); + + auto makeDefaultButton = new QPushButton(tr("Make Default")); + makeDefaultButton->setEnabled(false); + makeDefaultButton->setVisible(false); + makeDefaultButton->setToolTip(tr("Set as the default Meson executable to use " + "when creating a new kit or when no value is set.")); + + using namespace Layouting; + + Row { + Column { + m_mesonList, + m_mesonDetails + }, + Column { + addButton, + m_cloneButton, + m_removeButton, + makeDefaultButton, + st + } + }.attachTo(this); + + connect(m_mesonList->selectionModel(), &QItemSelectionModel::currentChanged, + this, &ToolsSettingsWidget::currentMesonToolChanged); connect(m_itemSettings, &ToolItemSettings::applyChanges, &m_model, &ToolsModel::updateItem); - connect(ui->addButton, &QPushButton::clicked, &m_model, QOverload<>::of(&ToolsModel::addMesonTool)); - connect(ui->cloneButton, &QPushButton::clicked, this, &ToolsSettingsWidget::cloneMesonTool); - connect(ui->removeButton, &QPushButton::clicked, this, &ToolsSettingsWidget::removeMesonTool); + connect(addButton, &QPushButton::clicked, &m_model, QOverload<>::of(&ToolsModel::addMesonTool)); + connect(m_cloneButton, &QPushButton::clicked, this, &ToolsSettingsWidget::cloneMesonTool); + connect(m_removeButton, &QPushButton::clicked, this, &ToolsSettingsWidget::removeMesonTool); } -ToolsSettingsWidget::~ToolsSettingsWidget() -{ - delete ui; -} +ToolsSettingsWidget::~ToolsSettingsWidget() = default; void ToolsSettingsWidget::cloneMesonTool() { if (m_currentItem) { auto newItem = m_model.cloneMesonTool(m_currentItem); - ui->mesonList->setCurrentIndex(newItem->index()); + m_mesonList->setCurrentIndex(newItem->index()); } } @@ -60,9 +93,9 @@ void ToolsSettingsWidget::currentMesonToolChanged(const QModelIndex &newCurrent) { m_currentItem = m_model.mesoneToolTreeItem(newCurrent); m_itemSettings->load(m_currentItem); - ui->mesonDetails->setVisible(m_currentItem); - ui->cloneButton->setEnabled(m_currentItem); - ui->removeButton->setEnabled(m_currentItem && !m_currentItem->isAutoDetected()); + m_mesonDetails->setVisible(m_currentItem); + m_cloneButton->setEnabled(m_currentItem); + m_removeButton->setEnabled(m_currentItem && !m_currentItem->isAutoDetected()); } void ToolsSettingsWidget::apply() @@ -70,5 +103,4 @@ void ToolsSettingsWidget::apply() m_model.apply(); } -} // namespace Internal -} // namespace MesonProjectManager +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.h b/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.h index d68c9a7eeb6..f6ef2f28d6f 100644 --- a/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.h +++ b/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.h @@ -3,19 +3,16 @@ #pragma once -#include "exewrappers/mesonwrapper.h" #include "toolitemsettings.h" #include "toolsmodel.h" #include #include -#include -namespace MesonProjectManager { -namespace Internal { +namespace Utils { class DetailsWidget; } -namespace Ui { class ToolsSettingsWidget; } +namespace MesonProjectManager::Internal { class ToolTreeItem; class ToolsSettingsWidget final : public Core::IOptionsPageWidget @@ -31,11 +28,15 @@ private: void cloneMesonTool(); void removeMesonTool(); void currentMesonToolChanged(const QModelIndex &newCurrent); - Ui::ToolsSettingsWidget *ui; + ToolsModel m_model; ToolItemSettings *m_itemSettings; ToolTreeItem *m_currentItem = nullptr; + + QTreeView *m_mesonList; + Utils::DetailsWidget *m_mesonDetails; + QPushButton *m_cloneButton; + QPushButton *m_removeButton; }; -} // namespace Internal -} // namespace MesonProjectManager +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.ui b/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.ui deleted file mode 100644 index 137bfced8f3..00000000000 --- a/src/plugins/mesonprojectmanager/settings/tools/toolssettingswidget.ui +++ /dev/null @@ -1,93 +0,0 @@ - - - MesonProjectManager::Internal::ToolsSettingsWidget - - - - 0 - 0 - 625 - 349 - - - - - - - - - - - - - - - - - - - Add - - - - - - - false - - - Clone - - - - - - - false - - - Remove - - - - - - - false - - - Set as the default Meson executable to use when creating a new kit or when no value is set. - - - Make Default - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - Utils::DetailsWidget - QWidget -
utils/detailswidget.h
- 1 -
-
- - -