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
settings/tools/toolsmodel.cpp
settings/tools/toolssettingswidget.h
settings/tools/toolssettingswidget.ui
settings/tools/toolssettingswidget.cpp
settings/tools/toolssettingspage.cpp
settings/tools/toolssettingspage.h

View File

@@ -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",

View File

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

View File

@@ -5,47 +5,80 @@
#include "toolsmodel.h"
#include "tooltreeitem.h"
#include "ui_toolssettingswidget.h"
namespace MesonProjectManager {
namespace Internal {
#include <utils/detailswidget.h>
#include <utils/layoutbuilder.h>
#include <QHeaderView>
#include <QPushButton>
#include <QTreeView>
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

View File

@@ -3,19 +3,16 @@
#pragma once
#include "exewrappers/mesonwrapper.h"
#include "toolitemsettings.h"
#include "toolsmodel.h"
#include <coreplugin/dialogs/ioptionspage.h>
#include <QCoreApplication>
#include <QTabWidget>
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

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>