CppEditor: Inline clangbasechecks.ui

Change-Id: I630f794377936139eade42f56a8bd46175e84143
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2022-09-30 09:45:01 +02:00
parent 8a645e8a1d
commit b1e8772848
5 changed files with 61 additions and 80 deletions

View File

@@ -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

View File

@@ -1,48 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CppEditor::ClangBaseChecks</class>
<widget class="QWidget" name="CppEditor::ClangBaseChecks">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>665</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>For appropriate options, consult the GCC or Clang manual pages or the &lt;a href=&quot;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html&quot;&gt;GCC online documentation&lt;/a&gt;.</string>
</property>
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="useFlagsFromBuildSystemCheckBox">
<property name="text">
<string>Use diagnostic flags from build system</string>
</property>
</widget>
</item>
<item>
<widget class="CppEditor::WrappableLineEdit" name="diagnosticOptionsTextEdit"/>
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>CppEditor::WrappableLineEdit</class>
<extends>QLineEdit</extends>
<header location="global">cppeditor/wrappablelineedit.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections/>
</ui>

View File

@@ -5,19 +5,25 @@
#include "clangdiagnosticconfigsmodel.h"
#include "ui_clangdiagnosticconfigswidget.h"
#include "ui_clangbasechecks.h"
#include "wrappablelineedit.h"
#include <utils/environment.h>
#include <utils/executeondestruction.h>
#include <utils/layoutbuilder.h>
#include <utils/stringutils.h>
#include <utils/treemodel.h>
#include <QApplication>
#include <QCheckBox>
#include <QInputDialog>
#include <QLabel>
#include <QPushButton>
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<Utils::TreeItem, GroupNode, ConfigNode>
class ConfigsModel : public TreeModel<TreeItem, GroupNode, ConfigNode>
{
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 <a href=\"https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html\">"
"GCC online documentation</a>."));
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<CppEditor::Ui::ClangBaseChecks>();
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<ConfigNode *>(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);
}

View File

@@ -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<Utils::Id, QString> m_notAcceptedOptions;
std::unique_ptr<Ui::ClangBaseChecks> m_clangBaseChecks;
QWidget *m_clangBaseChecksWidget = nullptr;
ClangBaseChecksWidget *m_clangBaseChecks = nullptr;
};
} // CppEditor namespace

View File

@@ -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",