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>
</context>
<context>
<name>CppQuickFixSettingsWidget</name>
<name>CppEditor::Internal::CppQuickFixSettingsWidget</name>
<message>
<source>Form</source>
<translation type="vanished"></translation>

View File

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

View File

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

View File

@@ -3,51 +3,108 @@
#include "cppquickfixsettingswidget.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>
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("<type>", 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("<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);
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",
const QString placeHolderTect = tr("See tool tip for more information");
const QString toolTip = tr(
R"==(Use <name> for the variable
Use <camel> for camel case
Use <snake> for snake case
@@ -56,100 +113,251 @@ e.g. name = "m_test_foo_":
"set_<name> => "set_test_foo"
"set<Name> => "setTest_foo"
"set<Camel> => "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<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
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"

View File

@@ -1,25 +1,32 @@
// 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
#ifndef CppQuickFixSettingsWidget_H
#define CppQuickFixSettingsWidget_H
#pragma once
#include <QApplication>
#include <QRegularExpression>
#include <QWidget>
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

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>