From e376c229e906bc25068a22d758c24eef644e8b28 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 12 Jan 2022 15:18:02 +0100 Subject: [PATCH] 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 --- src/tools/uic/python/pythonwriteimports.cpp | 27 ++++++++++++++++----- 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 ec4968da2ff..0d295b483d5 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 c833e216a6e..05cf48c1a15 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 m_classToModule;