diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-05-25 12:39:51 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-05-26 00:11:40 +0200 |
commit | 613b52bfee1876b43829072abb9dfb4423e8357f (patch) | |
tree | e5470fc7fd09219dedeef5d555f9638552cc3690 /src | |
parent | 1e39b86bdc20a6dba92af9707c7aac9000d773c6 (diff) |
uic: Fix string list properties for Python
Use the opportunity to modernize the code to use an
initializer list instead of stream operators.
This then makes it easier to generate a comma-delimited
list that works for Python as well.
Fixes: PYSIDE-1942
Change-Id: I5291b55bd0685e06ad62e52c7ebccffce98e9c23
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/uic/cpp/cppwriteinitialization.cpp | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp index 4d43e904e1..e9ad0352af 100644 --- a/src/tools/uic/cpp/cppwriteinitialization.cpp +++ b/src/tools/uic/cpp/cppwriteinitialization.cpp @@ -1128,18 +1128,35 @@ QString WriteInitialization::writeStringListProperty(const DomStringList *list) { QString propertyValue; QTextStream str(&propertyValue); - str << "QStringList()"; + char trailingDelimiter = '}'; + switch (language::language()) { + case Language::Cpp: + str << "QStringList{"; + break; + case Language::Python: + str << '['; + trailingDelimiter = ']'; + break; + } const QStringList values = list->elementString(); - if (values.isEmpty()) - return propertyValue; - if (needsTranslation(list)) { - const QString comment = list->attributeComment(); - for (int i = 0; i < values.size(); ++i) - str << '\n' << m_indent << " << " << trCall(values.at(i), comment); - } else { - for (int i = 0; i < values.size(); ++i) - str << " << " << language::qstring(values.at(i), m_dindent); + if (!values.isEmpty()) { + if (needsTranslation(list)) { + const QString comment = list->attributeComment(); + const qsizetype last = values.size() - 1; + for (qsizetype i = 0; i <= last; ++i) { + str << '\n' << m_indent << " " << trCall(values.at(i), comment); + if (i != last) + str << ','; + } + } else { + for (qsizetype i = 0; i < values.size(); ++i) { + if (i) + str << ", "; + str << language::qstring(values.at(i), m_dindent); + } + } } + str << trailingDelimiter; return propertyValue; } |