From 251b47c8348045ac9b1a9c7f3a5c3dd66a1c9b98 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 2 Dec 2021 10:36:56 +0100 Subject: [PATCH] ClangTools: Inline project settings widget Allows nicer translatable strings. Also remove the extra white space in the outer layout. Change-Id: I9b7c82f932f8b0f0a7fc78a3aba6d2ea292dc670 Reviewed-by: Christian Stenger --- src/plugins/clangtools/CMakeLists.txt | 2 +- src/plugins/clangtools/clangtools.pro | 1 - src/plugins/clangtools/clangtools.qbs | 1 - .../clangtoolsprojectsettingswidget.cpp | 111 +++++++++---- .../clangtoolsprojectsettingswidget.h | 19 ++- .../clangtoolsprojectsettingswidget.ui | 147 ------------------ 6 files changed, 93 insertions(+), 188 deletions(-) delete mode 100644 src/plugins/clangtools/clangtoolsprojectsettingswidget.ui diff --git a/src/plugins/clangtools/CMakeLists.txt b/src/plugins/clangtools/CMakeLists.txt index c6828e10b48..e372da8e091 100644 --- a/src/plugins/clangtools/CMakeLists.txt +++ b/src/plugins/clangtools/CMakeLists.txt @@ -23,7 +23,7 @@ add_qtc_plugin(ClangTools clangtoolslogfilereader.cpp clangtoolslogfilereader.h clangtoolsplugin.cpp clangtoolsplugin.h clangtoolsprojectsettings.cpp clangtoolsprojectsettings.h - clangtoolsprojectsettingswidget.cpp clangtoolsprojectsettingswidget.h clangtoolsprojectsettingswidget.ui + clangtoolsprojectsettingswidget.cpp clangtoolsprojectsettingswidget.h clangtoolssettings.cpp clangtoolssettings.h clangtoolsutils.cpp clangtoolsutils.h clazychecks.ui diff --git a/src/plugins/clangtools/clangtools.pro b/src/plugins/clangtools/clangtools.pro index 0a40cf3f8fc..3894b4c641f 100644 --- a/src/plugins/clangtools/clangtools.pro +++ b/src/plugins/clangtools/clangtools.pro @@ -69,7 +69,6 @@ HEADERS += \ FORMS += \ clangselectablefilesdialog.ui \ - clangtoolsprojectsettingswidget.ui \ clazychecks.ui \ filterdialog.ui \ runsettingswidget.ui \ diff --git a/src/plugins/clangtools/clangtools.qbs b/src/plugins/clangtools/clangtools.qbs index dfbc87a0f6a..066b6848c3e 100644 --- a/src/plugins/clangtools/clangtools.qbs +++ b/src/plugins/clangtools/clangtools.qbs @@ -54,7 +54,6 @@ QtcPlugin { "clangtoolsprojectsettings.h", "clangtoolsprojectsettingswidget.cpp", "clangtoolsprojectsettingswidget.h", - "clangtoolsprojectsettingswidget.ui", "clangtoolssettings.cpp", "clangtoolssettings.h", "clangtoolsutils.cpp", diff --git a/src/plugins/clangtools/clangtoolsprojectsettingswidget.cpp b/src/plugins/clangtools/clangtoolsprojectsettingswidget.cpp index f83acdebfb2..417226168cf 100644 --- a/src/plugins/clangtools/clangtoolsprojectsettingswidget.cpp +++ b/src/plugins/clangtools/clangtoolsprojectsettingswidget.cpp @@ -24,22 +24,27 @@ ****************************************************************************/ #include "clangtoolsprojectsettingswidget.h" -#include "ui_clangtoolsprojectsettingswidget.h" #include "clangtool.h" #include "clangtoolsconstants.h" #include "clangtoolsprojectsettings.h" #include "clangtoolssettings.h" #include "clangtoolsutils.h" +#include "runsettingswidget.h" #include + +#include #include +#include #include #include - -#include +#include +#include +#include +#include namespace ClangTools { namespace Internal { @@ -65,21 +70,64 @@ private: SuppressedDiagnosticsList m_diagnostics; }; -enum { UseGlobalSettings, UseCustomSettings }; // Values in sync with m_ui->globalCustomComboBox +enum { UseGlobalSettings, UseCustomSettings }; // Values in sync with m_globalCustomComboBox ProjectSettingsWidget::ProjectSettingsWidget(ProjectExplorer::Project *project, QWidget *parent) : QWidget(parent), - m_ui(new Ui::ProjectSettingsWidget) - , m_projectSettings(ClangToolsProjectSettings::getSettings(project)) + m_projectSettings(ClangToolsProjectSettings::getSettings(project)) { - m_ui->setupUi(this); + m_globalCustomComboBox = new QComboBox; + m_globalCustomComboBox->addItem(tr("Use Global Settings")); + m_globalCustomComboBox->addItem(tr("Use Customized Settings")); + + m_restoreGlobal = new QPushButton(tr("Restore Global Settings")); + + auto gotoGlobalSettingsLabel = + new QLabel("" + tr("Open Global Settings") + ""); + + auto gotoAnalyzerModeLabel = + new QLabel("" + tr("Go to Analyzer") + ""); + + m_runSettingsWidget = new ClangTools::Internal::RunSettingsWidget(this); + + m_diagnosticsView = new QTreeView; + m_diagnosticsView->setSelectionMode(QAbstractItemView::SingleSelection); + + m_removeSelectedButton = new QPushButton(tr("Remove Selected"), this); + m_removeAllButton = new QPushButton(tr("Remove All")); + + using namespace Utils::Layouting; + + Column { + Row { + m_globalCustomComboBox, + m_restoreGlobal, + gotoGlobalSettingsLabel, + Stretch(), + gotoAnalyzerModeLabel + }, + + m_runSettingsWidget, + + Group { + Title(tr("Suppressed diagnostics")), + Row { + m_diagnosticsView, + Column { + m_removeSelectedButton, + m_removeAllButton, + Stretch() + } + } + } + }.attachTo(this, false); // Use global/custom settings combo box const int globalOrCustomIndex = m_projectSettings->useGlobalSettings() ? UseGlobalSettings : UseCustomSettings; - m_ui->globalCustomComboBox->setCurrentIndex(globalOrCustomIndex); + m_globalCustomComboBox->setCurrentIndex(globalOrCustomIndex); onGlobalCustomChanged(globalOrCustomIndex); - connect(m_ui->globalCustomComboBox, + connect(m_globalCustomComboBox, QOverload::of(&QComboBox::currentIndexChanged), this, QOverload::of(&ProjectSettingsWidget::onGlobalCustomChanged)); @@ -89,27 +137,27 @@ ProjectSettingsWidget::ProjectSettingsWidget(ProjectExplorer::Project *project, &ClangToolsSettings::changed, this, QOverload<>::of(&ProjectSettingsWidget::onGlobalCustomChanged)); - connect(m_ui->restoreGlobal, &QPushButton::clicked, this, [this]() { - m_ui->runSettingsWidget->fromSettings(ClangToolsSettings::instance()->runSettings()); + connect(m_restoreGlobal, &QPushButton::clicked, this, [this]() { + m_runSettingsWidget->fromSettings(ClangToolsSettings::instance()->runSettings()); }); // Links - connect(m_ui->gotoGlobalSettingsLabel, &QLabel::linkActivated, [](const QString &) { + connect(gotoGlobalSettingsLabel, &QLabel::linkActivated, [](const QString &) { Core::ICore::showOptionsDialog(ClangTools::Constants::SETTINGS_PAGE_ID); }); - connect(m_ui->gotoAnalyzerModeLabel, &QLabel::linkActivated, [](const QString &) { + connect(gotoAnalyzerModeLabel, &QLabel::linkActivated, [](const QString &) { ClangTool::instance()->selectPerspective(); }); // Run options - connect(m_ui->runSettingsWidget, &RunSettingsWidget::changed, [this]() { + connect(m_runSettingsWidget, &RunSettingsWidget::changed, [this]() { // Save project run settings - m_projectSettings->setRunSettings(m_ui->runSettingsWidget->toSettings()); + m_projectSettings->setRunSettings(m_runSettingsWidget->toSettings()); // Save global custom configs const CppEditor::ClangDiagnosticConfigs configs - = m_ui->runSettingsWidget->diagnosticSelectionWidget()->customConfigs(); + = m_runSettingsWidget->diagnosticSelectionWidget()->customConfigs(); ClangToolsSettings::instance()->setDiagnosticConfigs(configs); ClangToolsSettings::instance()->writeSettings(); }); @@ -122,26 +170,21 @@ ProjectSettingsWidget::ProjectSettingsWidget(ProjectExplorer::Project *project, model->setDiagnostics(m_projectSettings->suppressedDiagnostics()); updateButtonStates(); }); - m_ui->diagnosticsView->setModel(model); + m_diagnosticsView->setModel(model); updateButtonStates(); - connect(m_ui->diagnosticsView->selectionModel(), &QItemSelectionModel::selectionChanged, + connect(m_diagnosticsView->selectionModel(), &QItemSelectionModel::selectionChanged, [this](const QItemSelection &, const QItemSelection &) { updateButtonStateRemoveSelected(); }); - connect(m_ui->removeSelectedButton, &QAbstractButton::clicked, + connect(m_removeSelectedButton, &QAbstractButton::clicked, [this](bool) { removeSelected(); }); - connect(m_ui->removeAllButton, &QAbstractButton::clicked, + connect(m_removeAllButton, &QAbstractButton::clicked, [this](bool) { m_projectSettings->removeAllSuppressedDiagnostics();}); } -ProjectSettingsWidget::~ProjectSettingsWidget() -{ - delete m_ui; -} - void ProjectSettingsWidget::onGlobalCustomChanged() { - onGlobalCustomChanged(m_ui->globalCustomComboBox->currentIndex()); + onGlobalCustomChanged(m_globalCustomComboBox->currentIndex()); } void ProjectSettingsWidget::onGlobalCustomChanged(int index) @@ -149,9 +192,9 @@ void ProjectSettingsWidget::onGlobalCustomChanged(int index) const bool useGlobal = index == UseGlobalSettings; const RunSettings runSettings = useGlobal ? ClangToolsSettings::instance()->runSettings() : m_projectSettings->runSettings(); - m_ui->runSettingsWidget->fromSettings(runSettings); - m_ui->runSettingsWidget->setEnabled(!useGlobal); - m_ui->restoreGlobal->setEnabled(!useGlobal); + m_runSettingsWidget->fromSettings(runSettings); + m_runSettingsWidget->setEnabled(!useGlobal); + m_restoreGlobal->setEnabled(!useGlobal); m_projectSettings->setUseGlobalSettings(useGlobal); } @@ -164,22 +207,22 @@ void ProjectSettingsWidget::updateButtonStates() void ProjectSettingsWidget::updateButtonStateRemoveSelected() { - const auto selectedRows = m_ui->diagnosticsView->selectionModel()->selectedRows(); + const auto selectedRows = m_diagnosticsView->selectionModel()->selectedRows(); QTC_ASSERT(selectedRows.count() <= 1, return); - m_ui->removeSelectedButton->setEnabled(!selectedRows.isEmpty()); + m_removeSelectedButton->setEnabled(!selectedRows.isEmpty()); } void ProjectSettingsWidget::updateButtonStateRemoveAll() { - m_ui->removeAllButton->setEnabled(m_ui->diagnosticsView->model()->rowCount() > 0); + m_removeAllButton->setEnabled(m_diagnosticsView->model()->rowCount() > 0); } void ProjectSettingsWidget::removeSelected() { - const auto selectedRows = m_ui->diagnosticsView->selectionModel()->selectedRows(); + const auto selectedRows = m_diagnosticsView->selectionModel()->selectedRows(); QTC_ASSERT(selectedRows.count() == 1, return); const auto * const model - = static_cast(m_ui->diagnosticsView->model()); + = static_cast(m_diagnosticsView->model()); m_projectSettings->removeSuppressedDiagnostic(model->diagnosticAt(selectedRows.first().row())); } diff --git a/src/plugins/clangtools/clangtoolsprojectsettingswidget.h b/src/plugins/clangtools/clangtoolsprojectsettingswidget.h index a5b0a6267d9..4d3a9c0ca94 100644 --- a/src/plugins/clangtools/clangtoolsprojectsettingswidget.h +++ b/src/plugins/clangtools/clangtoolsprojectsettingswidget.h @@ -27,13 +27,19 @@ #include +QT_BEGIN_NAMESPACE +class QComboBox; +class QPushButton; +class QTreeView; +QT_END_NAMESPACE + namespace ProjectExplorer { class Project; } namespace ClangTools { namespace Internal { -class ClangToolsProjectSettings; -namespace Ui { class ProjectSettingsWidget; } +class ClangToolsProjectSettings; +class RunSettingsWidget; class ProjectSettingsWidget : public QWidget { @@ -41,7 +47,6 @@ class ProjectSettingsWidget : public QWidget public: explicit ProjectSettingsWidget(ProjectExplorer::Project *project, QWidget *parent = nullptr); - ~ProjectSettingsWidget() override; private: void onGlobalCustomChanged(); @@ -52,7 +57,13 @@ private: void updateButtonStateRemoveAll(); void removeSelected(); - Ui::ProjectSettingsWidget *const m_ui; + QComboBox *m_globalCustomComboBox; + QPushButton *m_restoreGlobal; + RunSettingsWidget *m_runSettingsWidget; + QTreeView *m_diagnosticsView; + QPushButton *m_removeSelectedButton; + QPushButton *m_removeAllButton; + QSharedPointer const m_projectSettings; }; diff --git a/src/plugins/clangtools/clangtoolsprojectsettingswidget.ui b/src/plugins/clangtools/clangtoolsprojectsettingswidget.ui deleted file mode 100644 index b9f3e74a36e..00000000000 --- a/src/plugins/clangtools/clangtoolsprojectsettingswidget.ui +++ /dev/null @@ -1,147 +0,0 @@ - - - ClangTools::Internal::ProjectSettingsWidget - - - - 0 - 0 - 634 - 399 - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - Use Global Settings - - - - - Use Customized Settings - - - - - - - - Restore Global Settings - - - - - - - <a href="target">Open Global Settings</a> - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - <a href="target">Go to Analyzer</a> - - - - - - - - - - - - Suppressed diagnostics - - - - - - - - QAbstractItemView::SingleSelection - - - - - - - - - Remove Selected - - - - - - - Remove All - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - - - - ClangTools::Internal::RunSettingsWidget - QWidget -
clangtools/runsettingswidget.h
- 1 -
-
- - -