diff --git a/src/plugins/mesonprojectmanager/CMakeLists.txt b/src/plugins/mesonprojectmanager/CMakeLists.txt index d4d7420d7b0..3c541a1219e 100644 --- a/src/plugins/mesonprojectmanager/CMakeLists.txt +++ b/src/plugins/mesonprojectmanager/CMakeLists.txt @@ -75,8 +75,6 @@ add_qtc_plugin(MesonProjectManager toolssettingsaccessor.h toolssettingspage.cpp toolssettingspage.h - toolssettingswidget.cpp - toolssettingswidget.h tooltreeitem.cpp tooltreeitem.h toolwrapper.cpp diff --git a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs index 9de8b4ccde9..c721ab2d207 100644 --- a/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs +++ b/src/plugins/mesonprojectmanager/mesonprojectmanager.qbs @@ -95,8 +95,6 @@ Project { "toolssettingsaccessor.h", "toolssettingspage.cpp", "toolssettingspage.h", - "toolssettingswidget.cpp", - "toolssettingswidget.h", "tooltreeitem.cpp", "tooltreeitem.h", "versionhelper.h", diff --git a/src/plugins/mesonprojectmanager/toolssettingspage.cpp b/src/plugins/mesonprojectmanager/toolssettingspage.cpp index 4ac576b365e..67ecd99aacc 100644 --- a/src/plugins/mesonprojectmanager/toolssettingspage.cpp +++ b/src/plugins/mesonprojectmanager/toolssettingspage.cpp @@ -5,10 +5,120 @@ #include "mesonpluginconstants.h" #include "mesonprojectmanagertr.h" -#include "toolssettingswidget.h" +#include "toolitemsettings.h" +#include "toolsmodel.h" +#include "tooltreeitem.h" + +#include +#include + +#include +#include +#include + +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() { @@ -18,5 +128,4 @@ ToolsSettingsPage::ToolsSettingsPage() setWidgetCreator([]() { return new ToolsSettingsWidget; }); } -} // namespace Internal } // namespace MesonProjectManager diff --git a/src/plugins/mesonprojectmanager/toolssettingspage.h b/src/plugins/mesonprojectmanager/toolssettingspage.h index de62b94d918..815120c30f0 100644 --- a/src/plugins/mesonprojectmanager/toolssettingspage.h +++ b/src/plugins/mesonprojectmanager/toolssettingspage.h @@ -5,8 +5,7 @@ #include -namespace MesonProjectManager { -namespace Internal { +namespace MesonProjectManager::Internal { class ToolsSettingsPage final : public Core::IOptionsPage { @@ -14,5 +13,4 @@ public: ToolsSettingsPage(); }; -} // namespace Internal -} // namespace MesonProjectManager +} // MesonProjectManager::Internal diff --git a/src/plugins/mesonprojectmanager/toolssettingswidget.cpp b/src/plugins/mesonprojectmanager/toolssettingswidget.cpp deleted file mode 100644 index ef30d79ae43..00000000000 --- a/src/plugins/mesonprojectmanager/toolssettingswidget.cpp +++ /dev/null @@ -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 -#include - -#include -#include -#include - -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 diff --git a/src/plugins/mesonprojectmanager/toolssettingswidget.h b/src/plugins/mesonprojectmanager/toolssettingswidget.h deleted file mode 100644 index 1c39b7460ab..00000000000 --- a/src/plugins/mesonprojectmanager/toolssettingswidget.h +++ /dev/null @@ -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 - -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