forked from qt-creator/qt-creator
Meson: Merge toolsettingspagewidget file pair into toolssettingspage.cpp
An implementation detail. Change-Id: I35bee5e0d27f7c6e6b8c69d1703ad21d86cc1694 Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -75,8 +75,6 @@ add_qtc_plugin(MesonProjectManager
|
|||||||
toolssettingsaccessor.h
|
toolssettingsaccessor.h
|
||||||
toolssettingspage.cpp
|
toolssettingspage.cpp
|
||||||
toolssettingspage.h
|
toolssettingspage.h
|
||||||
toolssettingswidget.cpp
|
|
||||||
toolssettingswidget.h
|
|
||||||
tooltreeitem.cpp
|
tooltreeitem.cpp
|
||||||
tooltreeitem.h
|
tooltreeitem.h
|
||||||
toolwrapper.cpp
|
toolwrapper.cpp
|
||||||
|
|||||||
@@ -95,8 +95,6 @@ Project {
|
|||||||
"toolssettingsaccessor.h",
|
"toolssettingsaccessor.h",
|
||||||
"toolssettingspage.cpp",
|
"toolssettingspage.cpp",
|
||||||
"toolssettingspage.h",
|
"toolssettingspage.h",
|
||||||
"toolssettingswidget.cpp",
|
|
||||||
"toolssettingswidget.h",
|
|
||||||
"tooltreeitem.cpp",
|
"tooltreeitem.cpp",
|
||||||
"tooltreeitem.h",
|
"tooltreeitem.h",
|
||||||
"versionhelper.h",
|
"versionhelper.h",
|
||||||
|
|||||||
@@ -5,10 +5,120 @@
|
|||||||
|
|
||||||
#include "mesonpluginconstants.h"
|
#include "mesonpluginconstants.h"
|
||||||
#include "mesonprojectmanagertr.h"
|
#include "mesonprojectmanagertr.h"
|
||||||
#include "toolssettingswidget.h"
|
#include "toolitemsettings.h"
|
||||||
|
#include "toolsmodel.h"
|
||||||
|
#include "tooltreeitem.h"
|
||||||
|
|
||||||
|
#include <utils/detailswidget.h>
|
||||||
|
#include <utils/layoutbuilder.h>
|
||||||
|
|
||||||
|
#include <QHeaderView>
|
||||||
|
#include <QPushButton>
|
||||||
|
#include <QTreeView>
|
||||||
|
|
||||||
|
using namespace Utils;
|
||||||
|
|
||||||
|
namespace MesonProjectManager::Internal {
|
||||||
|
|
||||||
|
class ToolsSettingsWidget final : public Core::IOptionsPageWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ToolsSettingsWidget();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void apply() final { m_model.apply(); }
|
||||||
|
|
||||||
|
void cloneMesonTool();
|
||||||
|
void removeMesonTool();
|
||||||
|
void currentMesonToolChanged(const QModelIndex &newCurrent);
|
||||||
|
|
||||||
|
ToolsModel m_model;
|
||||||
|
ToolItemSettings *m_itemSettings;
|
||||||
|
ToolTreeItem *m_currentItem = nullptr;
|
||||||
|
|
||||||
|
QTreeView *m_mesonList;
|
||||||
|
DetailsWidget *m_mesonDetails;
|
||||||
|
QPushButton *m_cloneButton;
|
||||||
|
QPushButton *m_removeButton;
|
||||||
|
};
|
||||||
|
|
||||||
|
ToolsSettingsWidget::ToolsSettingsWidget()
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
|
||||||
|
m_mesonDetails = new DetailsWidget;
|
||||||
|
m_mesonDetails->setState(DetailsWidget::NoSummary);
|
||||||
|
m_mesonDetails->setVisible(false);
|
||||||
|
m_mesonDetails->setWidget(m_itemSettings);
|
||||||
|
|
||||||
|
auto addButton = new QPushButton(Tr::tr("Add"));
|
||||||
|
|
||||||
|
m_cloneButton = new QPushButton(Tr::tr("Clone"));
|
||||||
|
m_cloneButton->setEnabled(false);
|
||||||
|
|
||||||
|
m_removeButton = new QPushButton(Tr::tr("Remove"));
|
||||||
|
m_removeButton->setEnabled(false);
|
||||||
|
|
||||||
|
auto makeDefaultButton = new QPushButton(Tr::tr("Make Default"));
|
||||||
|
makeDefaultButton->setEnabled(false);
|
||||||
|
makeDefaultButton->setVisible(false);
|
||||||
|
makeDefaultButton->setToolTip(Tr::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(addButton, &QPushButton::clicked, &m_model, &ToolsModel::addMesonTool);
|
||||||
|
connect(m_cloneButton, &QPushButton::clicked, this, &ToolsSettingsWidget::cloneMesonTool);
|
||||||
|
connect(m_removeButton, &QPushButton::clicked, this, &ToolsSettingsWidget::removeMesonTool);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolsSettingsWidget::cloneMesonTool()
|
||||||
|
{
|
||||||
|
if (m_currentItem) {
|
||||||
|
auto newItem = m_model.cloneMesonTool(m_currentItem);
|
||||||
|
m_mesonList->setCurrentIndex(newItem->index());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolsSettingsWidget::removeMesonTool()
|
||||||
|
{
|
||||||
|
if (m_currentItem)
|
||||||
|
m_model.removeMesonTool(m_currentItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ToolsSettingsWidget::currentMesonToolChanged(const QModelIndex &newCurrent)
|
||||||
|
{
|
||||||
|
m_currentItem = m_model.mesoneToolTreeItem(newCurrent);
|
||||||
|
m_itemSettings->load(m_currentItem);
|
||||||
|
m_mesonDetails->setVisible(m_currentItem);
|
||||||
|
m_cloneButton->setEnabled(m_currentItem);
|
||||||
|
m_removeButton->setEnabled(m_currentItem && !m_currentItem->isAutoDetected());
|
||||||
|
}
|
||||||
|
|
||||||
namespace MesonProjectManager {
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
ToolsSettingsPage::ToolsSettingsPage()
|
ToolsSettingsPage::ToolsSettingsPage()
|
||||||
{
|
{
|
||||||
@@ -18,5 +128,4 @@ ToolsSettingsPage::ToolsSettingsPage()
|
|||||||
setWidgetCreator([]() { return new ToolsSettingsWidget; });
|
setWidgetCreator([]() { return new ToolsSettingsWidget; });
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
|
||||||
} // namespace MesonProjectManager
|
} // namespace MesonProjectManager
|
||||||
|
|||||||
@@ -5,8 +5,7 @@
|
|||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
|
||||||
namespace MesonProjectManager {
|
namespace MesonProjectManager::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
class ToolsSettingsPage final : public Core::IOptionsPage
|
class ToolsSettingsPage final : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
@@ -14,5 +13,4 @@ public:
|
|||||||
ToolsSettingsPage();
|
ToolsSettingsPage();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // MesonProjectManager::Internal
|
||||||
} // namespace MesonProjectManager
|
|
||||||
|
|||||||
@@ -1,107 +0,0 @@
|
|||||||
// Copyright (C) 2020 Alexis Jeandet.
|
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
||||||
|
|
||||||
#include "toolssettingswidget.h"
|
|
||||||
|
|
||||||
#include "mesonprojectmanagertr.h"
|
|
||||||
#include "toolsmodel.h"
|
|
||||||
#include "tooltreeitem.h"
|
|
||||||
|
|
||||||
#include <utils/detailswidget.h>
|
|
||||||
#include <utils/layoutbuilder.h>
|
|
||||||
|
|
||||||
#include <QHeaderView>
|
|
||||||
#include <QPushButton>
|
|
||||||
#include <QTreeView>
|
|
||||||
|
|
||||||
using namespace Utils;
|
|
||||||
|
|
||||||
namespace MesonProjectManager::Internal {
|
|
||||||
|
|
||||||
ToolsSettingsWidget::ToolsSettingsWidget()
|
|
||||||
: Core::IOptionsPageWidget()
|
|
||||||
{
|
|
||||||
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;
|
|
||||||
|
|
||||||
m_mesonDetails = new DetailsWidget;
|
|
||||||
m_mesonDetails->setState(DetailsWidget::NoSummary);
|
|
||||||
m_mesonDetails->setVisible(false);
|
|
||||||
m_mesonDetails->setWidget(m_itemSettings);
|
|
||||||
|
|
||||||
auto addButton = new QPushButton(Tr::tr("Add"));
|
|
||||||
|
|
||||||
m_cloneButton = new QPushButton(Tr::tr("Clone"));
|
|
||||||
m_cloneButton->setEnabled(false);
|
|
||||||
|
|
||||||
m_removeButton = new QPushButton(Tr::tr("Remove"));
|
|
||||||
m_removeButton->setEnabled(false);
|
|
||||||
|
|
||||||
auto makeDefaultButton = new QPushButton(Tr::tr("Make Default"));
|
|
||||||
makeDefaultButton->setEnabled(false);
|
|
||||||
makeDefaultButton->setVisible(false);
|
|
||||||
makeDefaultButton->setToolTip(Tr::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(addButton, &QPushButton::clicked, &m_model, &ToolsModel::addMesonTool);
|
|
||||||
connect(m_cloneButton, &QPushButton::clicked, this, &ToolsSettingsWidget::cloneMesonTool);
|
|
||||||
connect(m_removeButton, &QPushButton::clicked, this, &ToolsSettingsWidget::removeMesonTool);
|
|
||||||
}
|
|
||||||
|
|
||||||
ToolsSettingsWidget::~ToolsSettingsWidget() = default;
|
|
||||||
|
|
||||||
void ToolsSettingsWidget::cloneMesonTool()
|
|
||||||
{
|
|
||||||
if (m_currentItem) {
|
|
||||||
auto newItem = m_model.cloneMesonTool(m_currentItem);
|
|
||||||
m_mesonList->setCurrentIndex(newItem->index());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ToolsSettingsWidget::removeMesonTool()
|
|
||||||
{
|
|
||||||
if (m_currentItem) {
|
|
||||||
m_model.removeMesonTool(m_currentItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ToolsSettingsWidget::currentMesonToolChanged(const QModelIndex &newCurrent)
|
|
||||||
{
|
|
||||||
m_currentItem = m_model.mesoneToolTreeItem(newCurrent);
|
|
||||||
m_itemSettings->load(m_currentItem);
|
|
||||||
m_mesonDetails->setVisible(m_currentItem);
|
|
||||||
m_cloneButton->setEnabled(m_currentItem);
|
|
||||||
m_removeButton->setEnabled(m_currentItem && !m_currentItem->isAutoDetected());
|
|
||||||
}
|
|
||||||
|
|
||||||
void ToolsSettingsWidget::apply()
|
|
||||||
{
|
|
||||||
m_model.apply();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // MesonProjectManager::Internal
|
|
||||||
@@ -1,40 +0,0 @@
|
|||||||
// Copyright (C) 2020 Alexis Jeandet.
|
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "toolitemsettings.h"
|
|
||||||
#include "toolsmodel.h"
|
|
||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
|
||||||
|
|
||||||
namespace Utils { class DetailsWidget; }
|
|
||||||
|
|
||||||
namespace MesonProjectManager::Internal {
|
|
||||||
|
|
||||||
class ToolTreeItem;
|
|
||||||
|
|
||||||
class ToolsSettingsWidget final : public Core::IOptionsPageWidget
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
explicit ToolsSettingsWidget();
|
|
||||||
~ToolsSettingsWidget();
|
|
||||||
|
|
||||||
private:
|
|
||||||
void apply() final;
|
|
||||||
|
|
||||||
void cloneMesonTool();
|
|
||||||
void removeMesonTool();
|
|
||||||
void currentMesonToolChanged(const QModelIndex &newCurrent);
|
|
||||||
|
|
||||||
ToolsModel m_model;
|
|
||||||
ToolItemSettings *m_itemSettings;
|
|
||||||
ToolTreeItem *m_currentItem = nullptr;
|
|
||||||
|
|
||||||
QTreeView *m_mesonList;
|
|
||||||
Utils::DetailsWidget *m_mesonDetails;
|
|
||||||
QPushButton *m_cloneButton;
|
|
||||||
QPushButton *m_removeButton;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // MesonProjectManager::Internal
|
|
||||||
Reference in New Issue
Block a user