CppEditor: Inline cppquickfixsettingswidget.ui

Change-Id: I5110e71122cbcb349d46945da8e7d7fb3733b691
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
This commit is contained in:
hjk
2022-09-30 10:58:19 +02:00
committed by Alessandro Portale
parent cd68ffeac9
commit a2f0922334
6 changed files with 420 additions and 1147 deletions

View File

@@ -45433,7 +45433,7 @@ Output:
</message> </message>
</context> </context>
<context> <context>
<name>CppQuickFixSettingsWidget</name> <name>CppEditor::Internal::CppQuickFixSettingsWidget</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation type="vanished"></translation> <translation type="vanished"></translation>

View File

@@ -80,7 +80,7 @@ add_qtc_plugin(CppEditor
cppquickfixprojectsettingswidget.cpp cppquickfixprojectsettingswidget.h cppquickfixprojectsettingswidget.cpp cppquickfixprojectsettingswidget.h
cppquickfixsettings.cpp cppquickfixsettings.h cppquickfixsettings.cpp cppquickfixsettings.h
cppquickfixsettingspage.cpp cppquickfixsettingspage.h cppquickfixsettingspage.cpp cppquickfixsettingspage.h
cppquickfixsettingswidget.cpp cppquickfixsettingswidget.h cppquickfixsettingswidget.ui cppquickfixsettingswidget.cpp cppquickfixsettingswidget.h
cpprefactoringchanges.cpp cpprefactoringchanges.h cpprefactoringchanges.cpp cpprefactoringchanges.h
cppselectionchanger.cpp cppselectionchanger.h cppselectionchanger.cpp cppselectionchanger.h
cppsemanticinfo.h cppsemanticinfo.h

View File

@@ -175,7 +175,6 @@ QtcPlugin {
"cppquickfixsettingspage.h", "cppquickfixsettingspage.h",
"cppquickfixsettingswidget.cpp", "cppquickfixsettingswidget.cpp",
"cppquickfixsettingswidget.h", "cppquickfixsettingswidget.h",
"cppquickfixsettingswidget.ui",
"cppqtstyleindenter.cpp", "cppqtstyleindenter.cpp",
"cppqtstyleindenter.h", "cppqtstyleindenter.h",
"cpprefactoringchanges.cpp", "cpprefactoringchanges.cpp",

View File

@@ -3,52 +3,109 @@
#include "cppquickfixsettingswidget.h" #include "cppquickfixsettingswidget.h"
#include "cppquickfixsettings.h" #include "cppquickfixsettings.h"
#include "ui_cppquickfixsettingswidget.h"
#include <utils/layoutbuilder.h>
#include <QBoxLayout>
#include <QCheckBox>
#include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QListWidget>
#include <QPushButton>
#include <QRadioButton>
#include <QSpacerItem>
#include <QSpinBox>
#include <QtDebug> #include <QtDebug>
using namespace CppEditor; using namespace Utils;
using namespace CppEditor::Internal;
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) CppQuickFixSettingsWidget::CppQuickFixSettingsWidget(QWidget *parent)
: QWidget(parent) : QWidget(parent)
, ui(new ::Ui::CppQuickFixSettingsWidget) , m_typeSplitter("\\s*,\\s*")
, typeSplitter("\\s*,\\s*")
{ {
ui->setupUi(this); m_lines_getterOutsideClass = new LineCountSpinBox;
QObject::connect(ui->listWidget_customTemplates, m_lines_getterInCppFile = new LineCountSpinBox;
&QListWidget::currentItemChanged, m_lines_setterOutsideClass = new LineCountSpinBox;
this, m_lines_setterInCppFile = new LineCountSpinBox;
&CppQuickFixSettingsWidget::currentCustomItemChanged); auto functionLocationsGrid = new QWidget;
QObject::connect(ui->pushButton_addValueType, &QPushButton::clicked, [this] { auto ulLabel = [] (const QString &text) {
auto item = new QListWidgetItem("<type>", ui->valueTypes); QLabel *label = new QLabel(text);
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled QFont font = label->font();
| Qt::ItemNeverHasChildren); font.setUnderline(true);
ui->valueTypes->scrollToItem(item); label->setFont(font);
item->setSelected(true); return label;
}); };
QObject::connect(ui->pushButton_addCustomTemplate, &QPushButton::clicked, [this] {
auto item = new QListWidgetItem("<type>", 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("<type>");
});
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);
const QString toolTip = QCoreApplication::translate("CppQuickFixSettingsWidget", const QString placeHolderTect = tr("See tool tip for more information");
R"==(Use <name> for the variable const QString toolTip = tr(
R"==(Use <name> for the variable
Use <camel> for camel case Use <camel> for camel case
Use <snake> for snake case Use <snake> for snake case
Use <Name>, <Camel> and <Snake> for upper case Use <Name>, <Camel> and <Snake> for upper case
@@ -56,100 +113,251 @@ e.g. name = "m_test_foo_":
"set_<name> => "set_test_foo" "set_<name> => "set_test_foo"
"set<Name> => "setTest_foo" "set<Name> => "setTest_foo"
"set<Camel> => "setTestFoo")=="); "set<Camel> => "setTestFoo")==");
this->ui->lineEdit_resetName->setToolTip(toolTip);
this->ui->lineEdit_setterName->setToolTip(toolTip); m_lineEdit_getterAttribute = new QLineEdit;
this->ui->lineEdit_setterParameter->setToolTip(toolTip); m_lineEdit_getterAttribute->setPlaceholderText(tr("For example, [[nodiscard]]"));
this->ui->lineEdit_signalName->setToolTip(toolTip); m_lineEdit_getterName = new QLineEdit;
this->ui->lineEdit_getterName->setToolTip(toolTip); m_lineEdit_getterName->setPlaceholderText(placeHolderTect);
this->ui->lineEdit_memberVariableName->setToolTip(toolTip); 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<Name>"));
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<Name>"));
m_lineEdit_resetName->setToolTip(toolTip);
m_lineEdit_signalName = new QLineEdit;
m_lineEdit_signalName->setPlaceholderText(tr("Normally <name>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_<name>"));
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("<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>"));
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 <new> and <cur> to access the parameter and "
"current value. Use <type> to access the type and <T> "
"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<int>\". \"vector\" matches "
"\"std::pmr::vector<int>\" but not "
"\"std::optional<vector<int>>\""));
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("<type>", 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("<type>", 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("<type>");
});
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<QGridLayout*>(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 // connect controls to settingsChanged signal
auto then = [this] { auto then = [this] {
if (!isLoadingSettings) if (!m_isLoadingSettings)
emit settingsChanged(); 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() connect(m_lines_setterOutsideClass, &LineCountSpinBox::changed, then);
{ connect(m_lines_setterInCppFile, &LineCountSpinBox::changed, then);
delete ui; 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) void CppQuickFixSettingsWidget::loadSettings(CppQuickFixSettings *settings)
{ {
isLoadingSettings = true; m_isLoadingSettings = true;
ui->checkBox_getterCpp->setChecked(settings->getterInCppFileFrom > 0); m_lines_getterOutsideClass->setCount(settings->getterOutsideClassFrom);
ui->spinBox_getterCpp->setValue(std::abs(settings->getterInCppFileFrom)); m_lines_getterInCppFile->setCount(settings->getterInCppFileFrom);
ui->checkBox_setterCpp->setChecked(settings->setterInCppFileFrom > 0); m_lines_setterOutsideClass->setCount(settings->setterOutsideClassFrom);
ui->spinBox_setterCpp->setValue(std::abs(settings->setterInCppFileFrom)); m_lines_setterInCppFile->setCount(settings->setterInCppFileFrom);
ui->checkBox_getterOutside->setChecked(settings->getterOutsideClassFrom > 0); m_lineEdit_getterAttribute->setText(settings->getterAttributes);
ui->spinBox_getterOutside->setValue(std::abs(settings->getterOutsideClassFrom)); m_lineEdit_getterName->setText(settings->getterNameTemplate);
ui->checkBox_setterOutside->setChecked(settings->setterOutsideClassFrom > 0); m_lineEdit_setterName->setText(settings->setterNameTemplate);
ui->spinBox_setterOutside->setValue(std::abs(settings->setterOutsideClassFrom)); m_lineEdit_setterParameter->setText(settings->setterParameterNameTemplate);
ui->lineEdit_getterAttribute->setText(settings->getterAttributes);
ui->lineEdit_getterName->setText(settings->getterNameTemplate);
ui->lineEdit_setterName->setText(settings->setterNameTemplate);
ui->lineEdit_setterParameter->setText(settings->setterParameterNameTemplate);
switch (settings->cppFileNamespaceHandling) { switch (settings->cppFileNamespaceHandling) {
case CppQuickFixSettings::MissingNamespaceHandling::RewriteType: case CppQuickFixSettings::MissingNamespaceHandling::RewriteType:
ui->radioButton_rewriteTypes->setChecked(true); m_radioButton_rewriteTypes->setChecked(true);
break; break;
case CppQuickFixSettings::MissingNamespaceHandling::CreateMissing: case CppQuickFixSettings::MissingNamespaceHandling::CreateMissing:
ui->radioButton_generateMissingNamespace->setChecked(true); m_radioButton_generateMissingNamespace->setChecked(true);
break; break;
case CppQuickFixSettings::MissingNamespaceHandling::AddUsingDirective: case CppQuickFixSettings::MissingNamespaceHandling::AddUsingDirective:
ui->radioButton_addUsingnamespace->setChecked(true); m_radioButton_addUsingnamespace->setChecked(true);
break; break;
} }
ui->lineEdit_resetName->setText(settings->resetNameTemplate); m_lineEdit_resetName->setText(settings->resetNameTemplate);
ui->lineEdit_signalName->setText(settings->signalNameTemplate); m_lineEdit_signalName->setText(settings->signalNameTemplate);
ui->lineEdit_memberVariableName->setText(settings->memberVariableNameTemplate); m_lineEdit_memberVariableName->setText(settings->memberVariableNameTemplate);
ui->checkBox_setterSlots->setChecked(settings->setterAsSlot); m_checkBox_setterSlots->setChecked(settings->setterAsSlot);
ui->checkBox_signalWithNewValue->setChecked(settings->signalWithNewValue); m_checkBox_signalWithNewValue->setChecked(settings->signalWithNewValue);
ui->useAutoCheckBox->setChecked(settings->useAuto); m_useAutoCheckBox->setChecked(settings->useAuto);
ui->valueTypes->clear(); m_valueTypes->clear();
for (const auto &valueType : std::as_const(settings->valueTypes)) { 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 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled
| Qt::ItemNeverHasChildren); | Qt::ItemNeverHasChildren);
} }
ui->returnByConstRefCheckBox->setChecked(settings->returnByConstRef); m_returnByConstRefCheckBox->setChecked(settings->returnByConstRef);
ui->listWidget_customTemplates->clear(); m_listWidget_customTemplates->clear();
for (const auto &customTemplate : settings->customTemplates) { for (const auto &customTemplate : settings->customTemplates) {
auto item = new QListWidgetItem(customTemplate.types.join(", "), auto item = new QListWidgetItem(customTemplate.types.join(", "),
ui->listWidget_customTemplates); m_listWidget_customTemplates);
item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren); item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemNeverHasChildren);
item->setData(CustomDataRoles::Types, customTemplate.types.join(", ")); item->setData(CustomDataRoles::Types, customTemplate.types.join(", "));
item->setData(CustomDataRoles::Comparison, customTemplate.equalComparison); item->setData(CustomDataRoles::Comparison, customTemplate.equalComparison);
@@ -157,59 +365,55 @@ void CppQuickFixSettingsWidget::loadSettings(CppQuickFixSettings *settings)
item->setData(CustomDataRoles::ReturnType, customTemplate.returnType); item->setData(CustomDataRoles::ReturnType, customTemplate.returnType);
item->setData(CustomDataRoles::ReturnExpression, customTemplate.returnExpression); item->setData(CustomDataRoles::ReturnExpression, customTemplate.returnExpression);
} }
if (ui->listWidget_customTemplates->count() > 0) { if (m_listWidget_customTemplates->count() > 0) {
ui->listWidget_customTemplates->setCurrentItem(ui->listWidget_customTemplates->item(0)); m_listWidget_customTemplates->setCurrentItem(m_listWidget_customTemplates->item(0));
} }
this->setEnabled(true); this->setEnabled(true);
isLoadingSettings = false; m_isLoadingSettings = false;
} }
void CppQuickFixSettingsWidget::saveSettings(CppQuickFixSettings *settings) void CppQuickFixSettingsWidget::saveSettings(CppQuickFixSettings *settings)
{ {
// first write the current selected custom template back to the model // first write the current selected custom template back to the model
if (ui->listWidget_customTemplates->currentItem() != nullptr) { if (m_listWidget_customTemplates->currentItem() != nullptr) {
auto item = ui->listWidget_customTemplates->currentItem(); auto item = m_listWidget_customTemplates->currentItem();
auto list = ui->lineEdit_customTemplateTypes->text().split(typeSplitter, Qt::SkipEmptyParts); auto list = m_lineEdit_customTemplateTypes->text().split(m_typeSplitter, Qt::SkipEmptyParts);
item->setData(CustomDataRoles::Types, list); item->setData(CustomDataRoles::Types, list);
item->setData(CustomDataRoles::Comparison, ui->lineEdit_customTemplateComparison->text()); item->setData(CustomDataRoles::Comparison, m_lineEdit_customTemplateComparison->text());
item->setData(CustomDataRoles::Assignment, ui->lineEdit_customTemplateAssignment->text()); item->setData(CustomDataRoles::Assignment, m_lineEdit_customTemplateAssignment->text());
item->setData(CustomDataRoles::ReturnType, ui->lineEdit_customTemplateReturnType->text()); item->setData(CustomDataRoles::ReturnType, m_lineEdit_customTemplateReturnType->text());
item->setData(CustomDataRoles::ReturnExpression, item->setData(CustomDataRoles::ReturnExpression,
ui->lineEdit_customTemplateReturnExpression->text()); m_lineEdit_customTemplateReturnExpression->text());
} }
const auto preGetOut = ui->checkBox_getterOutside->isChecked() ? 1 : -1; settings->getterOutsideClassFrom = m_lines_getterOutsideClass->count();
settings->getterOutsideClassFrom = preGetOut * ui->spinBox_getterOutside->value(); settings->getterInCppFileFrom = m_lines_getterInCppFile->count();
const auto preSetOut = ui->checkBox_setterOutside->isChecked() ? 1 : -1; settings->setterOutsideClassFrom = m_lines_setterOutsideClass->count();
settings->setterOutsideClassFrom = preSetOut * ui->spinBox_setterOutside->value(); settings->setterInCppFileFrom = m_lines_setterInCppFile->count();
const auto preGetCpp = ui->checkBox_getterCpp->isChecked() ? 1 : -1; settings->setterParameterNameTemplate = m_lineEdit_setterParameter->text();
settings->getterInCppFileFrom = preGetCpp * ui->spinBox_getterCpp->value(); settings->setterAsSlot = m_checkBox_setterSlots->isChecked();
const auto preSetCpp = ui->checkBox_setterCpp->isChecked() ? 1 : -1; settings->signalWithNewValue = m_checkBox_signalWithNewValue->isChecked();
settings->setterInCppFileFrom = preSetCpp * ui->spinBox_setterCpp->value(); settings->getterAttributes = m_lineEdit_getterAttribute->text();
settings->setterParameterNameTemplate = ui->lineEdit_setterParameter->text(); settings->getterNameTemplate = m_lineEdit_getterName->text();
settings->setterAsSlot = ui->checkBox_setterSlots->isChecked(); settings->setterNameTemplate = m_lineEdit_setterName->text();
settings->signalWithNewValue = ui->checkBox_signalWithNewValue->isChecked(); settings->resetNameTemplate = m_lineEdit_resetName->text();
settings->getterAttributes = ui->lineEdit_getterAttribute->text(); settings->signalNameTemplate = m_lineEdit_signalName->text();
settings->getterNameTemplate = ui->lineEdit_getterName->text(); settings->memberVariableNameTemplate = m_lineEdit_memberVariableName->text();
settings->setterNameTemplate = ui->lineEdit_setterName->text(); if (m_radioButton_rewriteTypes->isChecked()) {
settings->resetNameTemplate = ui->lineEdit_resetName->text();
settings->signalNameTemplate = ui->lineEdit_signalName->text();
settings->memberVariableNameTemplate = ui->lineEdit_memberVariableName->text();
if (ui->radioButton_rewriteTypes->isChecked()) {
settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::RewriteType; settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::RewriteType;
} else if (ui->radioButton_addUsingnamespace->isChecked()) { } else if (m_radioButton_addUsingnamespace->isChecked()) {
settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::AddUsingDirective; settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::AddUsingDirective;
} else if (ui->radioButton_generateMissingNamespace->isChecked()) { } else if (m_radioButton_generateMissingNamespace->isChecked()) {
settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::CreateMissing; settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::CreateMissing;
} }
settings->useAuto = ui->useAutoCheckBox->isChecked(); settings->useAuto = m_useAutoCheckBox->isChecked();
settings->valueTypes.clear(); settings->valueTypes.clear();
for (int i = 0; i < ui->valueTypes->count(); ++i) { for (int i = 0; i < m_valueTypes->count(); ++i) {
settings->valueTypes << ui->valueTypes->item(i)->text(); settings->valueTypes << m_valueTypes->item(i)->text();
} }
settings->returnByConstRef = ui->returnByConstRefCheckBox->isChecked(); settings->returnByConstRef = m_returnByConstRefCheckBox->isChecked();
settings->customTemplates.clear(); settings->customTemplates.clear();
for (int i = 0; i < ui->listWidget_customTemplates->count(); ++i) { for (int i = 0; i < m_listWidget_customTemplates->count(); ++i) {
auto item = ui->listWidget_customTemplates->item(i); auto item = m_listWidget_customTemplates->item(i);
CppQuickFixSettings::CustomTemplate t; CppQuickFixSettings::CustomTemplate t;
t.types = item->data(CustomDataRoles::Types).toStringList(); t.types = item->data(CustomDataRoles::Types).toStringList();
t.equalComparison = item->data(CustomDataRoles::Comparison).toString(); t.equalComparison = item->data(CustomDataRoles::Comparison).toString();
@@ -224,33 +428,37 @@ void CppQuickFixSettingsWidget::currentCustomItemChanged(QListWidgetItem *newIte
QListWidgetItem *oldItem) QListWidgetItem *oldItem)
{ {
if (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(CustomDataRoles::Types, list);
oldItem->setData(Qt::DisplayRole, list.join(", ")); oldItem->setData(Qt::DisplayRole, list.join(", "));
oldItem->setData(CustomDataRoles::Comparison, ui->lineEdit_customTemplateComparison->text()); oldItem->setData(CustomDataRoles::Comparison, m_lineEdit_customTemplateComparison->text());
oldItem->setData(CustomDataRoles::Assignment, ui->lineEdit_customTemplateAssignment->text()); oldItem->setData(CustomDataRoles::Assignment, m_lineEdit_customTemplateAssignment->text());
oldItem->setData(CustomDataRoles::ReturnType, ui->lineEdit_customTemplateReturnType->text()); oldItem->setData(CustomDataRoles::ReturnType, m_lineEdit_customTemplateReturnType->text());
oldItem->setData(CustomDataRoles::ReturnExpression, oldItem->setData(CustomDataRoles::ReturnExpression,
ui->lineEdit_customTemplateReturnExpression->text()); m_lineEdit_customTemplateReturnExpression->text());
} }
this->ui->pushButton_removeCustomTemplate->setEnabled(newItem != nullptr); m_pushButton_removeCustomTemplate->setEnabled(newItem != nullptr);
this->ui->groupBox_customTemplate->setEnabled(newItem != nullptr); m_groupBox_customTemplate->setEnabled(newItem != nullptr);
if (newItem) { if (newItem) {
this->ui->lineEdit_customTemplateTypes->setText( m_lineEdit_customTemplateTypes->setText(
newItem->data(CustomDataRoles::Types).toStringList().join(", ")); newItem->data(CustomDataRoles::Types).toStringList().join(", "));
this->ui->lineEdit_customTemplateComparison->setText( m_lineEdit_customTemplateComparison->setText(
newItem->data(CustomDataRoles::Comparison).toString()); newItem->data(CustomDataRoles::Comparison).toString());
this->ui->lineEdit_customTemplateAssignment->setText( m_lineEdit_customTemplateAssignment->setText(
newItem->data(CustomDataRoles::Assignment).toString()); newItem->data(CustomDataRoles::Assignment).toString());
this->ui->lineEdit_customTemplateReturnType->setText( m_lineEdit_customTemplateReturnType->setText(
newItem->data(CustomDataRoles::ReturnType).toString()); newItem->data(CustomDataRoles::ReturnType).toString());
this->ui->lineEdit_customTemplateReturnExpression->setText( m_lineEdit_customTemplateReturnExpression->setText(
newItem->data(CustomDataRoles::ReturnExpression).toString()); newItem->data(CustomDataRoles::ReturnExpression).toString());
} else { } else {
this->ui->lineEdit_customTemplateTypes->setText(""); m_lineEdit_customTemplateTypes->setText("");
this->ui->lineEdit_customTemplateComparison->setText(""); m_lineEdit_customTemplateComparison->setText("");
this->ui->lineEdit_customTemplateAssignment->setText(""); m_lineEdit_customTemplateAssignment->setText("");
this->ui->lineEdit_customTemplateReturnType->setText(""); m_lineEdit_customTemplateReturnType->setText("");
this->ui->lineEdit_customTemplateReturnExpression->setText(""); m_lineEdit_customTemplateReturnExpression->setText("");
} }
} }
} // CppEditor::Internal
#include "cppquickfixsettingswidget.moc"

View File

@@ -1,25 +1,32 @@
// Copyright (C) 2020 Leander Schulten <Leander.Schulten@rwth-aachen.de> // Copyright (C) 2020 Leander Schulten <Leander.Schulten@rwth-aachen.de>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#ifndef CppQuickFixSettingsWidget_H #pragma once
#define CppQuickFixSettingsWidget_H
#include <QApplication>
#include <QRegularExpression> #include <QRegularExpression>
#include <QWidget> #include <QWidget>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QCheckBox;
class QGroupBox;
class QLineEdit;
class QListWidget;
class QListWidgetItem; class QListWidgetItem;
namespace Ui { class CppQuickFixSettingsWidget; } class QPushButton;
class QRadioButton;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace CppEditor { namespace CppEditor { class CppQuickFixSettings; }
class CppQuickFixSettings;
namespace Internal { namespace CppEditor::Internal {
class LineCountSpinBox;
class CppQuickFixSettingsWidget : public QWidget class CppQuickFixSettingsWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
enum CustomDataRoles { enum CustomDataRoles {
Types = Qt::UserRole, Types = Qt::UserRole,
Comparison, Comparison,
@@ -30,21 +37,46 @@ class CppQuickFixSettingsWidget : public QWidget
public: public:
explicit CppQuickFixSettingsWidget(QWidget *parent = nullptr); explicit CppQuickFixSettingsWidget(QWidget *parent = nullptr);
~CppQuickFixSettingsWidget();
void loadSettings(CppQuickFixSettings *settings); void loadSettings(CppQuickFixSettings *settings);
void saveSettings(CppQuickFixSettings *settings); void saveSettings(CppQuickFixSettings *settings);
private slots:
void currentCustomItemChanged(QListWidgetItem *newItem, QListWidgetItem *oldItem);
signals: signals:
void settingsChanged(); void settingsChanged();
private: private:
bool isLoadingSettings = false; void currentCustomItemChanged(QListWidgetItem *newItem, QListWidgetItem *oldItem);
Ui::CppQuickFixSettingsWidget *ui;
const QRegularExpression typeSplitter; 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 } // CppEditor::Internal
} // namespace CppEditor
#endif // CppQuickFixSettingsWidget_H

View File

@@ -1,966 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>CppQuickFixSettingsWidget</class>
<widget class="QWidget" name="CppQuickFixSettingsWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>641</width>
<height>1141</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Generated Function Locations</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<property name="horizontalSpacing">
<number>48</number>
</property>
<item row="3" column="2">
<widget class="QLabel" name="label_5">
<property name="text">
<string>Default</string>
</property>
</widget>
</item>
<item row="4" column="1" alignment="Qt::AlignHCenter">
<widget class="QWidget" name="widget2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item alignment="Qt::AlignRight">
<widget class="QCheckBox" name="checkBox_setterOutside">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_setterOutside" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_9">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_8">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>≥</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_setterOutside">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item alignment="Qt::AlignLeft">
<widget class="QLabel" name="label_7">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>lines</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="5" column="1" alignment="Qt::AlignHCenter">
<widget class="QWidget" name="widget3" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_6">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item alignment="Qt::AlignRight">
<widget class="QCheckBox" name="checkBox_setterCpp">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_setterCpp" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="group1">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_6">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>≥</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_setterCpp">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_14">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>lines</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="4" column="2" alignment="Qt::AlignHCenter">
<widget class="QWidget" name="widget" native="true">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>40</height>
</size>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item alignment="Qt::AlignRight">
<widget class="QCheckBox" name="checkBox_getterOutside">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_getterOutside" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_13">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>≥</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_getterOutside">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_9">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>lines</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="label_4">
<property name="text">
<string>Default</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Generate Getters</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<underline>true</underline>
</font>
</property>
<property name="text">
<string>Generate Setters</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_12">
<property name="text">
<string>In .cpp file:</string>
</property>
</widget>
</item>
<item row="5" column="2" alignment="Qt::AlignHCenter">
<widget class="QWidget" name="widget4" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item alignment="Qt::AlignRight">
<widget class="QCheckBox" name="checkBox_getterCpp">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_getterCpp" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_15">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>≥</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinBox_getterCpp">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimum">
<number>1</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_16">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>lines</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="3">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>1</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_11">
<property name="text">
<string>Outside class:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Inside class:</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_4">
<property name="title">
<string>Getter Setter Generation Properties</string>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="1" column="0">
<widget class="QLabel" name="label_18">
<property name="text">
<string>Getter name:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_setterParameter">
<property name="placeholderText">
<string>For example, new&lt;Name&gt;</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_19">
<property name="text">
<string>Setter name:</string>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QCheckBox" name="checkBox_setterSlots">
<property name="text">
<string>Setters should be slots</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="2">
<widget class="QCheckBox" name="checkBox_signalWithNewValue">
<property name="text">
<string>Generate signals with the new value as parameter</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_17">
<property name="text">
<string>Getter attributes:</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_28">
<property name="text">
<string>Setter parameter name:</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_30">
<property name="text">
<string>Reset name:</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_29">
<property name="text">
<string>Signal name:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_getterName">
<property name="placeholderText">
<string>See tool tip for more information</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLineEdit" name="lineEdit_resetName">
<property name="placeholderText">
<string>Normally reset&lt;Name&gt;</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_getterAttribute">
<property name="placeholderText">
<string>For example, [[nodiscard]]</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_setterName">
<property name="placeholderText">
<string>See tool tip for more information</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="lineEdit_signalName">
<property name="placeholderText">
<string>Normally &lt;name&gt;Changed</string>
</property>
</widget>
</item>
<item row="8" column="0">
<widget class="QLabel" name="label_31">
<property name="text">
<string>Member variable name:</string>
</property>
</widget>
</item>
<item row="8" column="1">
<widget class="QLineEdit" name="lineEdit_memberVariableName">
<property name="placeholderText">
<string>For example, m_&lt;name&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Missing Namespace Handling</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QRadioButton" name="radioButton_generateMissingNamespace">
<property name="text">
<string>Generate missing namespaces</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_addUsingnamespace">
<property name="text">
<string>Add &quot;using namespace ...&quot;</string>
</property>
</widget>
</item>
<item>
<widget class="QRadioButton" name="radioButton_rewriteTypes">
<property name="text">
<string>Rewrite types to match the existing namespaces</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="useAutoCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Uncheck this to make Qt Creator try to derive the type of expression in the &amp;quot;Assign to Local Variable&amp;quot; quickfix.&lt;/p&gt;&lt;p&gt;Note that this might fail for more complex types.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Use type &quot;auto&quot; when creating new variables</string>
</property>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_3">
<property name="title">
<string>Custom Getter Setter Templates</string>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_3" columnstretch="0,5">
<item row="1" column="1" rowspan="2">
<widget class="QGroupBox" name="groupBox_customTemplate">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="title">
<string>Template</string>
</property>
<property name="checkable">
<bool>false</bool>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<widget class="QLabel" name="label_22">
<property name="text">
<string>Types:</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="lineEdit_customTemplateTypes">
<property name="toolTip">
<string>Separate the types by comma.</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label_23">
<property name="text">
<string>Comparison:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit_customTemplateComparison"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_24">
<property name="text">
<string>Assignment:</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_customTemplateAssignment"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_25">
<property name="text">
<string>Return expression:</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_customTemplateReturnExpression"/>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_26">
<property name="text">
<string>Return type:</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_customTemplateReturnType"/>
</item>
<item row="5" column="0" colspan="2">
<widget class="QLabel" name="label_27">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Use &lt;new&gt; and &lt;cur&gt; to access the parameter and current value. Use &lt;type&gt; to access the type and &lt;T&gt; for the template parameter.</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0" rowspan="2">
<widget class="QWidget" name="widget_2" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>200</width>
<height>16777215</height>
</size>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QListWidget" name="listWidget_customTemplates">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_8">
<item>
<widget class="QPushButton" name="pushButton_addCustomTemplate">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_removeCustomTemplate">
<property name="text">
<string>Remove</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="1">
<widget class="QListWidget" name="valueTypes">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>150</height>
</size>
</property>
<property name="toolTip">
<string>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, &quot;int&quot; matches &quot;int32_t&quot; but not &quot;vector&lt;int&gt;&quot;. &quot;vector&quot; matches &quot;std::pmr::vector&lt;int&gt;&quot; but not &quot;std::optional&lt;vector&lt;int&gt;&gt;&quot;</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="minimumSize">
<size>
<width>212</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Value types:</string>
</property>
</widget>
</item>
<item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QPushButton" name="pushButton_addValueType">
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="pushButton_removeValueType">
<property name="text">
<string>Remove</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>
</layout>
</item>
<item>
<widget class="QCheckBox" name="returnByConstRefCheckBox">
<property name="text">
<string>Return non-value types by const reference</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections>
<connection>
<sender>checkBox_getterCpp</sender>
<signal>toggled(bool)</signal>
<receiver>widget_getterCpp</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>509</x>
<y>125</y>
</hint>
<hint type="destinationlabel">
<x>570</x>
<y>125</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_getterOutside</sender>
<signal>toggled(bool)</signal>
<receiver>widget_getterOutside</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>509</x>
<y>91</y>
</hint>
<hint type="destinationlabel">
<x>570</x>
<y>91</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_setterOutside</sender>
<signal>toggled(bool)</signal>
<receiver>widget_setterOutside</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>312</x>
<y>91</y>
</hint>
<hint type="destinationlabel">
<x>373</x>
<y>91</y>
</hint>
</hints>
</connection>
<connection>
<sender>checkBox_setterCpp</sender>
<signal>toggled(bool)</signal>
<receiver>widget_setterCpp</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>312</x>
<y>125</y>
</hint>
<hint type="destinationlabel">
<x>373</x>
<y>125</y>
</hint>
</hints>
</connection>
</connections>
</ui>