From a2f09223343706e934a0f4816e39c22274be45f0 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 30 Sep 2022 10:58:19 +0200 Subject: [PATCH] CppEditor: Inline cppquickfixsettingswidget.ui Change-Id: I5110e71122cbcb349d46945da8e7d7fb3733b691 Reviewed-by: Jarek Kobus --- share/qtcreator/translations/qtcreator_ja.ts | 2 +- src/plugins/cppeditor/CMakeLists.txt | 2 +- src/plugins/cppeditor/cppeditor.qbs | 1 - .../cppeditor/cppquickfixsettingswidget.cpp | 532 +++++++--- .../cppeditor/cppquickfixsettingswidget.h | 64 +- .../cppeditor/cppquickfixsettingswidget.ui | 966 ------------------ 6 files changed, 420 insertions(+), 1147 deletions(-) delete mode 100644 src/plugins/cppeditor/cppquickfixsettingswidget.ui diff --git a/share/qtcreator/translations/qtcreator_ja.ts b/share/qtcreator/translations/qtcreator_ja.ts index 419db4765f5..096213fec15 100644 --- a/share/qtcreator/translations/qtcreator_ja.ts +++ b/share/qtcreator/translations/qtcreator_ja.ts @@ -45433,7 +45433,7 @@ Output: - CppQuickFixSettingsWidget + CppEditor::Internal::CppQuickFixSettingsWidget Form フォーム diff --git a/src/plugins/cppeditor/CMakeLists.txt b/src/plugins/cppeditor/CMakeLists.txt index 98395e52b97..48c52c456cd 100644 --- a/src/plugins/cppeditor/CMakeLists.txt +++ b/src/plugins/cppeditor/CMakeLists.txt @@ -80,7 +80,7 @@ add_qtc_plugin(CppEditor cppquickfixprojectsettingswidget.cpp cppquickfixprojectsettingswidget.h cppquickfixsettings.cpp cppquickfixsettings.h cppquickfixsettingspage.cpp cppquickfixsettingspage.h - cppquickfixsettingswidget.cpp cppquickfixsettingswidget.h cppquickfixsettingswidget.ui + cppquickfixsettingswidget.cpp cppquickfixsettingswidget.h cpprefactoringchanges.cpp cpprefactoringchanges.h cppselectionchanger.cpp cppselectionchanger.h cppsemanticinfo.h diff --git a/src/plugins/cppeditor/cppeditor.qbs b/src/plugins/cppeditor/cppeditor.qbs index 5cb82d12a69..9329e4cc9ca 100644 --- a/src/plugins/cppeditor/cppeditor.qbs +++ b/src/plugins/cppeditor/cppeditor.qbs @@ -175,7 +175,6 @@ QtcPlugin { "cppquickfixsettingspage.h", "cppquickfixsettingswidget.cpp", "cppquickfixsettingswidget.h", - "cppquickfixsettingswidget.ui", "cppqtstyleindenter.cpp", "cppqtstyleindenter.h", "cpprefactoringchanges.cpp", diff --git a/src/plugins/cppeditor/cppquickfixsettingswidget.cpp b/src/plugins/cppeditor/cppquickfixsettingswidget.cpp index 59af9963ab2..a7949bc4e47 100644 --- a/src/plugins/cppeditor/cppquickfixsettingswidget.cpp +++ b/src/plugins/cppeditor/cppquickfixsettingswidget.cpp @@ -3,52 +3,109 @@ #include "cppquickfixsettingswidget.h" #include "cppquickfixsettings.h" -#include "ui_cppquickfixsettingswidget.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include -using namespace CppEditor; -using namespace CppEditor::Internal; +using namespace Utils; + +namespace CppEditor::Internal { + +class LineCountSpinBox : public QWidget +{ + Q_OBJECT + +public: + LineCountSpinBox(QWidget *parent = nullptr); + + int count() const; + void setCount(int count); + +signals: + void changed(); + +private: + void updateFields(); + + QCheckBox *m_checkBox; + QLabel *m_opLabel; + QSpinBox *m_spinBox; + QLabel *m_unitLabel; +}; + +LineCountSpinBox::LineCountSpinBox(QWidget *parent) + : QWidget(parent) +{ + m_checkBox = new QCheckBox; + m_opLabel = new QLabel(QCoreApplication::translate("CppEditor::Internal::CppQuickFixSettingsWidget", "\342\211\245")); + m_spinBox = new QSpinBox; + m_spinBox->setMinimum(1); + m_unitLabel = new QLabel(QCoreApplication::translate("CppEditor::Internal::CppQuickFixSettingsWidget", "lines")); + + using namespace Layouting; + Row { m_checkBox, m_opLabel, m_spinBox, m_unitLabel, }.attachTo(this, WithoutMargins); + + auto handleChange = [this] { + updateFields(); + emit changed(); + }; + connect(m_checkBox, &QCheckBox::toggled, handleChange); + connect(m_spinBox, &QSpinBox::valueChanged, handleChange); + + setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); +} + +int LineCountSpinBox::count() const +{ + return m_spinBox->value() * (m_checkBox->isChecked() ? 1 : -1); +} + +void LineCountSpinBox::setCount(int count) +{ + m_spinBox->setValue(std::abs(count)); + m_checkBox->setChecked(count > 0); + updateFields(); +} + +void LineCountSpinBox::updateFields() +{ + const bool enabled = m_checkBox->isChecked(); + m_opLabel->setEnabled(enabled); + m_spinBox->setEnabled(enabled); + m_unitLabel->setEnabled(enabled); +} CppQuickFixSettingsWidget::CppQuickFixSettingsWidget(QWidget *parent) : QWidget(parent) - , ui(new ::Ui::CppQuickFixSettingsWidget) - , typeSplitter("\\s*,\\s*") + , m_typeSplitter("\\s*,\\s*") { - ui->setupUi(this); - QObject::connect(ui->listWidget_customTemplates, - &QListWidget::currentItemChanged, - this, - &CppQuickFixSettingsWidget::currentCustomItemChanged); - QObject::connect(ui->pushButton_addValueType, &QPushButton::clicked, [this] { - auto item = new QListWidgetItem("", ui->valueTypes); - item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled - | Qt::ItemNeverHasChildren); - ui->valueTypes->scrollToItem(item); - item->setSelected(true); - }); - QObject::connect(ui->pushButton_addCustomTemplate, &QPushButton::clicked, [this] { - auto item = new QListWidgetItem("", ui->listWidget_customTemplates); - item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren); - ui->listWidget_customTemplates->scrollToItem(item); - ui->listWidget_customTemplates->setCurrentItem(item); - ui->lineEdit_customTemplateTypes->setText(""); - }); - QObject::connect(ui->pushButton_removeCustomTemplate, &QPushButton::clicked, [this] { - delete ui->listWidget_customTemplates->currentItem(); - }); - QObject::connect(ui->pushButton_removeValueType, &QPushButton::clicked, [this] { - delete ui->valueTypes->currentItem(); - }); - this->setEnabled(false); - this->ui->pushButton_removeCustomTemplate->setEnabled(false); - this->ui->groupBox_customTemplate->setEnabled(false); - this->ui->widget_getterCpp->setEnabled(false); - this->ui->widget_setterCpp->setEnabled(false); - this->ui->widget_getterOutside->setEnabled(false); - this->ui->widget_setterOutside->setEnabled(false); + m_lines_getterOutsideClass = new LineCountSpinBox; + m_lines_getterInCppFile = new LineCountSpinBox; + m_lines_setterOutsideClass = new LineCountSpinBox; + m_lines_setterInCppFile = new LineCountSpinBox; + auto functionLocationsGrid = new QWidget; + auto ulLabel = [] (const QString &text) { + QLabel *label = new QLabel(text); + QFont font = label->font(); + font.setUnderline(true); + label->setFont(font); + return label; + }; - const QString toolTip = QCoreApplication::translate("CppQuickFixSettingsWidget", - R"==(Use for the variable + const QString placeHolderTect = tr("See tool tip for more information"); + const QString toolTip = tr( +R"==(Use for the variable Use for camel case Use for snake case Use , and for upper case @@ -56,100 +113,251 @@ e.g. name = "m_test_foo_": "set_ => "set_test_foo" "set => "setTest_foo" "set => "setTestFoo")=="); - this->ui->lineEdit_resetName->setToolTip(toolTip); - this->ui->lineEdit_setterName->setToolTip(toolTip); - this->ui->lineEdit_setterParameter->setToolTip(toolTip); - this->ui->lineEdit_signalName->setToolTip(toolTip); - this->ui->lineEdit_getterName->setToolTip(toolTip); - this->ui->lineEdit_memberVariableName->setToolTip(toolTip); + + m_lineEdit_getterAttribute = new QLineEdit; + m_lineEdit_getterAttribute->setPlaceholderText(tr("For example, [[nodiscard]]")); + m_lineEdit_getterName = new QLineEdit; + m_lineEdit_getterName->setPlaceholderText(placeHolderTect); + m_lineEdit_getterName->setToolTip(toolTip); + m_lineEdit_setterName = new QLineEdit; + m_lineEdit_setterName->setPlaceholderText(placeHolderTect); + m_lineEdit_setterName->setToolTip(toolTip); + m_lineEdit_setterParameter = new QLineEdit; + m_lineEdit_setterParameter->setPlaceholderText(tr("For example, new")); + m_lineEdit_setterParameter->setToolTip(toolTip); + m_checkBox_setterSlots = new QCheckBox(tr("Setters should be slots")); + m_lineEdit_resetName = new QLineEdit; + m_lineEdit_resetName->setPlaceholderText(tr("Normally reset")); + m_lineEdit_resetName->setToolTip(toolTip); + m_lineEdit_signalName = new QLineEdit; + m_lineEdit_signalName->setPlaceholderText(tr("Normally Changed")); + m_lineEdit_signalName->setToolTip(toolTip); + m_checkBox_signalWithNewValue = new QCheckBox( + tr("Generate signals with the new value as parameter")); + m_lineEdit_memberVariableName = new QLineEdit; + m_lineEdit_memberVariableName->setPlaceholderText(tr("For example, m_")); + m_lineEdit_memberVariableName->setToolTip(toolTip); + + m_radioButton_generateMissingNamespace = new QRadioButton(tr("Generate missing namespaces")); + m_radioButton_addUsingnamespace = new QRadioButton(tr("Add \"using namespace ...\"")); + m_radioButton_rewriteTypes = new QRadioButton( + tr("Rewrite types to match the existing namespaces")); + + m_useAutoCheckBox = new QCheckBox(this); + m_useAutoCheckBox->setToolTip(tr("

Uncheck this to make Qt Creator try to " + "derive the type of expression in the "Assign to Local " + "Variable" quickfix.

Note that this might fail for " + "more complex types.

")); + m_useAutoCheckBox->setText(tr("Use type \"auto\" when creating new variables")); + + m_groupBox_customTemplate = new QGroupBox(tr("Template")); + m_groupBox_customTemplate->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum); + m_groupBox_customTemplate->setEnabled(false); + m_listWidget_customTemplates = new QListWidget; + m_listWidget_customTemplates->setMaximumWidth(200); + m_listWidget_customTemplates->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding); + + m_lineEdit_customTemplateTypes = new QLineEdit; + m_lineEdit_customTemplateTypes->setToolTip(tr("Separate the types by comma.")); + m_lineEdit_customTemplateComparison = new QLineEdit; + m_lineEdit_customTemplateAssignment = new QLineEdit; + m_lineEdit_customTemplateReturnExpression = new QLineEdit; + m_lineEdit_customTemplateReturnType = new QLineEdit; + auto customTemplateLabel = new QLabel(tr("Use and to access the parameter and " + "current value. Use to access the type and " + "for the template parameter.")); + customTemplateLabel->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + customTemplateLabel->setWordWrap(true); + + auto pushButton_addCustomTemplate = new QPushButton; + pushButton_addCustomTemplate->setText(tr("Add")); + m_pushButton_removeCustomTemplate = new QPushButton(tr("Remove")); + m_pushButton_removeCustomTemplate->setEnabled(false); + + m_valueTypes = new QListWidget(this); + m_valueTypes->setToolTip(tr("Normally arguments get passed by const reference. If the Type is " + "one of the following ones, the argument gets passed by value. " + "Namespaces and template arguments are removed. The real Type must " + "contain the given Type. For example, \"int\" matches \"int32_t\" " + "but not \"vector\". \"vector\" matches " + "\"std::pmr::vector\" but not " + "\"std::optional>\"")); + auto pushButton_addValueType = new QPushButton(tr("Add")); + auto pushButton_removeValueType = new QPushButton(tr("Remove")); + + m_returnByConstRefCheckBox = new QCheckBox(tr("Return non-value types by const reference")); + m_returnByConstRefCheckBox->setChecked(false); + + connect(m_listWidget_customTemplates, &QListWidget::currentItemChanged, + this, &CppQuickFixSettingsWidget::currentCustomItemChanged); + + connect(pushButton_addValueType, &QPushButton::clicked, [this] { + auto item = new QListWidgetItem("", m_valueTypes); + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled + | Qt::ItemNeverHasChildren); + m_valueTypes->scrollToItem(item); + item->setSelected(true); + }); + connect(pushButton_addCustomTemplate, &QPushButton::clicked, [this] { + auto item = new QListWidgetItem("", m_listWidget_customTemplates); + item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren); + m_listWidget_customTemplates->scrollToItem(item); + m_listWidget_customTemplates->setCurrentItem(item); + m_lineEdit_customTemplateTypes->setText(""); + }); + connect(m_pushButton_removeCustomTemplate, &QPushButton::clicked, [this] { + delete m_listWidget_customTemplates->currentItem(); + }); + connect(pushButton_removeValueType, &QPushButton::clicked, [this] { + delete m_valueTypes->currentItem(); + }); + + setEnabled(false); + + using namespace Layouting; + + Grid { + empty, ulLabel(tr("Generate Setters")), ulLabel(tr("Generate Getters")), br, + tr("Inside class:"), tr("Default"), tr("Default"), br, + tr("Outside class:"), m_lines_setterOutsideClass, m_lines_getterOutsideClass, br, + tr("In .cpp file:"), m_lines_setterInCppFile, m_lines_getterInCppFile, br, + }.attachTo(functionLocationsGrid, WithoutMargins); + + if (QGridLayout *gl = qobject_cast(functionLocationsGrid->layout())) + gl->setHorizontalSpacing(48); + + Form { + tr("Types:"), m_lineEdit_customTemplateTypes, br, + tr("Comparison:"), m_lineEdit_customTemplateComparison, br, + tr("Assignment:"), m_lineEdit_customTemplateAssignment, br, + tr("Return expression:"), m_lineEdit_customTemplateReturnExpression, br, + tr("Return type:"), m_lineEdit_customTemplateReturnType, br, + customTemplateLabel, br, + }.attachTo(m_groupBox_customTemplate); + + Column { + Group { + title(tr("Generated Function Locations")), + Row { functionLocationsGrid, st, }, + }, + Group { + title(tr("Getter Setter Generation Properties")), + Form { + tr("Getter attributes:"), m_lineEdit_getterAttribute, br, + tr("Getter name:"), m_lineEdit_getterName, br, + tr("Setter name:"), m_lineEdit_setterName, br, + tr("Setter parameter name:"), m_lineEdit_setterParameter, br, + m_checkBox_setterSlots, br, + tr("Reset name:"), m_lineEdit_resetName, br, + tr("Signal name:"), m_lineEdit_signalName, br, + m_checkBox_signalWithNewValue, br, + tr("Member variable name:"), m_lineEdit_memberVariableName, br, + }, + }, + Group { + title(tr("Missing Namespace Handling")), + Form { + m_radioButton_generateMissingNamespace, br, + m_radioButton_addUsingnamespace, br, + m_radioButton_rewriteTypes, br, + }, + }, + m_useAutoCheckBox, + Group { + title(tr("Custom Getter Setter Templates")), + Row { + Column { + m_listWidget_customTemplates, + Row { pushButton_addCustomTemplate, m_pushButton_removeCustomTemplate, }, + }, + m_groupBox_customTemplate, + }, + }, + Group { + title(tr("Value types:")), + Row { + m_valueTypes, + Column { pushButton_addValueType, pushButton_removeValueType, st, }, + }, + }, + m_returnByConstRefCheckBox, + }.attachTo(this); // connect controls to settingsChanged signal auto then = [this] { - if (!isLoadingSettings) + if (!m_isLoadingSettings) emit settingsChanged(); }; - QObject::connect(this->ui->checkBox_getterCpp, &QCheckBox::clicked, then); - QObject::connect(this->ui->checkBox_getterOutside, &QCheckBox::clicked, then); - QObject::connect(this->ui->checkBox_setterCpp, &QCheckBox::clicked, then); - QObject::connect(this->ui->checkBox_setterOutside, &QCheckBox::clicked, then); - QObject::connect(this->ui->checkBox_setterSlots, &QCheckBox::clicked, then); - QObject::connect(this->ui->checkBox_signalWithNewValue, &QCheckBox::clicked, then); - QObject::connect(this->ui->pushButton_addCustomTemplate, &QPushButton::clicked, then); - QObject::connect(this->ui->pushButton_removeCustomTemplate, &QPushButton::clicked, then); - QObject::connect(this->ui->pushButton_addValueType, &QPushButton::clicked, then); - QObject::connect(this->ui->pushButton_removeValueType, &QPushButton::clicked, then); - QObject::connect(this->ui->useAutoCheckBox, &QCheckBox::clicked, then); - QObject::connect(this->ui->valueTypes, &QListWidget::itemChanged, then); - QObject::connect(this->ui->returnByConstRefCheckBox, &QCheckBox::clicked, then); - QObject::connect(this->ui->lineEdit_customTemplateAssignment, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_customTemplateComparison, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_customTemplateReturnExpression, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_customTemplateReturnType, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_customTemplateTypes, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_getterAttribute, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_getterName, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_memberVariableName, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_resetName, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_setterName, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_setterParameter, &QLineEdit::textEdited, then); - QObject::connect(this->ui->lineEdit_signalName, &QLineEdit::textEdited, then); - QObject::connect(this->ui->spinBox_getterCpp, &QSpinBox::editingFinished, then); - QObject::connect(this->ui->spinBox_getterOutside, &QSpinBox::editingFinished, then); - QObject::connect(this->ui->spinBox_setterCpp, &QSpinBox::editingFinished, then); - QObject::connect(this->ui->spinBox_setterOutside, &QSpinBox::editingFinished, then); - QObject::connect(this->ui->radioButton_addUsingnamespace, &QRadioButton::clicked, then); - QObject::connect(this->ui->radioButton_generateMissingNamespace, &QRadioButton::clicked, then); - QObject::connect(this->ui->radioButton_rewriteTypes, &QRadioButton::clicked, then); -} -CppQuickFixSettingsWidget::~CppQuickFixSettingsWidget() -{ - delete ui; + connect(m_lines_setterOutsideClass, &LineCountSpinBox::changed, then); + connect(m_lines_setterInCppFile, &LineCountSpinBox::changed, then); + connect(m_lines_getterOutsideClass, &LineCountSpinBox::changed, then); + connect(m_lines_getterInCppFile, &LineCountSpinBox::changed, then); + connect(m_checkBox_setterSlots, &QCheckBox::clicked, then); + connect(m_checkBox_signalWithNewValue, &QCheckBox::clicked, then); + connect(pushButton_addCustomTemplate, &QPushButton::clicked, then); + connect(m_pushButton_removeCustomTemplate, &QPushButton::clicked, then); + connect(pushButton_addValueType, &QPushButton::clicked, then); + connect(pushButton_removeValueType, &QPushButton::clicked, then); + connect(m_useAutoCheckBox, &QCheckBox::clicked, then); + connect(m_valueTypes, &QListWidget::itemChanged, then); + connect(m_returnByConstRefCheckBox, &QCheckBox::clicked, then); + connect(m_lineEdit_customTemplateAssignment, &QLineEdit::textEdited, then); + connect(m_lineEdit_customTemplateComparison, &QLineEdit::textEdited, then); + connect(m_lineEdit_customTemplateReturnExpression, &QLineEdit::textEdited, then); + connect(m_lineEdit_customTemplateReturnType, &QLineEdit::textEdited, then); + connect(m_lineEdit_customTemplateTypes, &QLineEdit::textEdited, then); + connect(m_lineEdit_getterAttribute, &QLineEdit::textEdited, then); + connect(m_lineEdit_getterName, &QLineEdit::textEdited, then); + connect(m_lineEdit_memberVariableName, &QLineEdit::textEdited, then); + connect(m_lineEdit_resetName, &QLineEdit::textEdited, then); + connect(m_lineEdit_setterName, &QLineEdit::textEdited, then); + connect(m_lineEdit_setterParameter, &QLineEdit::textEdited, then); + connect(m_lineEdit_signalName, &QLineEdit::textEdited, then); + connect(m_radioButton_addUsingnamespace, &QRadioButton::clicked, then); + connect(m_radioButton_generateMissingNamespace, &QRadioButton::clicked, then); + connect(m_radioButton_rewriteTypes, &QRadioButton::clicked, then); } void CppQuickFixSettingsWidget::loadSettings(CppQuickFixSettings *settings) { - isLoadingSettings = true; - ui->checkBox_getterCpp->setChecked(settings->getterInCppFileFrom > 0); - ui->spinBox_getterCpp->setValue(std::abs(settings->getterInCppFileFrom)); - ui->checkBox_setterCpp->setChecked(settings->setterInCppFileFrom > 0); - ui->spinBox_setterCpp->setValue(std::abs(settings->setterInCppFileFrom)); - ui->checkBox_getterOutside->setChecked(settings->getterOutsideClassFrom > 0); - ui->spinBox_getterOutside->setValue(std::abs(settings->getterOutsideClassFrom)); - ui->checkBox_setterOutside->setChecked(settings->setterOutsideClassFrom > 0); - ui->spinBox_setterOutside->setValue(std::abs(settings->setterOutsideClassFrom)); - ui->lineEdit_getterAttribute->setText(settings->getterAttributes); - ui->lineEdit_getterName->setText(settings->getterNameTemplate); - ui->lineEdit_setterName->setText(settings->setterNameTemplate); - ui->lineEdit_setterParameter->setText(settings->setterParameterNameTemplate); + m_isLoadingSettings = true; + m_lines_getterOutsideClass->setCount(settings->getterOutsideClassFrom); + m_lines_getterInCppFile->setCount(settings->getterInCppFileFrom); + m_lines_setterOutsideClass->setCount(settings->setterOutsideClassFrom); + m_lines_setterInCppFile->setCount(settings->setterInCppFileFrom); + m_lineEdit_getterAttribute->setText(settings->getterAttributes); + m_lineEdit_getterName->setText(settings->getterNameTemplate); + m_lineEdit_setterName->setText(settings->setterNameTemplate); + m_lineEdit_setterParameter->setText(settings->setterParameterNameTemplate); switch (settings->cppFileNamespaceHandling) { case CppQuickFixSettings::MissingNamespaceHandling::RewriteType: - ui->radioButton_rewriteTypes->setChecked(true); + m_radioButton_rewriteTypes->setChecked(true); break; case CppQuickFixSettings::MissingNamespaceHandling::CreateMissing: - ui->radioButton_generateMissingNamespace->setChecked(true); + m_radioButton_generateMissingNamespace->setChecked(true); break; case CppQuickFixSettings::MissingNamespaceHandling::AddUsingDirective: - ui->radioButton_addUsingnamespace->setChecked(true); + m_radioButton_addUsingnamespace->setChecked(true); break; } - ui->lineEdit_resetName->setText(settings->resetNameTemplate); - ui->lineEdit_signalName->setText(settings->signalNameTemplate); - ui->lineEdit_memberVariableName->setText(settings->memberVariableNameTemplate); - ui->checkBox_setterSlots->setChecked(settings->setterAsSlot); - ui->checkBox_signalWithNewValue->setChecked(settings->signalWithNewValue); - ui->useAutoCheckBox->setChecked(settings->useAuto); - ui->valueTypes->clear(); + m_lineEdit_resetName->setText(settings->resetNameTemplate); + m_lineEdit_signalName->setText(settings->signalNameTemplate); + m_lineEdit_memberVariableName->setText(settings->memberVariableNameTemplate); + m_checkBox_setterSlots->setChecked(settings->setterAsSlot); + m_checkBox_signalWithNewValue->setChecked(settings->signalWithNewValue); + m_useAutoCheckBox->setChecked(settings->useAuto); + m_valueTypes->clear(); for (const auto &valueType : std::as_const(settings->valueTypes)) { - auto item = new QListWidgetItem(valueType, ui->valueTypes); + auto item = new QListWidgetItem(valueType, m_valueTypes); item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren); } - ui->returnByConstRefCheckBox->setChecked(settings->returnByConstRef); - ui->listWidget_customTemplates->clear(); + m_returnByConstRefCheckBox->setChecked(settings->returnByConstRef); + m_listWidget_customTemplates->clear(); for (const auto &customTemplate : settings->customTemplates) { auto item = new QListWidgetItem(customTemplate.types.join(", "), - ui->listWidget_customTemplates); + m_listWidget_customTemplates); item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren); item->setData(CustomDataRoles::Types, customTemplate.types.join(", ")); item->setData(CustomDataRoles::Comparison, customTemplate.equalComparison); @@ -157,59 +365,55 @@ void CppQuickFixSettingsWidget::loadSettings(CppQuickFixSettings *settings) item->setData(CustomDataRoles::ReturnType, customTemplate.returnType); item->setData(CustomDataRoles::ReturnExpression, customTemplate.returnExpression); } - if (ui->listWidget_customTemplates->count() > 0) { - ui->listWidget_customTemplates->setCurrentItem(ui->listWidget_customTemplates->item(0)); + if (m_listWidget_customTemplates->count() > 0) { + m_listWidget_customTemplates->setCurrentItem(m_listWidget_customTemplates->item(0)); } this->setEnabled(true); - isLoadingSettings = false; + m_isLoadingSettings = false; } void CppQuickFixSettingsWidget::saveSettings(CppQuickFixSettings *settings) { // first write the current selected custom template back to the model - if (ui->listWidget_customTemplates->currentItem() != nullptr) { - auto item = ui->listWidget_customTemplates->currentItem(); - auto list = ui->lineEdit_customTemplateTypes->text().split(typeSplitter, Qt::SkipEmptyParts); + if (m_listWidget_customTemplates->currentItem() != nullptr) { + auto item = m_listWidget_customTemplates->currentItem(); + auto list = m_lineEdit_customTemplateTypes->text().split(m_typeSplitter, Qt::SkipEmptyParts); item->setData(CustomDataRoles::Types, list); - item->setData(CustomDataRoles::Comparison, ui->lineEdit_customTemplateComparison->text()); - item->setData(CustomDataRoles::Assignment, ui->lineEdit_customTemplateAssignment->text()); - item->setData(CustomDataRoles::ReturnType, ui->lineEdit_customTemplateReturnType->text()); + item->setData(CustomDataRoles::Comparison, m_lineEdit_customTemplateComparison->text()); + item->setData(CustomDataRoles::Assignment, m_lineEdit_customTemplateAssignment->text()); + item->setData(CustomDataRoles::ReturnType, m_lineEdit_customTemplateReturnType->text()); item->setData(CustomDataRoles::ReturnExpression, - ui->lineEdit_customTemplateReturnExpression->text()); + m_lineEdit_customTemplateReturnExpression->text()); } - const auto preGetOut = ui->checkBox_getterOutside->isChecked() ? 1 : -1; - settings->getterOutsideClassFrom = preGetOut * ui->spinBox_getterOutside->value(); - const auto preSetOut = ui->checkBox_setterOutside->isChecked() ? 1 : -1; - settings->setterOutsideClassFrom = preSetOut * ui->spinBox_setterOutside->value(); - const auto preGetCpp = ui->checkBox_getterCpp->isChecked() ? 1 : -1; - settings->getterInCppFileFrom = preGetCpp * ui->spinBox_getterCpp->value(); - const auto preSetCpp = ui->checkBox_setterCpp->isChecked() ? 1 : -1; - settings->setterInCppFileFrom = preSetCpp * ui->spinBox_setterCpp->value(); - settings->setterParameterNameTemplate = ui->lineEdit_setterParameter->text(); - settings->setterAsSlot = ui->checkBox_setterSlots->isChecked(); - settings->signalWithNewValue = ui->checkBox_signalWithNewValue->isChecked(); - settings->getterAttributes = ui->lineEdit_getterAttribute->text(); - settings->getterNameTemplate = ui->lineEdit_getterName->text(); - settings->setterNameTemplate = ui->lineEdit_setterName->text(); - settings->resetNameTemplate = ui->lineEdit_resetName->text(); - settings->signalNameTemplate = ui->lineEdit_signalName->text(); - settings->memberVariableNameTemplate = ui->lineEdit_memberVariableName->text(); - if (ui->radioButton_rewriteTypes->isChecked()) { + settings->getterOutsideClassFrom = m_lines_getterOutsideClass->count(); + settings->getterInCppFileFrom = m_lines_getterInCppFile->count(); + settings->setterOutsideClassFrom = m_lines_setterOutsideClass->count(); + settings->setterInCppFileFrom = m_lines_setterInCppFile->count(); + settings->setterParameterNameTemplate = m_lineEdit_setterParameter->text(); + settings->setterAsSlot = m_checkBox_setterSlots->isChecked(); + settings->signalWithNewValue = m_checkBox_signalWithNewValue->isChecked(); + settings->getterAttributes = m_lineEdit_getterAttribute->text(); + settings->getterNameTemplate = m_lineEdit_getterName->text(); + settings->setterNameTemplate = m_lineEdit_setterName->text(); + settings->resetNameTemplate = m_lineEdit_resetName->text(); + settings->signalNameTemplate = m_lineEdit_signalName->text(); + settings->memberVariableNameTemplate = m_lineEdit_memberVariableName->text(); + if (m_radioButton_rewriteTypes->isChecked()) { settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::RewriteType; - } else if (ui->radioButton_addUsingnamespace->isChecked()) { + } else if (m_radioButton_addUsingnamespace->isChecked()) { settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::AddUsingDirective; - } else if (ui->radioButton_generateMissingNamespace->isChecked()) { + } else if (m_radioButton_generateMissingNamespace->isChecked()) { settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::CreateMissing; } - settings->useAuto = ui->useAutoCheckBox->isChecked(); + settings->useAuto = m_useAutoCheckBox->isChecked(); settings->valueTypes.clear(); - for (int i = 0; i < ui->valueTypes->count(); ++i) { - settings->valueTypes << ui->valueTypes->item(i)->text(); + for (int i = 0; i < m_valueTypes->count(); ++i) { + settings->valueTypes << m_valueTypes->item(i)->text(); } - settings->returnByConstRef = ui->returnByConstRefCheckBox->isChecked(); + settings->returnByConstRef = m_returnByConstRefCheckBox->isChecked(); settings->customTemplates.clear(); - for (int i = 0; i < ui->listWidget_customTemplates->count(); ++i) { - auto item = ui->listWidget_customTemplates->item(i); + for (int i = 0; i < m_listWidget_customTemplates->count(); ++i) { + auto item = m_listWidget_customTemplates->item(i); CppQuickFixSettings::CustomTemplate t; t.types = item->data(CustomDataRoles::Types).toStringList(); t.equalComparison = item->data(CustomDataRoles::Comparison).toString(); @@ -224,33 +428,37 @@ void CppQuickFixSettingsWidget::currentCustomItemChanged(QListWidgetItem *newIte QListWidgetItem *oldItem) { if (oldItem) { - auto list = ui->lineEdit_customTemplateTypes->text().split(typeSplitter, Qt::SkipEmptyParts); + auto list = m_lineEdit_customTemplateTypes->text().split(m_typeSplitter, Qt::SkipEmptyParts); oldItem->setData(CustomDataRoles::Types, list); oldItem->setData(Qt::DisplayRole, list.join(", ")); - oldItem->setData(CustomDataRoles::Comparison, ui->lineEdit_customTemplateComparison->text()); - oldItem->setData(CustomDataRoles::Assignment, ui->lineEdit_customTemplateAssignment->text()); - oldItem->setData(CustomDataRoles::ReturnType, ui->lineEdit_customTemplateReturnType->text()); + oldItem->setData(CustomDataRoles::Comparison, m_lineEdit_customTemplateComparison->text()); + oldItem->setData(CustomDataRoles::Assignment, m_lineEdit_customTemplateAssignment->text()); + oldItem->setData(CustomDataRoles::ReturnType, m_lineEdit_customTemplateReturnType->text()); oldItem->setData(CustomDataRoles::ReturnExpression, - ui->lineEdit_customTemplateReturnExpression->text()); + m_lineEdit_customTemplateReturnExpression->text()); } - this->ui->pushButton_removeCustomTemplate->setEnabled(newItem != nullptr); - this->ui->groupBox_customTemplate->setEnabled(newItem != nullptr); + m_pushButton_removeCustomTemplate->setEnabled(newItem != nullptr); + m_groupBox_customTemplate->setEnabled(newItem != nullptr); if (newItem) { - this->ui->lineEdit_customTemplateTypes->setText( + m_lineEdit_customTemplateTypes->setText( newItem->data(CustomDataRoles::Types).toStringList().join(", ")); - this->ui->lineEdit_customTemplateComparison->setText( + m_lineEdit_customTemplateComparison->setText( newItem->data(CustomDataRoles::Comparison).toString()); - this->ui->lineEdit_customTemplateAssignment->setText( + m_lineEdit_customTemplateAssignment->setText( newItem->data(CustomDataRoles::Assignment).toString()); - this->ui->lineEdit_customTemplateReturnType->setText( + m_lineEdit_customTemplateReturnType->setText( newItem->data(CustomDataRoles::ReturnType).toString()); - this->ui->lineEdit_customTemplateReturnExpression->setText( + m_lineEdit_customTemplateReturnExpression->setText( newItem->data(CustomDataRoles::ReturnExpression).toString()); } else { - this->ui->lineEdit_customTemplateTypes->setText(""); - this->ui->lineEdit_customTemplateComparison->setText(""); - this->ui->lineEdit_customTemplateAssignment->setText(""); - this->ui->lineEdit_customTemplateReturnType->setText(""); - this->ui->lineEdit_customTemplateReturnExpression->setText(""); + m_lineEdit_customTemplateTypes->setText(""); + m_lineEdit_customTemplateComparison->setText(""); + m_lineEdit_customTemplateAssignment->setText(""); + m_lineEdit_customTemplateReturnType->setText(""); + m_lineEdit_customTemplateReturnExpression->setText(""); } } + +} // CppEditor::Internal + + #include "cppquickfixsettingswidget.moc" diff --git a/src/plugins/cppeditor/cppquickfixsettingswidget.h b/src/plugins/cppeditor/cppquickfixsettingswidget.h index 59d8db64ece..71e3f366b6e 100644 --- a/src/plugins/cppeditor/cppquickfixsettingswidget.h +++ b/src/plugins/cppeditor/cppquickfixsettingswidget.h @@ -1,25 +1,32 @@ // Copyright (C) 2020 Leander Schulten // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -#ifndef CppQuickFixSettingsWidget_H -#define CppQuickFixSettingsWidget_H +#pragma once +#include #include #include QT_BEGIN_NAMESPACE +class QCheckBox; +class QGroupBox; +class QLineEdit; +class QListWidget; class QListWidgetItem; -namespace Ui { class CppQuickFixSettingsWidget; } +class QPushButton; +class QRadioButton; QT_END_NAMESPACE -namespace CppEditor { -class CppQuickFixSettings; +namespace CppEditor { class CppQuickFixSettings; } -namespace Internal { +namespace CppEditor::Internal { + +class LineCountSpinBox; class CppQuickFixSettingsWidget : public QWidget { Q_OBJECT + enum CustomDataRoles { Types = Qt::UserRole, Comparison, @@ -30,21 +37,46 @@ class CppQuickFixSettingsWidget : public QWidget public: explicit CppQuickFixSettingsWidget(QWidget *parent = nullptr); - ~CppQuickFixSettingsWidget(); + void loadSettings(CppQuickFixSettings *settings); void saveSettings(CppQuickFixSettings *settings); -private slots: - void currentCustomItemChanged(QListWidgetItem *newItem, QListWidgetItem *oldItem); + signals: void settingsChanged(); private: - bool isLoadingSettings = false; - Ui::CppQuickFixSettingsWidget *ui; - const QRegularExpression typeSplitter; + void currentCustomItemChanged(QListWidgetItem *newItem, QListWidgetItem *oldItem); + + bool m_isLoadingSettings = false; + const QRegularExpression m_typeSplitter; + + LineCountSpinBox *m_lines_getterOutsideClass; + LineCountSpinBox *m_lines_getterInCppFile; + LineCountSpinBox *m_lines_setterOutsideClass; + LineCountSpinBox *m_lines_setterInCppFile; + QLineEdit *m_lineEdit_setterParameter; + QCheckBox *m_checkBox_setterSlots; + QCheckBox *m_checkBox_signalWithNewValue; + QLineEdit *m_lineEdit_getterName; + QLineEdit *m_lineEdit_resetName; + QLineEdit *m_lineEdit_getterAttribute; + QLineEdit *m_lineEdit_setterName; + QLineEdit *m_lineEdit_signalName; + QLineEdit *m_lineEdit_memberVariableName; + QRadioButton *m_radioButton_generateMissingNamespace; + QRadioButton *m_radioButton_addUsingnamespace; + QRadioButton *m_radioButton_rewriteTypes; + QCheckBox *m_useAutoCheckBox; + QGroupBox *m_groupBox_customTemplate; + QLineEdit *m_lineEdit_customTemplateTypes; + QLineEdit *m_lineEdit_customTemplateComparison; + QLineEdit *m_lineEdit_customTemplateAssignment; + QLineEdit *m_lineEdit_customTemplateReturnExpression; + QLineEdit *m_lineEdit_customTemplateReturnType; + QListWidget *m_listWidget_customTemplates; + QPushButton *m_pushButton_removeCustomTemplate; + QListWidget *m_valueTypes; + QCheckBox *m_returnByConstRefCheckBox; }; -} // namespace Internal -} // namespace CppEditor - -#endif // CppQuickFixSettingsWidget_H +} // CppEditor::Internal diff --git a/src/plugins/cppeditor/cppquickfixsettingswidget.ui b/src/plugins/cppeditor/cppquickfixsettingswidget.ui deleted file mode 100644 index 828759003f0..00000000000 --- a/src/plugins/cppeditor/cppquickfixsettingswidget.ui +++ /dev/null @@ -1,966 +0,0 @@ - - - CppQuickFixSettingsWidget - - - - 0 - 0 - 641 - 1141 - - - - - - - Generated Function Locations - - - - 48 - - - - - Default - - - - - - - - 1 - - - 1 - - - 1 - - - 1 - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - 1 - - - - - - - - 0 - 0 - - - - lines - - - - - - - - - - - - - - 6 - - - 1 - - - 1 - - - 1 - - - 1 - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - 1 - - - - - - - - 0 - 0 - - - - lines - - - - - - - - - - - - - - 16777215 - 40 - - - - - 1 - - - 1 - - - 1 - - - 1 - - - - - - 0 - 0 - - - - - - - true - - - - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - 1 - - - - - - - - 0 - 0 - - - - lines - - - - - - - - - - - - - Default - - - - - - - - 0 - 0 - - - - - true - - - - Generate Getters - - - - - - - - 0 - 0 - - - - - true - - - - Generate Setters - - - - - - - In .cpp file: - - - - - - - - 1 - - - 1 - - - 1 - - - 1 - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - - - - - - - - 0 - 0 - - - - 1 - - - - - - - - 0 - 0 - - - - lines - - - - - - - - - - - - - Qt::Horizontal - - - - 1 - 0 - - - - - - - - Outside class: - - - - - - - Inside class: - - - - - - - - - - Getter Setter Generation Properties - - - - - - Getter name: - - - - - - - For example, new<Name> - - - - - - - Setter name: - - - - - - - Setters should be slots - - - - - - - Generate signals with the new value as parameter - - - - - - - Getter attributes: - - - - - - - Setter parameter name: - - - - - - - Reset name: - - - - - - - Signal name: - - - - - - - See tool tip for more information - - - - - - - Normally reset<Name> - - - - - - - For example, [[nodiscard]] - - - - - - - See tool tip for more information - - - - - - - Normally <name>Changed - - - - - - - Member variable name: - - - - - - - For example, m_<name> - - - - - - - - - - Missing Namespace Handling - - - - - - Generate missing namespaces - - - - - - - Add "using namespace ..." - - - - - - - Rewrite types to match the existing namespaces - - - - - - - - - - <html><head/><body><p>Uncheck this to make Qt Creator try to derive the type of expression in the &quot;Assign to Local Variable&quot; quickfix.</p><p>Note that this might fail for more complex types.</p></body></html> - - - Use type "auto" when creating new variables - - - - - - - Custom Getter Setter Templates - - - false - - - - - - - 0 - 0 - - - - Template - - - false - - - - - - Types: - - - - - - - Separate the types by comma. - - - - - - - Comparison: - - - - - - - - - - Assignment: - - - - - - - - - - Return expression: - - - - - - - - - - Return type: - - - - - - - - - - - 0 - 0 - - - - Use <new> and <cur> to access the parameter and current value. Use <type> to access the type and <T> for the template parameter. - - - true - - - - - - - - - - - 0 - 0 - - - - - 200 - 16777215 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - true - - - - 0 - 0 - - - - - - - - - - Add - - - - - - - Remove - - - - - - - - - - - - - - - - - - 0 - 0 - - - - - 16777215 - 150 - - - - Normally arguments get passed by const reference. If the Type is one of the following ones, the argument gets passed by value. Namespaces and template arguments are removed. The real Type must contain the given Type. For example, "int" matches "int32_t" but not "vector<int>". "vector" matches "std::pmr::vector<int>" but not "std::optional<vector<int>>" - - - - - - - - 212 - 0 - - - - Value types: - - - - - - - - - Add - - - - - - - Remove - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - Return non-value types by const reference - - - false - - - - - - - - - checkBox_getterCpp - toggled(bool) - widget_getterCpp - setEnabled(bool) - - - 509 - 125 - - - 570 - 125 - - - - - checkBox_getterOutside - toggled(bool) - widget_getterOutside - setEnabled(bool) - - - 509 - 91 - - - 570 - 91 - - - - - checkBox_setterOutside - toggled(bool) - widget_setterOutside - setEnabled(bool) - - - 312 - 91 - - - 373 - 91 - - - - - checkBox_setterCpp - toggled(bool) - widget_setterCpp - setEnabled(bool) - - - 312 - 125 - - - 373 - 125 - - - - -