diff --git a/src/plugins/cppeditor/CMakeLists.txt b/src/plugins/cppeditor/CMakeLists.txt index 7f32e3faa7a..7d03b0c599e 100644 --- a/src/plugins/cppeditor/CMakeLists.txt +++ b/src/plugins/cppeditor/CMakeLists.txt @@ -11,7 +11,6 @@ add_qtc_plugin(CppEditor builtineditordocumentparser.cpp builtineditordocumentparser.h builtineditordocumentprocessor.cpp builtineditordocumentprocessor.h builtinindexingsupport.cpp builtinindexingsupport.h - clangbasechecks.ui clangdiagnosticconfig.cpp clangdiagnosticconfig.h clangdiagnosticconfigsmodel.cpp clangdiagnosticconfigsmodel.h clangdiagnosticconfigsselectionwidget.cpp clangdiagnosticconfigsselectionwidget.h diff --git a/src/plugins/cppeditor/clangbasechecks.ui b/src/plugins/cppeditor/clangbasechecks.ui deleted file mode 100644 index 784771564be..00000000000 --- a/src/plugins/cppeditor/clangbasechecks.ui +++ /dev/null @@ -1,48 +0,0 @@ - - - CppEditor::ClangBaseChecks - - - - 0 - 0 - 665 - 300 - - - - - - - - - - For appropriate options, consult the GCC or Clang manual pages or the <a href="https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html">GCC online documentation</a>. - - - true - - - - - - - Use diagnostic flags from build system - - - - - - - - - - - CppEditor::WrappableLineEdit - QLineEdit -
cppeditor/wrappablelineedit.h
-
-
- - -
diff --git a/src/plugins/cppeditor/clangdiagnosticconfigswidget.cpp b/src/plugins/cppeditor/clangdiagnosticconfigswidget.cpp index f53aca16502..d8007e0ceee 100644 --- a/src/plugins/cppeditor/clangdiagnosticconfigswidget.cpp +++ b/src/plugins/cppeditor/clangdiagnosticconfigswidget.cpp @@ -5,19 +5,25 @@ #include "clangdiagnosticconfigsmodel.h" #include "ui_clangdiagnosticconfigswidget.h" -#include "ui_clangbasechecks.h" +#include "wrappablelineedit.h" #include #include +#include #include #include +#include +#include #include +#include #include +using namespace Utils; + namespace CppEditor { -class ConfigNode : public Utils::TreeItem +class ConfigNode : public TreeItem { public: ConfigNode(const ClangDiagnosticConfig &config) @@ -34,11 +40,11 @@ public: ClangDiagnosticConfig config; }; -class GroupNode : public Utils::StaticTreeItem +class GroupNode : public StaticTreeItem { public: GroupNode(const QString &text) - : Utils::StaticTreeItem(text) + : StaticTreeItem(text) {} Qt::ItemFlags flags(int) const final { return {}; } @@ -49,11 +55,11 @@ public: return QApplication::palette().color(QPalette::ColorGroup::Normal, QPalette::ColorRole::Text); } - return Utils::StaticTreeItem::data(column, role); + return StaticTreeItem::data(column, role); } }; -class ConfigsModel : public Utils::TreeModel +class ConfigsModel : public TreeModel { Q_OBJECT @@ -66,7 +72,7 @@ public: rootItem()->appendChild(m_customRoot); for (const ClangDiagnosticConfig &config : configs) { - Utils::TreeItem *parent = config.isReadOnly() ? m_builtinRoot : m_customRoot; + TreeItem *parent = config.isReadOnly() ? m_builtinRoot : m_customRoot; parent->appendChild(new ConfigNode(config)); } } @@ -88,13 +94,13 @@ public: m_customRoot->appendChild(new ConfigNode(config)); } - void removeConfig(const Utils::Id &id) + void removeConfig(const Id &id) { ConfigNode *node = itemForConfigId(id); node->parent()->removeChildAt(node->indexInParent()); } - ConfigNode *itemForConfigId(const Utils::Id &id) const + ConfigNode *itemForConfigId(const Id &id) const { return findItemAtLevel<2>([id](const ConfigNode *node) { return node->config.id() == id; @@ -102,12 +108,41 @@ public: } private: - Utils::TreeItem *m_builtinRoot = nullptr; - Utils::TreeItem *m_customRoot = nullptr; + TreeItem *m_builtinRoot = nullptr; + TreeItem *m_customRoot = nullptr; +}; + +class ClangBaseChecksWidget : public QWidget +{ + Q_DECLARE_TR_FUNCTIONS(CppEditor::ClangBaseChecks) + +public: + ClangBaseChecksWidget() + { + auto label = new QLabel(tr("For appropriate options, consult the GCC or Clang manual " + "pages or the " + "GCC online documentation.")); + label->setOpenExternalLinks(true); + + useFlagsFromBuildSystemCheckBox = new QCheckBox(tr("Use diagnostic flags from build system")); + + diagnosticOptionsTextEdit = new WrappableLineEdit; + + using namespace Layouting; + + Column { + label, + useFlagsFromBuildSystemCheckBox, + diagnosticOptionsTextEdit + }.attachTo(this); + } + + QCheckBox *useFlagsFromBuildSystemCheckBox; + WrappableLineEdit *diagnosticOptionsTextEdit; }; ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(const ClangDiagnosticConfigs &configs, - const Utils::Id &configToSelect, + const Id &configToSelect, QWidget *parent) : QWidget(parent) , m_ui(new Ui::ClangDiagnosticConfigsWidget) @@ -126,11 +161,9 @@ ClangDiagnosticConfigsWidget::ClangDiagnosticConfigsWidget(const ClangDiagnostic this, &ClangDiagnosticConfigsWidget::sync); - m_clangBaseChecks = std::make_unique(); - m_clangBaseChecksWidget = new QWidget(); - m_clangBaseChecks->setupUi(m_clangBaseChecksWidget); + m_clangBaseChecks = new ClangBaseChecksWidget; - m_ui->tabWidget->addTab(m_clangBaseChecksWidget, tr("Clang Warnings")); + m_ui->tabWidget->addTab(m_clangBaseChecks, tr("Clang Warnings")); m_ui->tabWidget->setCurrentIndex(0); connect(m_ui->copyButton, &QPushButton::clicked, @@ -188,13 +221,13 @@ void ClangDiagnosticConfigsWidget::onRenameButtonClicked() const ClangDiagnosticConfig ClangDiagnosticConfigsWidget::currentConfig() const { - Utils::TreeItem *item = m_configsModel->itemForIndex(m_ui->configsView->currentIndex()); + TreeItem *item = m_configsModel->itemForIndex(m_ui->configsView->currentIndex()); return static_cast(item)->config; } void ClangDiagnosticConfigsWidget::onRemoveButtonClicked() { - const Utils::Id configToRemove = currentConfig().id(); + const Id configToRemove = currentConfig().id(); if (m_configsModel->customConfigsCount() == 1) m_ui->configsView->setCurrentIndex(m_configsModel->fallbackConfigIndex()); m_configsModel->removeConfig(configToRemove); @@ -270,7 +303,7 @@ void ClangDiagnosticConfigsWidget::sync() return; disconnectClangOnlyOptionsChanged(); - Utils::ExecuteOnDestruction e([this] { connectClangOnlyOptionsChanged(); }); + ExecuteOnDestruction e([this] { connectClangOnlyOptionsChanged(); }); // Update main button row const ClangDiagnosticConfig &config = currentConfig(); @@ -285,10 +318,10 @@ void ClangDiagnosticConfigsWidget::sync() ? m_notAcceptedOptions.value(config.id()) : config.clangOptions().join(QLatin1Char(' ')); setDiagnosticOptions(options); - m_clangBaseChecksWidget->setEnabled(!config.isReadOnly()); + m_clangBaseChecks->setEnabled(!config.isReadOnly()); if (config.isReadOnly()) { - m_ui->infoLabel->setType(Utils::InfoLabel::Information); + m_ui->infoLabel->setType(InfoLabel::Information); m_ui->infoLabel->setText(tr("Copy this configuration to customize it.")); m_ui->infoLabel->setFilled(false); } @@ -314,11 +347,11 @@ void ClangDiagnosticConfigsWidget::setDiagnosticOptions(const QString &options) void ClangDiagnosticConfigsWidget::updateValidityWidgets(const QString &errorMessage) { if (errorMessage.isEmpty()) { - m_ui->infoLabel->setType(Utils::InfoLabel::Information); + m_ui->infoLabel->setType(InfoLabel::Information); m_ui->infoLabel->setText(tr("Configuration passes sanity checks.")); m_ui->infoLabel->setFilled(false); } else { - m_ui->infoLabel->setType(Utils::InfoLabel::Error); + m_ui->infoLabel->setType(InfoLabel::Error); m_ui->infoLabel->setText(tr("%1").arg(errorMessage)); m_ui->infoLabel->setFilled(true); } diff --git a/src/plugins/cppeditor/clangdiagnosticconfigswidget.h b/src/plugins/cppeditor/clangdiagnosticconfigswidget.h index 3bbca8b777b..d8c89f78f07 100644 --- a/src/plugins/cppeditor/clangdiagnosticconfigswidget.h +++ b/src/plugins/cppeditor/clangdiagnosticconfigswidget.h @@ -17,12 +17,11 @@ class QTabWidget; QT_END_NAMESPACE namespace CppEditor { -class ClangDiagnosticConfig; -namespace Ui { -class ClangDiagnosticConfigsWidget; -class ClangBaseChecks; -} +class ClangDiagnosticConfig; +class ClangBaseChecksWidget; + +namespace Ui { class ClangDiagnosticConfigsWidget; } class ConfigsModel; @@ -64,8 +63,7 @@ private: ConfigsModel *m_configsModel = nullptr; QHash m_notAcceptedOptions; - std::unique_ptr m_clangBaseChecks; - QWidget *m_clangBaseChecksWidget = nullptr; + ClangBaseChecksWidget *m_clangBaseChecks = nullptr; }; } // CppEditor namespace diff --git a/src/plugins/cppeditor/cppeditor.qbs b/src/plugins/cppeditor/cppeditor.qbs index 28f1dc96ac1..11e13262bae 100644 --- a/src/plugins/cppeditor/cppeditor.qbs +++ b/src/plugins/cppeditor/cppeditor.qbs @@ -41,7 +41,6 @@ QtcPlugin { "builtineditordocumentprocessor.h", "builtinindexingsupport.cpp", "builtinindexingsupport.h", - "clangbasechecks.ui", // FIXME: Is this used at all? "clangdiagnosticconfig.cpp", "clangdiagnosticconfig.h", "clangdiagnosticconfigsmodel.cpp",