Meson: Inline toolssettingswidget.ui

Change-Id: Iaacc703195fe66200fe64a95f704ba90b7e66504
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2022-10-06 09:03:32 +02:00
parent 928a7d2087
commit fc72461b3d
6 changed files with 70 additions and 133 deletions

View File

@@ -10,7 +10,6 @@ add_qtc_plugin(MesonProjectManager
mesonactionsmanager/mesonactionsmanager.cpp mesonactionsmanager/mesonactionsmanager.cpp
settings/tools/toolsmodel.cpp settings/tools/toolsmodel.cpp
settings/tools/toolssettingswidget.h settings/tools/toolssettingswidget.h
settings/tools/toolssettingswidget.ui
settings/tools/toolssettingswidget.cpp settings/tools/toolssettingswidget.cpp
settings/tools/toolssettingspage.cpp settings/tools/toolssettingspage.cpp
settings/tools/toolssettingspage.h settings/tools/toolssettingspage.h

View File

@@ -96,7 +96,6 @@ Project {
"settings/tools/toolssettingspage.h", "settings/tools/toolssettingspage.h",
"settings/tools/toolssettingswidget.cpp", "settings/tools/toolssettingswidget.cpp",
"settings/tools/toolssettingswidget.h", "settings/tools/toolssettingswidget.h",
"settings/tools/toolssettingswidget.ui",
"settings/tools/tooltreeitem.cpp", "settings/tools/tooltreeitem.cpp",
"settings/tools/tooltreeitem.h", "settings/tools/tooltreeitem.h",
"versionhelper.h", "versionhelper.h",

View File

@@ -4,7 +4,6 @@
#pragma once #pragma once
#include "exewrappers/mesontools.h" #include "exewrappers/mesontools.h"
#include "toolssettingspage.h"
#include <utils/treemodel.h> #include <utils/treemodel.h>

View File

@@ -5,47 +5,80 @@
#include "toolsmodel.h" #include "toolsmodel.h"
#include "tooltreeitem.h" #include "tooltreeitem.h"
#include "ui_toolssettingswidget.h"
namespace MesonProjectManager { #include <utils/detailswidget.h>
namespace Internal { #include <utils/layoutbuilder.h>
#include <QHeaderView>
#include <QPushButton>
#include <QTreeView>
using namespace Utils;
namespace MesonProjectManager::Internal {
ToolsSettingsWidget::ToolsSettingsWidget() ToolsSettingsWidget::ToolsSettingsWidget()
: Core::IOptionsPageWidget() : Core::IOptionsPageWidget()
, ui(new Ui::ToolsSettingsWidget)
{ {
ui->setupUi(this); m_mesonList = new QTreeView;
ui->mesonDetails->setState(Utils::DetailsWidget::NoSummary); m_mesonList->setModel(&m_model);
ui->mesonDetails->setVisible(false); m_mesonList->expandAll();
m_mesonList->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
m_mesonList->header()->setSectionResizeMode(1, QHeaderView::Stretch);
m_itemSettings = new ToolItemSettings; m_itemSettings = new ToolItemSettings;
ui->mesonDetails->setWidget(m_itemSettings);
ui->mesonList->setModel(&m_model); m_mesonDetails = new DetailsWidget;
ui->mesonList->expandAll(); m_mesonDetails->setState(DetailsWidget::NoSummary);
ui->mesonList->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents); m_mesonDetails->setVisible(false);
ui->mesonList->header()->setSectionResizeMode(1, QHeaderView::Stretch); m_mesonDetails->setWidget(m_itemSettings);
connect(ui->mesonList->selectionModel(), auto addButton = new QPushButton(tr("Add"));
&QItemSelectionModel::currentChanged,
this, m_cloneButton = new QPushButton(tr("Clone"));
&ToolsSettingsWidget::currentMesonToolChanged); 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(m_itemSettings, &ToolItemSettings::applyChanges, &m_model, &ToolsModel::updateItem);
connect(ui->addButton, &QPushButton::clicked, &m_model, QOverload<>::of(&ToolsModel::addMesonTool)); connect(addButton, &QPushButton::clicked, &m_model, QOverload<>::of(&ToolsModel::addMesonTool));
connect(ui->cloneButton, &QPushButton::clicked, this, &ToolsSettingsWidget::cloneMesonTool); connect(m_cloneButton, &QPushButton::clicked, this, &ToolsSettingsWidget::cloneMesonTool);
connect(ui->removeButton, &QPushButton::clicked, this, &ToolsSettingsWidget::removeMesonTool); connect(m_removeButton, &QPushButton::clicked, this, &ToolsSettingsWidget::removeMesonTool);
} }
ToolsSettingsWidget::~ToolsSettingsWidget() ToolsSettingsWidget::~ToolsSettingsWidget() = default;
{
delete ui;
}
void ToolsSettingsWidget::cloneMesonTool() void ToolsSettingsWidget::cloneMesonTool()
{ {
if (m_currentItem) { if (m_currentItem) {
auto newItem = m_model.cloneMesonTool(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_currentItem = m_model.mesoneToolTreeItem(newCurrent);
m_itemSettings->load(m_currentItem); m_itemSettings->load(m_currentItem);
ui->mesonDetails->setVisible(m_currentItem); m_mesonDetails->setVisible(m_currentItem);
ui->cloneButton->setEnabled(m_currentItem); m_cloneButton->setEnabled(m_currentItem);
ui->removeButton->setEnabled(m_currentItem && !m_currentItem->isAutoDetected()); m_removeButton->setEnabled(m_currentItem && !m_currentItem->isAutoDetected());
} }
void ToolsSettingsWidget::apply() void ToolsSettingsWidget::apply()
@@ -70,5 +103,4 @@ void ToolsSettingsWidget::apply()
m_model.apply(); m_model.apply();
} }
} // namespace Internal } // MesonProjectManager::Internal
} // namespace MesonProjectManager

View File

@@ -3,19 +3,16 @@
#pragma once #pragma once
#include "exewrappers/mesonwrapper.h"
#include "toolitemsettings.h" #include "toolitemsettings.h"
#include "toolsmodel.h" #include "toolsmodel.h"
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
#include <QCoreApplication> #include <QCoreApplication>
#include <QTabWidget>
namespace MesonProjectManager { namespace Utils { class DetailsWidget; }
namespace Internal {
namespace Ui { class ToolsSettingsWidget; } namespace MesonProjectManager::Internal {
class ToolTreeItem; class ToolTreeItem;
class ToolsSettingsWidget final : public Core::IOptionsPageWidget class ToolsSettingsWidget final : public Core::IOptionsPageWidget
@@ -31,11 +28,15 @@ private:
void cloneMesonTool(); void cloneMesonTool();
void removeMesonTool(); void removeMesonTool();
void currentMesonToolChanged(const QModelIndex &newCurrent); void currentMesonToolChanged(const QModelIndex &newCurrent);
Ui::ToolsSettingsWidget *ui;
ToolsModel m_model; ToolsModel m_model;
ToolItemSettings *m_itemSettings; ToolItemSettings *m_itemSettings;
ToolTreeItem *m_currentItem = nullptr; ToolTreeItem *m_currentItem = nullptr;
QTreeView *m_mesonList;
Utils::DetailsWidget *m_mesonDetails;
QPushButton *m_cloneButton;
QPushButton *m_removeButton;
}; };
} // namespace Internal } // MesonProjectManager::Internal
} // namespace MesonProjectManager

View File

@@ -1,93 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MesonProjectManager::Internal::ToolsSettingsWidget</class>
<widget class="QWidget" name="MesonProjectManager::Internal::ToolSettingsWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>625</width>
<height>349</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QTreeView" name="mesonList"/>
</item>
<item>
<widget class="Utils::DetailsWidget" name="mesonDetails" native="true"/>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QPushButton" name="addButton">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="cloneButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Clone</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="removeButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="makeDefaultButton">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>Set as the default Meson executable to use when creating a new kit or when no value is set.</string>
</property>
<property name="text">
<string>Make Default</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>Utils::DetailsWidget</class>
<extends>QWidget</extends>
<header location="global">utils/detailswidget.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>