1 // This defines the interfaces for the QQmlListPropertyWrapper type. 2 // 3 // Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com> 4 // 5 // This file is part of PyQt5. 6 // 7 // This file may be used under the terms of the GNU General Public License 8 // version 3.0 as published by the Free Software Foundation and appearing in 9 // the file LICENSE included in the packaging of this file. Please review the 10 // following information to ensure the GNU General Public License version 3.0 11 // requirements will be met: http://www.gnu.org/copyleft/gpl.html. 12 // 13 // If you do not wish to use this file under the terms of the GPL version 3.0 14 // then you may purchase a commercial license. For more information contact 15 // info@riverbankcomputing.com. 16 // 17 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 18 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 19 20 21 #ifndef _QPYQMLLISTPROPERTYWRAPPER_H 22 #define _QPYQMLLISTPROPERTYWRAPPER_H 23 24 25 #include <Python.h> 26 27 #include <QObject> 28 #include <QQmlListProperty> 29 30 31 extern "C" { 32 33 // This defines the structure of a QQmlListPropertyWrapper object. This serves 34 // two purposes. Firstly it wraps a pointer to a QQmlListProperty like a 35 // capsule would. Secondly it acts as a proxy for the underlying Python list. 36 typedef struct _qpyqml_QQmlListPropertyWrapper { 37 PyObject_HEAD 38 39 // The QML list property that is being wrapped. It is owned by the 40 // wrapper. 41 QQmlListProperty<QObject> *qml_list_property; 42 43 // A borrowed reference to the underlying Python list. 44 PyObject *py_list; 45 } qpyqml_QQmlListPropertyWrapper; 46 47 } 48 49 50 // The type object. 51 extern PyTypeObject *qpyqml_QQmlListPropertyWrapper_TypeObject; 52 53 54 bool qpyqml_QQmlListPropertyWrapper_init_type(); 55 PyObject *qpyqml_QQmlListPropertyWrapper_New(QQmlListProperty<QObject> *prop, 56 PyObject *list); 57 58 59 #endif 60