ClangTools: Polish ClangDiagnosticConfigsWidget

* Improve distinction between built-in and custom configs by introducing
  corresponding parent nodes
* Add button to rename a config
* Make closing the dialog apply the selected config.
* Adapt also the related ClangDiagnosticConfigsSelectionWidget showing a
  combo box of the diagnostic configs and a "Manage..." button: Remove
  the combo box and show the current config as the button text.

Change-Id: Ic015df37f2532f84bd7da6cd20bfce07799a97b8
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
Nikolai Kosjar
2019-10-01 16:53:01 +02:00
parent 0a15b001dd
commit 3090e744c2
21 changed files with 312 additions and 335 deletions

View File

@@ -31,6 +31,7 @@
#include "clangtoolsutils.h"
#include <cpptools/clangdiagnosticconfigsmodel.h>
#include <cpptools/clangdiagnosticconfigsselectionwidget.h>
#include <utils/optional.h>
@@ -105,29 +106,22 @@ SettingsWidget::SettingsWidget(ClangToolsSettings *settings, QWidget *parent)
//
m_ui->runSettingsWidget->fromSettings(m_settings->runSettings());
connect(m_ui->runSettingsWidget,
&RunSettingsWidget::diagnosticConfigsEdited,
this,
[this](const CppTools::ClangDiagnosticConfigs &configs) {
const CppTools::ClangDiagnosticConfigsModel configsModel = diagnosticConfigsModel(
configs);
RunSettings runSettings = m_settings->runSettings();
if (!configsModel.hasConfigWithId(m_settings->runSettings().diagnosticConfigId())) {
runSettings.resetDiagnosticConfigId();
m_settings->setRunSettings(runSettings);
}
m_settings->setDiagnosticConfigs(configs);
m_settings->writeSettings();
m_ui->runSettingsWidget->fromSettings(runSettings);
});
}
void SettingsWidget::apply()
{
// Executables
m_settings->setClangTidyExecutable(m_ui->clangTidyPathChooser->rawPath());
m_settings->setClazyStandaloneExecutable(m_ui->clazyStandalonePathChooser->rawPath());
// Run options
m_settings->setRunSettings(m_ui->runSettingsWidget->toSettings());
// Custom configs
const CppTools::ClangDiagnosticConfigs customConfigs
= m_ui->runSettingsWidget->diagnosticSelectionWidget()->customConfigs();
m_settings->setDiagnosticConfigs(customConfigs);
m_settings->writeSettings();
}