// Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QPYDESIGNEREXTENSIONS_H #define QPYDESIGNEREXTENSIONS_H #include #include #include #include #include #include // Not automatically found since "find_package(Qt6 COMPONENTS Designer)" is not used #ifdef Q_MOC_RUN Q_DECLARE_INTERFACE(QDesignerContainerExtension, "org.qt-project.Qt.Designer.Container") Q_DECLARE_INTERFACE(QDesignerMemberSheetExtension, "org.qt-project.Qt.Designer.MemberSheet") Q_DECLARE_EXTENSION_INTERFACE(QDesignerPropertySheetExtension, "org.qt-project.Qt.Designer.PropertySheet") Q_DECLARE_INTERFACE(QDesignerTaskMenuExtension, "org.qt-project.Qt.Designer.TaskMenu") Q_DECLARE_INTERFACE(QDesignerCustomWidgetCollectionInterface, "org.qt-project.Qt.QDesignerCustomWidgetCollectionInterface") #endif struct _object; // PyObject QT_BEGIN_NAMESPACE // Extension implementations need to inherit QObject which cannot be done in Python. // Provide a base class (cf QPyTextObject). class QPyDesignerContainerExtension : public QObject, public QDesignerContainerExtension { Q_OBJECT Q_INTERFACES(QDesignerContainerExtension) public: explicit QPyDesignerContainerExtension(QObject *parent = nullptr) : QObject(parent) {} }; class QPyDesignerMemberSheetExtension : public QObject, public QDesignerMemberSheetExtension { Q_OBJECT Q_INTERFACES(QDesignerMemberSheetExtension) public: explicit QPyDesignerMemberSheetExtension(QObject *parent = nullptr) : QObject(parent) {} }; class QPyDesignerPropertySheetExtension : public QObject, public QDesignerPropertySheetExtension { Q_OBJECT Q_INTERFACES(QDesignerPropertySheetExtension) public: explicit QPyDesignerPropertySheetExtension(QObject *parent = nullptr) : QObject(parent) {} }; class QPyDesignerTaskMenuExtension : public QObject, public QDesignerTaskMenuExtension { Q_OBJECT Q_INTERFACES(QDesignerTaskMenuExtension) public: explicit QPyDesignerTaskMenuExtension(QObject *parent = nullptr) : QObject(parent) {} }; class QPyDesignerCustomWidgetCollection : public QDesignerCustomWidgetCollectionInterface { public: ~QPyDesignerCustomWidgetCollection(); static QPyDesignerCustomWidgetCollection *instance(); QList customWidgets() const override; static void addCustomWidget(QDesignerCustomWidgetInterface *c); static bool _registerCustomWidgetHelper(_object *typeArg, _object *kwds); private: QPyDesignerCustomWidgetCollection(); QList m_customWidgets; }; QT_END_NAMESPACE #endif // QPYDESIGNEREXTENSIONS_H