CppEditor: Use JS-based transformations

... when generating member variables, getters, setters etc.
This provides more flexibility than the custom template syntax used so
far and is also less idiosyncratic.

Fixes: QTCREATORBUG-32302
Change-Id: I1640809e5cba6ad5b90cd4d6ee1871501b77c048
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2025-01-15 17:07:04 +01:00
parent 317adcbf81
commit d14d25ad17
6 changed files with 82 additions and 145 deletions

View File

@@ -38,16 +38,17 @@ const char QUICK_FIX_SETTING_GETTER_IN_CPP_FILE_FROM[] = "GettersInCppFileFrom";
const char QUICK_FIX_SETTING_SETTER_OUTSIDE_CLASS_FROM[] = "SettersOutsideClassFrom";
const char QUICK_FIX_SETTING_SETTER_IN_CPP_FILE_FROM[] = "SettersInCppFileFrom";
const char QUICK_FIX_SETTING_GETTER_ATTRIBUTES[] = "GetterAttributes";
const char QUICK_FIX_SETTING_GETTER_NAME_TEMPLATE[] = "GetterNameTemplate";
const char QUICK_FIX_SETTING_SETTER_NAME_TEMPLATE[] = "SetterNameTemplate";
const char QUICK_FIX_SETTING_SIGNAL_NAME_TEMPLATE[] = "SignalNameTemplate";
const char QUICK_FIX_SETTING_RESET_NAME_TEMPLATE[] = "ResetNameTemplate";
const char QUICK_FIX_SETTING_GETTER_NAME_TEMPLATE[] = "GetterNameTemplateV2";
const char QUICK_FIX_SETTING_SETTER_NAME_TEMPLATE[] = "SetterNameTemplateV2";
const char QUICK_FIX_SETTING_SIGNAL_NAME_TEMPLATE[] = "SignalNameTemplateV2";
const char QUICK_FIX_SETTING_RESET_NAME_TEMPLATE[] = "ResetNameTemplateV2";
const char QUICK_FIX_SETTING_SIGNAL_WITH_NEW_VALUE[] = "SignalWithNewValue";
const char QUICK_FIX_SETTING_SETTER_AS_SLOT[] = "SetterAsSlot";
const char QUICK_FIX_SETTING_SETTER_PARAMETER_NAME[] = "SetterParameterName";
const char QUICK_FIX_SETTING_SETTER_PARAMETER_NAME[] = "SetterParameterNameV2";
const char QUICK_FIX_SETTING_CPP_FILE_NAMESPACE_HANDLING[] = "CppFileNamespaceHandling";
const char QUICK_FIX_SETTING_USE_AUTO[] = "UseAutoInAssignToVar";
const char QUICK_FIX_SETTING_MEMBER_VARIABEL_NAME_TEMPLATE[] = "MemberVariableNameTemplate";
const char QUICK_FIX_SETTING_MEMBER_VARIABLE_NAME_TEMPLATE[] = "MemberVariableNameTemplateV2";
const char QUICK_FIX_SETTING_REVERSE_MEMBER_VARIABLE_NAME_TEMPLATE[] = "ReverseMemberVariableNameTemplate";
const char QUICK_FIX_SETTING_VALUE_TYPES[] = "ValueTypes";
const char QUICK_FIX_SETTING_RETURN_BY_CONST_REF[] = "ReturnNonValueTypesByConstRef";
const char QUICK_FIX_SETTING_CUSTOM_TEMPLATES[] = "CustomTemplate";

View File

@@ -131,15 +131,11 @@ static QString memberBaseName(const QString &name)
};
QString baseName = name;
CppQuickFixSettings *settings = CppQuickFixProjectsSettings::getQuickFixSettings(
const CppQuickFixSettings * const settings = CppQuickFixProjectsSettings::getQuickFixSettings(
ProjectExplorer::ProjectTree::currentProject());
const QString &nameTemplate = settings->memberVariableNameTemplate;
const QString prefix = nameTemplate.left(nameTemplate.indexOf('<'));
const QString postfix = nameTemplate.mid(nameTemplate.lastIndexOf('>') + 1);
if (name.startsWith(prefix) && name.endsWith(postfix)) {
const QString base = name.mid(prefix.length(), name.length() - postfix.length());
if (validName(base))
return base;
if (!settings->nameFromMemberVariableTemplate.isEmpty()) {
return CppQuickFixSettings::replaceNamePlaceholders(
settings->nameFromMemberVariableTemplate, name);
}
// Remove leading and trailing "_"
@@ -2863,8 +2859,7 @@ private slots:
QuickFixSettings s;
s->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::CreateMissing;
s->setterParameterNameTemplate = "value";
s->getterNameTemplate = "get<Name>";
s->setterParameterNameTemplate = "\"value\"";
s->setterInCppFileFrom = 1;
s->getterInCppFileFrom = 1;
GenerateGetterSetter factory;
@@ -2986,7 +2981,7 @@ private slots:
QuickFixSettings s;
s->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::AddUsingDirective;
s->setterParameterNameTemplate = "value";
s->setterParameterNameTemplate = "\"value\"";
s->setterInCppFileFrom = 1;
if (std::strstr(QTest::currentDataTag(), "unnamed nested") != nullptr)
@@ -3118,7 +3113,7 @@ private slots:
QuickFixSettings s;
s->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::RewriteType;
s->setterParameterNameTemplate = "value";
s->setterParameterNameTemplate = "\"value\"";
s->setterInCppFileFrom = 1;
if (std::strstr(QTest::currentDataTag(), "unnamed nested") != nullptr)
@@ -3306,12 +3301,20 @@ private slots:
QuickFixSettings s;
s->setterInCppFileFrom = 0;
s->getterInCppFileFrom = 0;
s->setterNameTemplate = "Seet_<Name>";
s->getterNameTemplate = "give_me_<snake>";
s->signalNameTemplate = "new<Camel>Value";
s->setterParameterNameTemplate = "New_<Snake>";
s->resetNameTemplate = "set_<camel>_toDefault";
s->memberVariableNameTemplate = "mem_<name>";
s->setterNameTemplate = R"js("Seet_" + name[0].toUpperCase() + name.slice(1))js";
s->getterNameTemplate = R"js("give_me_" + name.replace(/([A-Z])/g,
function(v) { return "_" + v.toLowerCase(); }))js";
s->signalNameTemplate = R"js("new" + name[0].toUpperCase()
+ name.slice(1).replace(/_([a-z])/g, function(v) { return v.slice(1).toUpperCase(); })
+ "Value")js";
s->setterParameterNameTemplate = R"js("New_" + name[0].toUpperCase()
+ name.slice(1).replace(/([A-Z])/g,
"_" + "$1").replace(/(_[a-z])/g, function(v) { return v.toUpperCase(); }))js";
s->resetNameTemplate = R"js("set_" + name.replace(/_([a-z])/g,
function(v) { return v.slice(1).toUpperCase(); }) + "_toDefault")js";
s->memberVariableNameTemplate = R"js("mem_" + name)js";
if (QByteArray(QTest::currentDataTag()) == "create methods with given member variable")
s->nameFromMemberVariableTemplate = R"js(name.slice(4))js";
if (operation == 0) {
InsertQtPropertyMembers factory;
QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), operation);
@@ -3572,7 +3575,6 @@ private slots:
QuickFixSettings s;
s->setterInCppFileFrom = 0;
s->getterInCppFileFrom = 0;
s->getterNameTemplate = "get<Name>";
s->valueTypes << "Value";
s->returnByConstRef = true;
@@ -3644,7 +3646,6 @@ void Foo::setBar(const custom<N2::test> &newBar)
QuickFixSettings s;
s->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::AddUsingDirective;
s->getterNameTemplate = "get<Name>";
s->getterInCppFileFrom = 1;
s->signalWithNewValue = true;
CppQuickFixSettings::CustomTemplate t;
@@ -3684,7 +3685,7 @@ void Foo::setBar(const custom<N2::test> &newBar)
testDocuments << CppTestDocument::create("file.h", original, expected);
QuickFixSettings s;
s->setterParameterNameTemplate = "<name>";
s->setterParameterNameTemplate = "name";
s->setterInCppFileFrom = 0;
GenerateGetterSetter factory;
@@ -4023,7 +4024,8 @@ void Foo::setBar(const custom<N2::test> &newBar)
QFETCH(QByteArray, expected);
QuickFixSettings s;
s->setterParameterNameTemplate = "<name>";
s->getterNameTemplate = "name";
s->setterParameterNameTemplate = "name";
s->getterInCppFileFrom = 1;
s->setterInCppFileFrom = 1;
@@ -4069,7 +4071,6 @@ void Foo::setBar(const custom<N2::test> &newBar)
QuickFixSettings s;
s->getterInCppFileFrom = 1;
s->getterNameTemplate = "get<Name>";
GenerateGetterSetter factory;
QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), 1);
}
@@ -4110,7 +4111,7 @@ void Foo::setBar(const custom<N2::test> &newBar)
testDocuments << CppTestDocument::create("file.cpp", original, expected);
s->setterInCppFileFrom = 1;
s->setterParameterNameTemplate = "value";
s->setterParameterNameTemplate = "\"value\"";
GenerateGetterSetter factory;
QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), 0);
@@ -4123,7 +4124,8 @@ void Foo::setBar(const custom<N2::test> &newBar)
QByteArray expected;
QuickFixSettings s;
s->setterInCppFileFrom = 1;
s->setterParameterNameTemplate = "value";
s->getterNameTemplate = "name";
s->setterParameterNameTemplate = "\"value\"";
// Header File
original = R"(
@@ -4213,8 +4215,7 @@ void Foo::setBar(const custom<N2::test> &newBar)
QuickFixSettings s;
s->setterOutsideClassFrom = 1;
s->getterOutsideClassFrom = 1;
s->setterParameterNameTemplate = "value";
s->getterNameTemplate = "get<Name>";
s->setterParameterNameTemplate = "\"value\"";
GenerateGetterSetter factory;
QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), 4);
@@ -4251,7 +4252,7 @@ void Foo::setBar(const custom<N2::test> &newBar)
QuickFixSettings s;
s->setterOutsideClassFrom = 1;
s->setterParameterNameTemplate = "value";
s->setterParameterNameTemplate = "\"value\"";
GenerateGetterSetter factory;
QuickFixOperationTest(testDocuments, &factory, ProjectExplorer::HeaderPaths(), 0);
@@ -4288,7 +4289,6 @@ void Foo::setBar(const custom<N2::test> &newBar)
QuickFixSettings s;
s->getterOutsideClassFrom = 0;
s->getterInCppFileFrom = 0;
s->getterNameTemplate = "get<Name>";
s->returnByConstRef = true;
GenerateGetterSetter factory;
@@ -4448,8 +4448,7 @@ private slots:
QFETCH(QByteArray, expected);
QuickFixSettings s;
s->getterNameTemplate = "get<Name>";
s->setterParameterNameTemplate = "value";
s->setterParameterNameTemplate = "\"value\"";
s->setterOutsideClassFrom = 1;
s->getterOutsideClassFrom = 1;
s->returnByConstRef = true;
@@ -4613,7 +4612,7 @@ private slots:
QuickFixSettings s;
s->setterAsSlot = true;
s->setterInCppFileFrom = 0;
s->setterParameterNameTemplate = "<name>";
s->setterParameterNameTemplate = "name";
s->signalWithNewValue = true;
InsertQtPropertyMembers factory;

View File

@@ -7,6 +7,7 @@
#include "../cppeditorconstants.h"
#include <coreplugin/icore.h>
#include <coreplugin/jsexpander.h>
#include <utils/qtcsettings.h>
@@ -25,17 +26,7 @@ CppQuickFixSettings::CppQuickFixSettings(bool loadGlobalSettings)
void CppQuickFixSettings::loadGlobalSettings()
{
// TODO remove the conversion of the old setting preferGetterNameWithoutGetPrefix of the
// CppCodeStyleSettings in 4.16 (also remove the member preferGetterNameWithoutGetPrefix)
getterNameTemplate = "__dummy";
loadSettingsFrom(Core::ICore::settings());
if (getterNameTemplate == "__dummy") {
// there was no saved property for getterNameTemplate
if (CppCodeStyleSettings::currentGlobalCodeStyle().preferGetterNameWithoutGetPrefix)
getterNameTemplate = "<name>";
else
getterNameTemplate = "get<Name>";
}
}
void CppQuickFixSettings::loadSettingsFrom(QtcSettings *s)
@@ -81,9 +72,13 @@ void CppQuickFixSettings::loadSettingsFrom(QtcSettings *s)
.toInt());
useAuto = s->value(Constants::QUICK_FIX_SETTING_USE_AUTO, def.useAuto).toBool();
memberVariableNameTemplate = s->value(Constants::QUICK_FIX_SETTING_MEMBER_VARIABEL_NAME_TEMPLATE,
memberVariableNameTemplate = s->value(Constants::QUICK_FIX_SETTING_MEMBER_VARIABLE_NAME_TEMPLATE,
def.memberVariableNameTemplate)
.toString();
nameFromMemberVariableTemplate
= s->value(Constants::QUICK_FIX_SETTING_REVERSE_MEMBER_VARIABLE_NAME_TEMPLATE,
def.nameFromMemberVariableTemplate)
.toString();
valueTypes = s->value(Constants::QUICK_FIX_SETTING_VALUE_TYPES, def.valueTypes).toStringList();
returnByConstRef = s->value(Constants::QUICK_FIX_SETTING_RETURN_BY_CONST_REF,
def.returnByConstRef).toBool();
@@ -151,9 +146,12 @@ void CppQuickFixSettings::saveSettingsTo(QtcSettings *s)
s->setValueWithDefault(Constants::QUICK_FIX_SETTING_CPP_FILE_NAMESPACE_HANDLING,
int(cppFileNamespaceHandling),
int(def.cppFileNamespaceHandling));
s->setValueWithDefault(Constants::QUICK_FIX_SETTING_MEMBER_VARIABEL_NAME_TEMPLATE,
s->setValueWithDefault(Constants::QUICK_FIX_SETTING_MEMBER_VARIABLE_NAME_TEMPLATE,
memberVariableNameTemplate,
def.memberVariableNameTemplate);
s->setValueWithDefault(Constants::QUICK_FIX_SETTING_REVERSE_MEMBER_VARIABLE_NAME_TEMPLATE,
nameFromMemberVariableTemplate,
def.nameFromMemberVariableTemplate);
s->setValueWithDefault(Constants::QUICK_FIX_SETTING_SETTER_PARAMETER_NAME,
setterParameterNameTemplate,
def.setterParameterNameTemplate);
@@ -224,84 +222,16 @@ void CppQuickFixSettings::setDefaultSettings()
customTemplates.push_back(unique_ptr);
}
QString toUpperCamelCase(const QString &s)
{
auto parts = s.split('_');
if (parts.size() == 1)
return s;
QString camel;
camel.reserve(s.length() - parts.size() + 1);
for (const auto &part : parts) {
camel += part[0].toUpper();
camel += part.mid(1);
}
return camel;
}
QString toSnakeCase(const QString &s, bool upperSnakeCase)
{
QString snake;
snake.reserve(s.length() + 5);
if (upperSnakeCase)
snake += s[0].toUpper();
else
snake += s[0].toLower();
for (int i = 1; i < s.length(); ++i) {
if (s[i].isUpper() && s[i - 1].isLower()) {
snake += '_';
if (upperSnakeCase)
snake += s[i].toUpper();
else
snake += s[i].toLower();
} else {
if (s[i - 1] == '_') {
if (upperSnakeCase)
snake += s[i].toUpper();
else
snake += s[i].toLower();
} else {
snake += s[i];
}
}
}
return snake;
}
QString CppQuickFixSettings::replaceNamePlaceholders(const QString &nameTemplate,
const QString &name)
{
const int start = nameTemplate.indexOf("<");
const int end = nameTemplate.indexOf(">");
if (start < 0 || end < 0)
return nameTemplate;
const auto before = nameTemplate.left(start);
const auto after = nameTemplate.right(nameTemplate.length() - end - 1);
if (name.isEmpty())
return before + after;
// const auto charBefore = start >= 1 ? nameTemplate.at(start - 1) : QChar{};
const auto nameType = nameTemplate.mid(start + 1, end - start - 1);
if (nameType == "name") {
return before + name + after;
} else if (nameType == "Name") {
return before + name.at(0).toUpper() + name.mid(1) + after;
} else if (nameType == "camel") {
auto camel = toUpperCamelCase(name);
camel.data()[0] = camel.data()[0].toLower();
return before + camel + after;
} else if (nameType == "Camel") {
return before + toUpperCamelCase(name) + after;
} else if (nameType == "snake") {
return before + toSnakeCase(name, false) + after;
} else if (nameType == "Snake") {
return before + toSnakeCase(name, true) + after;
} else {
return "templateHasErrors";
}
Core::JsExpander expander;
QString jsError;
const auto jsExpr = QString("(function(name) { return %1; })(\"%2\")").arg(nameTemplate, name);
const QString jsRes = expander.evaluate(jsExpr, &jsError);
if (!jsError.isEmpty())
return jsError; // TODO: Use Utils::Result?
return jsRes;
}
auto removeAndExtractTemplate(QString type)

View File

@@ -117,15 +117,16 @@ public:
int setterOutsideClassFrom = 0;
int setterInCppFileFrom = 1;
QString getterAttributes; // e.g. [[nodiscard]]
QString getterNameTemplate = "<name>"; // or get<Name>
QString setterNameTemplate = "set<Name>"; // or set_<name> or Set<Name>
QString setterParameterNameTemplate = "new<Name>";
QString signalNameTemplate = "<name>Changed";
QString resetNameTemplate = "reset<Name>";
QString getterNameTemplate = R"js("get" + name[0].toUpperCase() + name.slice(1))js";
QString setterNameTemplate = R"js("set" + name[0].toUpperCase() + name.slice(1))js";
QString setterParameterNameTemplate = R"js("new" + name[0].toUpperCase() + name.slice(1))js";
QString signalNameTemplate = R"js(name + "Changed")js";
QString resetNameTemplate = R"js("reset" + name[0].toUpperCase() + name.slice(1))js";
bool signalWithNewValue = false;
bool setterAsSlot = false;
MissingNamespaceHandling cppFileNamespaceHandling = MissingNamespaceHandling::CreateMissing;
QString memberVariableNameTemplate = "m_<name>";
QString memberVariableNameTemplate = R"js("m_" + name)js";
QString nameFromMemberVariableTemplate;
QStringList valueTypes; // if contains use value. Ignores namespaces and template parameters
bool returnByConstRef = false;
bool useAuto = true;

View File

@@ -104,38 +104,39 @@ CppQuickFixSettingsWidget::CppQuickFixSettingsWidget()
const QString placeHolderTect = Tr::tr("See tool tip for more information");
const QString toolTip = Tr::tr(
R"==(Use <name> for the variable
Use <camel> for camel case
Use <snake> for snake case
Use <Name>, <Camel> and <Snake> for upper case
e.g. name = "m_test_foo_":
"set_<name> => "set_test_foo"
"set<Name> => "setTest_foo"
"set<Camel> => "setTestFoo")==");
"A JavaScript expression acting as the return value of a function taking a parameter "
"called \"name\"");
CppQuickFixSettings defaultSettings;
m_lineEdit_getterAttribute = new QLineEdit;
m_lineEdit_getterAttribute->setPlaceholderText(Tr::tr("For example, [[nodiscard]]"));
m_lineEdit_getterName = new QLineEdit;
m_lineEdit_getterName->setPlaceholderText(placeHolderTect);
m_lineEdit_getterName->setPlaceholderText(defaultSettings.getterNameTemplate);
m_lineEdit_getterName->setToolTip(toolTip);
m_lineEdit_setterName = new QLineEdit;
m_lineEdit_setterName->setPlaceholderText(placeHolderTect);
m_lineEdit_setterName->setPlaceholderText(defaultSettings.setterNameTemplate);
m_lineEdit_setterName->setToolTip(toolTip);
m_lineEdit_setterParameter = new QLineEdit;
m_lineEdit_setterParameter->setPlaceholderText(Tr::tr("For example, new<Name>"));
m_lineEdit_setterParameter->setPlaceholderText(defaultSettings.setterParameterNameTemplate);
m_lineEdit_setterParameter->setToolTip(toolTip);
m_checkBox_setterSlots = new QCheckBox(Tr::tr("Setters should be slots"));
m_lineEdit_resetName = new QLineEdit;
m_lineEdit_resetName->setPlaceholderText(Tr::tr("Normally reset<Name>"));
m_lineEdit_resetName->setPlaceholderText(defaultSettings.resetNameTemplate);
m_lineEdit_resetName->setToolTip(toolTip);
m_lineEdit_signalName = new QLineEdit;
m_lineEdit_signalName->setPlaceholderText(Tr::tr("Normally <name>Changed"));
m_lineEdit_signalName->setPlaceholderText(defaultSettings.signalNameTemplate);
m_lineEdit_signalName->setToolTip(toolTip);
m_checkBox_signalWithNewValue = new QCheckBox(
Tr::tr("Generate signals with the new value as parameter"));
m_lineEdit_memberVariableName = new QLineEdit;
m_lineEdit_memberVariableName->setPlaceholderText(Tr::tr("For example, m_<name>"));
m_lineEdit_memberVariableName->setPlaceholderText(defaultSettings.memberVariableNameTemplate);
m_lineEdit_memberVariableName->setToolTip(toolTip);
m_lineEdit_nameFromMemberVariable = new QLineEdit;
m_lineEdit_nameFromMemberVariable->setToolTip(
Tr::tr(
"How to get from the member variable to the semantic name.\n"
"This is the reverse of the operation above.\n"
"Leave empty to apply heuristics."));
m_radioButton_generateMissingNamespace = new QRadioButton(Tr::tr("Generate missing namespaces"));
m_radioButton_addUsingnamespace = new QRadioButton(Tr::tr("Add \"using namespace ...\""));
@@ -253,6 +254,7 @@ e.g. name = "m_test_foo_":
Tr::tr("Signal name:"), m_lineEdit_signalName, br,
m_checkBox_signalWithNewValue, br,
Tr::tr("Member variable name:"), m_lineEdit_memberVariableName, br,
Tr::tr("Name from member variable:"), m_lineEdit_nameFromMemberVariable, br,
},
},
Group {
@@ -312,6 +314,7 @@ e.g. name = "m_test_foo_":
connect(m_lineEdit_getterAttribute, &QLineEdit::textEdited, then);
connect(m_lineEdit_getterName, &QLineEdit::textEdited, then);
connect(m_lineEdit_memberVariableName, &QLineEdit::textEdited, then);
connect(m_lineEdit_nameFromMemberVariable, &QLineEdit::textEdited, then);
connect(m_lineEdit_resetName, &QLineEdit::textEdited, then);
connect(m_lineEdit_setterName, &QLineEdit::textEdited, then);
connect(m_lineEdit_setterParameter, &QLineEdit::textEdited, then);
@@ -348,6 +351,7 @@ void CppQuickFixSettingsWidget::loadSettings(CppQuickFixSettings *settings)
m_lineEdit_resetName->setText(settings->resetNameTemplate);
m_lineEdit_signalName->setText(settings->signalNameTemplate);
m_lineEdit_memberVariableName->setText(settings->memberVariableNameTemplate);
m_lineEdit_nameFromMemberVariable->setText(settings->nameFromMemberVariableTemplate);
m_checkBox_setterSlots->setChecked(settings->setterAsSlot);
m_checkBox_signalWithNewValue->setChecked(settings->signalWithNewValue);
m_useAutoCheckBox->setChecked(settings->useAuto);
@@ -402,6 +406,7 @@ void CppQuickFixSettingsWidget::saveSettings(CppQuickFixSettings *settings)
settings->resetNameTemplate = m_lineEdit_resetName->text();
settings->signalNameTemplate = m_lineEdit_signalName->text();
settings->memberVariableNameTemplate = m_lineEdit_memberVariableName->text();
settings->nameFromMemberVariableTemplate = m_lineEdit_nameFromMemberVariable->text();
if (m_radioButton_rewriteTypes->isChecked()) {
settings->cppFileNamespaceHandling = CppQuickFixSettings::MissingNamespaceHandling::RewriteType;
} else if (m_radioButton_addUsingnamespace->isChecked()) {

View File

@@ -66,6 +66,7 @@ private:
QLineEdit *m_lineEdit_setterName;
QLineEdit *m_lineEdit_signalName;
QLineEdit *m_lineEdit_memberVariableName;
QLineEdit *m_lineEdit_nameFromMemberVariable;
QRadioButton *m_radioButton_generateMissingNamespace;
QRadioButton *m_radioButton_addUsingnamespace;
QRadioButton *m_radioButton_rewriteTypes;