forked from qt-creator/qt-creator
CppTools: Split diagnostic settings and selection
Now selection is only consists of combobox and a "Manage" button to diagnostic configurations. Diagnostic configurations are moved to the modal dialog which is shown by clicking the mentioned "Manage" button. Change-Id: I607fb923c97e8730448548708f3aaf32ce1983c8 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
This commit is contained in:
@@ -59,19 +59,14 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
|
||||
|
||||
using namespace CppTools;
|
||||
|
||||
m_diagnosticConfigWidget = new ClangDiagnosticConfigsWidget;
|
||||
refreshDiagnosticConfigsWidgetFromSettings();
|
||||
|
||||
m_ui.generalConfigurationGroupBox->setVisible(Utils::HostOsInfo::isWindowsHost());
|
||||
|
||||
m_ui.clangSettings->setCurrentIndex(m_projectSettings.useGlobalConfig() ? 0 : 1);
|
||||
syncOtherWidgetsToComboBox();
|
||||
|
||||
connectToCppCodeModelSettingsChanged();
|
||||
connect(m_diagnosticConfigWidget.data(), &ClangDiagnosticConfigsWidget::currentConfigChanged,
|
||||
connect(m_ui.clangDiagnosticConfigsSelectionWidget,
|
||||
&ClangDiagnosticConfigsSelectionWidget::currentConfigChanged,
|
||||
this, &ClangProjectSettingsWidget::onCurrentWarningConfigChanged);
|
||||
connect(m_diagnosticConfigWidget.data(), &ClangDiagnosticConfigsWidget::customConfigsChanged,
|
||||
this, &ClangProjectSettingsWidget::onCustomWarningConfigsChanged);
|
||||
|
||||
connect(m_ui.delayedTemplateParse, &QCheckBox::toggled,
|
||||
this, &ClangProjectSettingsWidget::onDelayedTemplateParseClicked);
|
||||
connect(m_ui.clangSettings,
|
||||
@@ -80,7 +75,12 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
|
||||
connect(project, &ProjectExplorer::Project::aboutToSaveSettings,
|
||||
this, &ClangProjectSettingsWidget::onAboutToSaveProjectSettings);
|
||||
|
||||
m_ui.diagnosticConfigurationGroupBox->layout()->addWidget(m_diagnosticConfigWidget);
|
||||
connect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed,
|
||||
this, &ClangProjectSettingsWidget::syncOtherWidgetsToComboBox);
|
||||
|
||||
connectToClangDiagnosticConfigsDialog(m_ui.manageButton);
|
||||
|
||||
syncOtherWidgetsToComboBox();
|
||||
}
|
||||
|
||||
void ClangProjectSettingsWidget::onCurrentWarningConfigChanged(const Core::Id ¤tConfigId)
|
||||
@@ -91,18 +91,6 @@ void ClangProjectSettingsWidget::onCurrentWarningConfigChanged(const Core::Id &c
|
||||
m_projectSettings.setWarningConfigId(currentConfigId);
|
||||
}
|
||||
|
||||
void ClangProjectSettingsWidget::onCustomWarningConfigsChanged(
|
||||
const CppTools::ClangDiagnosticConfigs &customConfigs)
|
||||
{
|
||||
disconnectFromCppCodeModelSettingsChanged();
|
||||
|
||||
const QSharedPointer<CppTools::CppCodeModelSettings> codeModelSettings
|
||||
= CppTools::codeModelSettings();
|
||||
codeModelSettings->setClangCustomDiagnosticConfigs(customConfigs);
|
||||
|
||||
connectToCppCodeModelSettingsChanged();
|
||||
}
|
||||
|
||||
void ClangProjectSettingsWidget::onDelayedTemplateParseClicked(bool checked)
|
||||
{
|
||||
// Don't save it when we reset the global config in code
|
||||
@@ -137,29 +125,15 @@ void ClangProjectSettingsWidget::syncOtherWidgetsToComboBox()
|
||||
|
||||
const bool isCustom = !m_projectSettings.useGlobalConfig();
|
||||
m_ui.generalConfigurationGroupBox->setEnabled(isCustom);
|
||||
m_ui.diagnosticConfigurationGroupBox->setEnabled(isCustom);
|
||||
m_ui.clangDiagnosticsLabel->setEnabled(isCustom);
|
||||
m_ui.clangDiagnosticConfigsSelectionWidget->setEnabled(isCustom);
|
||||
|
||||
refreshDiagnosticConfigsWidgetFromSettings();
|
||||
}
|
||||
|
||||
void ClangProjectSettingsWidget::refreshDiagnosticConfigsWidgetFromSettings()
|
||||
{
|
||||
CppTools::ClangDiagnosticConfigsModel configsModel(
|
||||
CppTools::codeModelSettings()->clangCustomDiagnosticConfigs());
|
||||
m_diagnosticConfigWidget->refresh(configsModel,
|
||||
configIdForProject(m_projectSettings));
|
||||
}
|
||||
|
||||
void ClangProjectSettingsWidget::connectToCppCodeModelSettingsChanged()
|
||||
{
|
||||
connect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed,
|
||||
this, &ClangProjectSettingsWidget::refreshDiagnosticConfigsWidgetFromSettings);
|
||||
}
|
||||
|
||||
void ClangProjectSettingsWidget::disconnectFromCppCodeModelSettingsChanged()
|
||||
{
|
||||
disconnect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed,
|
||||
this, &ClangProjectSettingsWidget::refreshDiagnosticConfigsWidgetFromSettings);
|
||||
m_ui.clangDiagnosticConfigsSelectionWidget->refresh(configIdForProject(m_projectSettings));
|
||||
}
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -29,12 +29,9 @@
|
||||
|
||||
#include "clangprojectsettings.h"
|
||||
|
||||
#include <cpptools/clangdiagnosticconfigsmodel.h>
|
||||
|
||||
#include <QPointer>
|
||||
|
||||
namespace ProjectExplorer { class Project; }
|
||||
namespace CppTools { class ClangDiagnosticConfigsWidget; }
|
||||
|
||||
namespace ClangCodeModel {
|
||||
namespace Internal {
|
||||
@@ -48,19 +45,16 @@ public:
|
||||
|
||||
private:
|
||||
void onCurrentWarningConfigChanged(const Core::Id ¤tConfigId);
|
||||
void onCustomWarningConfigsChanged(const CppTools::ClangDiagnosticConfigs &customConfigs);
|
||||
void onDelayedTemplateParseClicked(bool);
|
||||
void onClangSettingsChanged(int index);
|
||||
void onAboutToSaveProjectSettings();
|
||||
void refreshDiagnosticConfigsWidgetFromSettings();
|
||||
void connectToCppCodeModelSettingsChanged();
|
||||
void disconnectFromCppCodeModelSettingsChanged();
|
||||
void syncOtherWidgetsToComboBox();
|
||||
|
||||
void refreshDiagnosticConfigsWidgetFromSettings();
|
||||
|
||||
private:
|
||||
Ui::ClangProjectSettingsWidget m_ui;
|
||||
ClangProjectSettings &m_projectSettings;
|
||||
QPointer<CppTools::ClangDiagnosticConfigsWidget> m_diagnosticConfigWidget;
|
||||
};
|
||||
|
||||
} // namespace Internal
|
||||
|
||||
@@ -61,15 +61,61 @@ However, using the relaxed and extended rules means also that no highlighting/co
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QGroupBox" name="diagnosticConfigurationGroupBox">
|
||||
<property name="title">
|
||||
<string>Warnings</string>
|
||||
<layout class="QHBoxLayout" name="clangDiagnosticsLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="clangDiagnosticsLabel">
|
||||
<property name="text">
|
||||
<string>Diagnostic Configuration:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="CppTools::ClangDiagnosticConfigsSelectionWidget" name="clangDiagnosticConfigsSelectionWidget" native="true"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="manageButton">
|
||||
<property name="text">
|
||||
<string>Manage...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2"/>
|
||||
</widget>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>CppTools::ClangDiagnosticConfigsSelectionWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
<header>cpptools/clangdiagnosticconfigsselectionwidget.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
||||
|
||||
Reference in New Issue
Block a user