diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-01-12 15:18:02 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2022-01-13 15:47:46 +0100 |
commit | e376c229e906bc25068a22d758c24eef644e8b28 (patch) | |
tree | 0efa774dbd18f14d8f32c8612ebba3cf38845ee5 /src/tools/uic | |
parent | 7719fcea4b174da078b6630df24345c63e6cc75d (diff) |
uic/Python: Import base class for flag values
Extend the logic extracting enum base classes to flags
to handle things like QAbstractItemView::EditTriggers.
Exclude the Qt namespace.
Amends de15836dbf5007092c19bc9ab15ca3d1a36901ad.
Fixes: PYSIDE-1773
Task-number: PYSIDE-1404
Pick-to: 6.2 6.2.3 6.3
Change-Id: Ib0cd0836a91f330e5bc3307690062a965abec7eb
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'src/tools/uic')
-rw-r--r-- | src/tools/uic/python/pythonwriteimports.cpp | 27 | ||||
-rw-r--r-- | src/tools/uic/python/pythonwriteimports.h | 1 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/tools/uic/python/pythonwriteimports.cpp b/src/tools/uic/python/pythonwriteimports.cpp index ec4968da2f..0d295b483d 100644 --- a/src/tools/uic/python/pythonwriteimports.cpp +++ b/src/tools/uic/python/pythonwriteimports.cpp @@ -233,16 +233,31 @@ void WriteImports::addPythonCustomWidget(const QString &className, const DomCust void WriteImports::acceptProperty(DomProperty *node) { - if (node->kind() == DomProperty::Enum) { - // Add base classes like QFrame for QLabel::frameShape() - const QString &enumV = node->elementEnum(); - const auto colonPos = enumV.indexOf(u"::"); - if (colonPos > 0) - addQtClass(enumV.left(colonPos)); + switch (node->kind()) { + case DomProperty::Enum: + addEnumBaseClass(node->elementEnum()); + break; + case DomProperty::Set: + addEnumBaseClass(node->elementSet()); + break; + default: + break; } + WriteIncludesBase::acceptProperty(node); } +void WriteImports::addEnumBaseClass(const QString &v) +{ + // Add base classes like QFrame for QLabel::frameShape() + const auto colonPos = v.indexOf(u"::"); + if (colonPos > 0) { + const QString base = v.left(colonPos); + if (base.startsWith(u'Q') && base != u"Qt") + addQtClass(base); + } +} + } // namespace Python QT_END_NAMESPACE diff --git a/src/tools/uic/python/pythonwriteimports.h b/src/tools/uic/python/pythonwriteimports.h index c833e216a6..05cf48c1a1 100644 --- a/src/tools/uic/python/pythonwriteimports.h +++ b/src/tools/uic/python/pythonwriteimports.h @@ -55,6 +55,7 @@ protected: private: void addPythonCustomWidget(const QString &className, const DomCustomWidget *dcw); bool addQtClass(const QString &className); + void addEnumBaseClass(const QString &v); void writeImport(const QString &module); QHash<QString, QString> m_classToModule; |