aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2018-05-14 10:30:09 +0200
committerIvan Donchevskii <ivan.donchevskii@qt.io>2018-05-14 09:05:37 +0000
commit53d790606132989c25514879ac3f9e2b8264b46b (patch)
treece4d235bb2d0c0717f43fc14e0aea14085950579 /src
parentf46fb39f3c77cb50701ee1fb1dc992c466cef300 (diff)
CppTools: Merge diagnostic selection widgets together
QComboBox, QLabel and QPushButton are always used together. Therefore it makes sense to put them in one custom widget. Change-Id: Ie21675530fbadd7071f2a362567dadb6f09bb68d Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/clangcodemodel/clangprojectsettingswidget.cpp14
-rw-r--r--src/plugins/clangcodemodel/clangprojectsettingswidget.ui60
-rw-r--r--src/plugins/clangtools/clangtoolsconfigwidget.cpp2
-rw-r--r--src/plugins/clangtools/clangtoolsconfigwidget.ui33
-rw-r--r--src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp61
-rw-r--r--src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h10
-rw-r--r--src/plugins/cpptools/clangdiagnosticconfigswidget.cpp40
-rw-r--r--src/plugins/cpptools/clangdiagnosticconfigswidget.h2
-rw-r--r--src/plugins/cpptools/cppcodemodelsettingspage.cpp6
-rw-r--r--src/plugins/cpptools/cppcodemodelsettingspage.ui33
10 files changed, 86 insertions, 175 deletions
diff --git a/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp b/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
index 6b25d99ecf..f8fcd68bab 100644
--- a/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
+++ b/src/plugins/clangcodemodel/clangprojectsettingswidget.cpp
@@ -59,7 +59,7 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
using namespace CppTools;
- m_ui.generalConfigurationGroupBox->setVisible(Utils::HostOsInfo::isWindowsHost());
+ m_ui.delayedTemplateParse->setVisible(Utils::HostOsInfo::isWindowsHost());
m_ui.clangSettings->setCurrentIndex(m_projectSettings.useGlobalConfig() ? 0 : 1);
@@ -78,8 +78,6 @@ ClangProjectSettingsWidget::ClangProjectSettingsWidget(ProjectExplorer::Project
connect(CppTools::codeModelSettings().data(), &CppTools::CppCodeModelSettings::changed,
this, &ClangProjectSettingsWidget::syncOtherWidgetsToComboBox);
- connectToClangDiagnosticConfigsDialog(m_ui.manageButton);
-
syncOtherWidgetsToComboBox();
}
@@ -124,9 +122,13 @@ void ClangProjectSettingsWidget::syncOtherWidgetsToComboBox()
options.contains(QLatin1String{ClangProjectSettings::DelayedTemplateParsing}));
const bool isCustom = !m_projectSettings.useGlobalConfig();
- m_ui.generalConfigurationGroupBox->setEnabled(isCustom);
- m_ui.clangDiagnosticsLabel->setEnabled(isCustom);
- m_ui.clangDiagnosticConfigsSelectionWidget->setEnabled(isCustom);
+ m_ui.delayedTemplateParse->setEnabled(isCustom);
+
+ for (int i = 0; i < m_ui.clangDiagnosticConfigsSelectionWidget->layout()->count(); ++i) {
+ QWidget *widget = m_ui.clangDiagnosticConfigsSelectionWidget->layout()->itemAt(i)->widget();
+ if (widget)
+ widget->setEnabled(isCustom);
+ }
refreshDiagnosticConfigsWidgetFromSettings();
}
diff --git a/src/plugins/clangcodemodel/clangprojectsettingswidget.ui b/src/plugins/clangcodemodel/clangprojectsettingswidget.ui
index 00a0fe4332..88177c235f 100644
--- a/src/plugins/clangcodemodel/clangprojectsettingswidget.ui
+++ b/src/plugins/clangcodemodel/clangprojectsettingswidget.ui
@@ -35,64 +35,18 @@
</widget>
</item>
<item>
- <widget class="QGroupBox" name="generalConfigurationGroupBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
+ <widget class="QCheckBox" name="delayedTemplateParse">
+ <property name="toolTip">
+ <string>Parse templates in a MSVC-compliant way. This helps to parse headers for example from Active Template Library (ATL) or Windows Runtime Library (WRL).
+However, using the relaxed and extended rules means also that no highlighting/completion can be provided within template functions.</string>
</property>
- <property name="title">
- <string>General</string>
+ <property name="text">
+ <string>Enable MSVC-compliant template parsing</string>
</property>
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <item>
- <widget class="QCheckBox" name="delayedTemplateParse">
- <property name="toolTip">
- <string>Parse templates in a MSVC-compliant way. This helps to parse headers for example from Active Template Library (ATL) or Windows Runtime Library (WRL).
-However, using the relaxed and extended rules means also that no highlighting/completion can be provided within template functions.</string>
- </property>
- <property name="text">
- <string>Enable MSVC-compliant template parsing</string>
- </property>
- </widget>
- </item>
- </layout>
</widget>
</item>
<item>
- <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>
+ <widget class="CppTools::ClangDiagnosticConfigsSelectionWidget" name="clangDiagnosticConfigsSelectionWidget" native="true"/>
</item>
<item>
<spacer name="verticalSpacer">
diff --git a/src/plugins/clangtools/clangtoolsconfigwidget.cpp b/src/plugins/clangtools/clangtoolsconfigwidget.cpp
index 45e7b4041c..313c343194 100644
--- a/src/plugins/clangtools/clangtoolsconfigwidget.cpp
+++ b/src/plugins/clangtools/clangtoolsconfigwidget.cpp
@@ -62,8 +62,6 @@ ClangToolsConfigWidget::ClangToolsConfigWidget(
m_ui->clangDiagnosticConfigsSelectionWidget->refresh(settings->savedDiagnosticConfigId());
- CppTools::connectToClangDiagnosticConfigsDialog(m_ui->manageButton);
-
connect(m_ui->clangDiagnosticConfigsSelectionWidget,
&CppTools::ClangDiagnosticConfigsSelectionWidget::currentConfigChanged,
this, [this](const Core::Id &currentConfigId) {
diff --git a/src/plugins/clangtools/clangtoolsconfigwidget.ui b/src/plugins/clangtools/clangtoolsconfigwidget.ui
index 6d78aad6f4..1119a74532 100644
--- a/src/plugins/clangtools/clangtoolsconfigwidget.ui
+++ b/src/plugins/clangtools/clangtoolsconfigwidget.ui
@@ -62,38 +62,7 @@
</layout>
</item>
<item>
- <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>
+ <widget class="CppTools::ClangDiagnosticConfigsSelectionWidget" name="clangDiagnosticConfigsSelectionWidget" native="true"/>
</item>
</layout>
</widget>
diff --git a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
index e3038d3aa3..d4efc67f5a 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
+++ b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.cpp
@@ -25,14 +25,63 @@
#include "clangdiagnosticconfigsselectionwidget.h"
+#include "clangdiagnosticconfigswidget.h"
#include "cppcodemodelsettings.h"
#include "cpptoolsreuse.h"
+#include <coreplugin/icore.h>
+
+#include <QComboBox>
+#include <QDialog>
+#include <QDialogButtonBox>
+#include <QHBoxLayout>
+#include <QPushButton>
+
namespace CppTools {
+static void connectToClangDiagnosticConfigsDialog(QPushButton *button)
+{
+ QObject::connect(button, &QPushButton::clicked, []() {
+ ClangDiagnosticConfigsWidget *widget = new ClangDiagnosticConfigsWidget;
+ widget->layout()->setMargin(0);
+ QDialog dialog;
+ dialog.setWindowTitle(widget->tr("Diagnostic Configurations"));
+ dialog.setLayout(new QVBoxLayout);
+ dialog.layout()->addWidget(widget);
+ auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
+ dialog.layout()->addWidget(buttonsBox);
+ QObject::connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
+ QObject::connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
+
+ QObject::connect(&dialog, &QDialog::accepted, [widget]() {
+ QSharedPointer<CppCodeModelSettings> settings = codeModelSettings();
+ const ClangDiagnosticConfigs oldDiagnosticConfigs
+ = settings->clangCustomDiagnosticConfigs();
+ const ClangDiagnosticConfigs currentDiagnosticConfigs = widget->customConfigs();
+ if (oldDiagnosticConfigs != currentDiagnosticConfigs) {
+ settings->setClangCustomDiagnosticConfigs(currentDiagnosticConfigs);
+ settings->toSettings(Core::ICore::settings());
+ }
+ });
+ dialog.exec();
+ });
+}
+
ClangDiagnosticConfigsSelectionWidget::ClangDiagnosticConfigsSelectionWidget(QWidget *parent)
- : QComboBox(parent)
+ : QWidget(parent)
+ , m_selectionComboBox(new QComboBox(this))
{
+ auto *layout = new QHBoxLayout(this);
+ layout->setMargin(0);
+ setLayout(layout);
+ layout->addWidget(new QLabel(tr("Diagnostic Configuration:"), this));
+ layout->addWidget(m_selectionComboBox);
+ auto *manageButton = new QPushButton(tr("Manage..."), this);
+ layout->addWidget(manageButton);
+ layout->addStretch();
+
+ connectToClangDiagnosticConfigsDialog(manageButton);
+
refresh(codeModelSettings()->clangDiagnosticConfigId());
connectToCurrentIndexChanged();
@@ -40,13 +89,13 @@ ClangDiagnosticConfigsSelectionWidget::ClangDiagnosticConfigsSelectionWidget(QWi
Core::Id ClangDiagnosticConfigsSelectionWidget::currentConfigId() const
{
- return Core::Id::fromSetting(currentData());
+ return Core::Id::fromSetting(m_selectionComboBox->currentData());
}
void ClangDiagnosticConfigsSelectionWidget::connectToCurrentIndexChanged()
{
m_currentIndexChangedConnection
- = connect(this,
+ = connect(m_selectionComboBox,
static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),
this,
[this]() { emit currentConfigChanged(currentConfigId()); });
@@ -62,7 +111,7 @@ void ClangDiagnosticConfigsSelectionWidget::refresh(Core::Id id)
disconnectFromCurrentIndexChanged();
int configToSelectIndex = -1;
- clear();
+ m_selectionComboBox->clear();
m_diagnosticConfigsModel = ClangDiagnosticConfigsModel(
codeModelSettings()->clangCustomDiagnosticConfigs());
const int size = m_diagnosticConfigsModel.size();
@@ -70,14 +119,14 @@ void ClangDiagnosticConfigsSelectionWidget::refresh(Core::Id id)
const ClangDiagnosticConfig &config = m_diagnosticConfigsModel.at(i);
const QString displayName
= ClangDiagnosticConfigsModel::displayNameWithBuiltinIndication(config);
- addItem(displayName, config.id().toSetting());
+ m_selectionComboBox->addItem(displayName, config.id().toSetting());
if (id == config.id())
configToSelectIndex = i;
}
if (configToSelectIndex != -1)
- setCurrentIndex(configToSelectIndex);
+ m_selectionComboBox->setCurrentIndex(configToSelectIndex);
else
emit currentConfigChanged(currentConfigId());
diff --git a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h
index 597f11918a..abcdacf365 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h
+++ b/src/plugins/cpptools/clangdiagnosticconfigsselectionwidget.h
@@ -29,11 +29,15 @@
#include "clangdiagnosticconfigsmodel.h"
-#include <QComboBox>
+#include <QWidget>
+
+QT_BEGIN_NAMESPACE
+class QComboBox;
+QT_END_NAMESPACE
namespace CppTools {
-class CPPTOOLS_EXPORT ClangDiagnosticConfigsSelectionWidget : public QComboBox
+class CPPTOOLS_EXPORT ClangDiagnosticConfigsSelectionWidget : public QWidget
{
Q_OBJECT
@@ -53,6 +57,8 @@ private:
QMetaObject::Connection m_currentIndexChangedConnection;
ClangDiagnosticConfigsModel m_diagnosticConfigsModel;
+
+ QComboBox *m_selectionComboBox = nullptr;
};
} // CppTools namespace
diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
index 6da9616e43..54acaa8304 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
+++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.cpp
@@ -32,14 +32,11 @@
#include "ui_clazychecks.h"
#include "ui_tidychecks.h"
-#include <coreplugin/icore.h>
-
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
#include <utils/utilsicons.h>
#include <QDebug>
-#include <QDialogButtonBox>
#include <QInputDialog>
#include <QPushButton>
#include <QUuid>
@@ -441,14 +438,14 @@ void ClangDiagnosticConfigsWidget::connectClazyRadioButtonClicked(QRadioButton *
void ClangDiagnosticConfigsWidget::connectConfigChooserCurrentIndex()
{
- connect(m_ui->configChooserList, &QListWidget::currentRowChanged, this,
- &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
+ connect(m_ui->configChooserList, &QListWidget::currentRowChanged,
+ this, &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
}
void ClangDiagnosticConfigsWidget::disconnectConfigChooserCurrentIndex()
{
- disconnect(m_ui->configChooserList, &QListWidget::currentRowChanged, this,
- &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
+ disconnect(m_ui->configChooserList, &QListWidget::currentRowChanged,
+ this, &ClangDiagnosticConfigsWidget::onCurrentConfigChanged);
}
void ClangDiagnosticConfigsWidget::connectDiagnosticOptionsChanged()
@@ -503,33 +500,4 @@ void ClangDiagnosticConfigsWidget::setupTabs()
m_ui->tabWidget->setCurrentIndex(0);
}
-void connectToClangDiagnosticConfigsDialog(QPushButton *button)
-{
- QObject::connect(button, &QPushButton::clicked, []() {
- ClangDiagnosticConfigsWidget *widget = new ClangDiagnosticConfigsWidget;
- QDialog dialog;
- dialog.setWindowTitle(widget->tr("Diagnostic Configurations"));
- dialog.setLayout(new QVBoxLayout);
- dialog.layout()->setMargin(0);
- dialog.layout()->setSpacing(0);
- dialog.layout()->addWidget(widget);
- auto *buttonsBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
- dialog.layout()->addWidget(buttonsBox);
- QObject::connect(buttonsBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
- QObject::connect(buttonsBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
-
- QObject::connect(&dialog, &QDialog::accepted, [widget]() {
- QSharedPointer<CppCodeModelSettings> settings = codeModelSettings();
- const ClangDiagnosticConfigs oldDiagnosticConfigs
- = settings->clangCustomDiagnosticConfigs();
- const ClangDiagnosticConfigs currentDiagnosticConfigs = widget->customConfigs();
- if (oldDiagnosticConfigs != currentDiagnosticConfigs) {
- settings->setClangCustomDiagnosticConfigs(currentDiagnosticConfigs);
- settings->toSettings(Core::ICore::settings());
- }
- });
- dialog.exec();
- });
-}
-
} // CppTools namespace
diff --git a/src/plugins/cpptools/clangdiagnosticconfigswidget.h b/src/plugins/cpptools/clangdiagnosticconfigswidget.h
index 4fbdd2ec40..545f9cdebb 100644
--- a/src/plugins/cpptools/clangdiagnosticconfigswidget.h
+++ b/src/plugins/cpptools/clangdiagnosticconfigswidget.h
@@ -119,6 +119,4 @@ private:
int m_selectedConfigIndex = 0;
};
-CPPTOOLS_EXPORT void connectToClangDiagnosticConfigsDialog(QPushButton *button);
-
} // CppTools namespace
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.cpp b/src/plugins/cpptools/cppcodemodelsettingspage.cpp
index 91706470fd..c404c433d0 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.cpp
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.cpp
@@ -75,14 +75,12 @@ void CppCodeModelSettingsWidget::setupClangCodeModelWidgets()
m_ui->clangCodeModelIsDisabledHint->setVisible(!isClangActive);
m_ui->clangCodeModelIsEnabledHint->setVisible(isClangActive);
- for (int i = 0; i < m_ui->clangDiagnosticsLayout->count(); ++i) {
- QWidget *widget = m_ui->clangDiagnosticsLayout->itemAt(i)->widget();
+ for (int i = 0; i < m_ui->clangDiagnosticConfigsSelectionWidget->layout()->count(); ++i) {
+ QWidget *widget = m_ui->clangDiagnosticConfigsSelectionWidget->layout()->itemAt(i)->widget();
if (widget)
widget->setEnabled(isClangActive);
}
- connectToClangDiagnosticConfigsDialog(m_ui->manageButton);
-
connect(m_settings.data(), &CppCodeModelSettings::changed,
this, [this]() {
m_ui->clangDiagnosticConfigsSelectionWidget->refresh(
diff --git a/src/plugins/cpptools/cppcodemodelsettingspage.ui b/src/plugins/cpptools/cppcodemodelsettingspage.ui
index e706fba256..4330ac268a 100644
--- a/src/plugins/cpptools/cppcodemodelsettingspage.ui
+++ b/src/plugins/cpptools/cppcodemodelsettingspage.ui
@@ -98,38 +98,7 @@
</widget>
</item>
<item>
- <layout class="QHBoxLayout" name="clangDiagnosticsLayout">
- <item>
- <widget class="QLabel" name="label">
- <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_2">
- <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>
+ <widget class="CppTools::ClangDiagnosticConfigsSelectionWidget" name="clangDiagnosticConfigsSelectionWidget" native="true"/>
</item>
<item>
<spacer name="verticalSpacer">