CppTools: Improve clang diagnostic configuration UI

...by clarifying the widget hierarchy. Ensure that the combo box at the
top is perceived as the main widget:

* Remove the "Configuration to use:" label so the combo box gets more
  horizontal space and thus dominance. Also, rename the group box
  header/label from "Clang Diagnostic Warnigns" to "Clang Diagnostic
  Configuration".
* Move the command line text edit below the combo box into its own tab
  page to clarify the relation to the tidy/clazy tabs.

Change-Id: I97a0785678e33b94746046d07a911422b1469890
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Nikolai Kosjar
2018-02-06 13:17:36 +01:00
parent 52b717d3d1
commit 8cd96c2142
7 changed files with 106 additions and 85 deletions

View File

@@ -25,6 +25,7 @@
#include "clangdiagnosticconfigswidget.h"
#include "ui_clangdiagnosticconfigswidget.h"
#include "ui_clangbasechecks.h"
#include "ui_clazychecks.h"
#include "ui_tidychecks.h"
@@ -47,7 +48,7 @@ ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(
, m_diagnosticConfigsModel(diagnosticConfigsModel)
{
m_ui->setupUi(this);
setupPluginsWidgets();
setupTabs();
connectConfigChooserCurrentIndex();
connect(m_ui->copyButton, &QPushButton::clicked,
@@ -99,7 +100,7 @@ void ClangDiagnosticConfigsWidget::onCopyButtonClicked()
emit customConfigsChanged(customConfigs());
syncConfigChooserToModel(customConfig.id());
m_ui->diagnosticOptionsTextEdit->setFocus();
m_clangBaseChecks->diagnosticOptionsTextEdit->setFocus();
}
}
@@ -162,7 +163,8 @@ static QStringList normalizeDiagnosticInputOptions(const QString &options)
void ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited()
{
// Clean up input
const QString diagnosticOptions = m_ui->diagnosticOptionsTextEdit->document()->toPlainText();
const QString diagnosticOptions = m_clangBaseChecks->diagnosticOptionsTextEdit->document()
->toPlainText();
const QStringList normalizedOptions = normalizeDiagnosticInputOptions(diagnosticOptions);
// Validate
@@ -231,7 +233,7 @@ void ClangDiagnosticConfigsWidget::syncOtherWidgetsToComboBox()
? m_notAcceptedOptions.value(config.id())
: config.clangOptions().join(QLatin1Char(' '));
setDiagnosticOptions(options);
m_ui->diagnosticOptionsTextEdit->setReadOnly(config.isReadOnly());
m_clangBaseChecks->diagnosticOptionsTextEdit->setReadOnly(config.isReadOnly());
syncClangTidyWidgets(config);
syncClazyWidgets(config);
@@ -308,10 +310,10 @@ const ClangDiagnosticConfig &ClangDiagnosticConfigsWidget::currentConfig() const
void ClangDiagnosticConfigsWidget::setDiagnosticOptions(const QString &options)
{
if (options != m_ui->diagnosticOptionsTextEdit->document()->toPlainText()) {
if (options != m_clangBaseChecks->diagnosticOptionsTextEdit->document()->toPlainText()) {
disconnectDiagnosticOptionsChanged();
m_ui->diagnosticOptionsTextEdit->document()->setPlainText(options);
m_clangBaseChecks->diagnosticOptionsTextEdit->document()->setPlainText(options);
const QString errorMessage
= validateDiagnosticOptions(normalizeDiagnosticInputOptions(options));
updateValidityWidgets(errorMessage);
@@ -369,14 +371,18 @@ void ClangDiagnosticConfigsWidget::disconnectConfigChooserCurrentIndex()
void ClangDiagnosticConfigsWidget::connectDiagnosticOptionsChanged()
{
connect(m_ui->diagnosticOptionsTextEdit->document(), &QTextDocument::contentsChanged,
this, &ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited);
connect(m_clangBaseChecks->diagnosticOptionsTextEdit->document(),
&QTextDocument::contentsChanged,
this,
&ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited);
}
void ClangDiagnosticConfigsWidget::disconnectDiagnosticOptionsChanged()
{
disconnect(m_ui->diagnosticOptionsTextEdit->document(), &QTextDocument::contentsChanged,
this, &ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited);
disconnect(m_clangBaseChecks->diagnosticOptionsTextEdit->document(),
&QTextDocument::contentsChanged,
this,
&ClangDiagnosticConfigsWidget::onDiagnosticOptionsEdited);
}
Core::Id ClangDiagnosticConfigsWidget::currentConfigId() const
@@ -401,8 +407,12 @@ void ClangDiagnosticConfigsWidget::refresh(
syncWidgetsToModel(configToSelect);
}
void ClangDiagnosticConfigsWidget::setupPluginsWidgets()
void ClangDiagnosticConfigsWidget::setupTabs()
{
m_clangBaseChecks.reset(new CppTools::Ui::ClangBaseChecks);
m_clangBaseChecksWidget = new QWidget();
m_clangBaseChecks->setupUi(m_clangBaseChecksWidget);
m_clazyChecks.reset(new CppTools::Ui::ClazyChecks);
m_clazyChecksWidget = new QWidget();
m_clazyChecks->setupUi(m_clazyChecksWidget);
@@ -423,9 +433,10 @@ void ClangDiagnosticConfigsWidget::setupPluginsWidgets()
m_tidyChecks->setupUi(m_tidyChecksWidget);
connectClangTidyItemChanged();
m_ui->pluginChecksTabs->addTab(m_tidyChecksWidget, tr("Clang-Tidy"));
m_ui->pluginChecksTabs->addTab(m_clazyChecksWidget, tr("Clazy"));
m_ui->pluginChecksTabs->setCurrentIndex(0);
m_ui->tabWidget->addTab(m_clangBaseChecksWidget, tr("Clang"));
m_ui->tabWidget->addTab(m_tidyChecksWidget, tr("Clang-Tidy"));
m_ui->tabWidget->addTab(m_clazyChecksWidget, tr("Clazy"));
m_ui->tabWidget->setCurrentIndex(0);
}
} // CppTools namespace