1 // This is the initialisation support code for the QtQml module. 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 #include <Python.h> 22 23 #include "qpyqml_api.h" 24 #include "qpyqmllistproperty.h" 25 #include "qpyqmllistpropertywrapper.h" 26 #include "qpyqmlobject.h" 27 28 #include "sipAPIQtQml.h" 29 30 31 // Imports from QtCore. 32 pyqt5_qtqml_err_print_t pyqt5_qtqml_err_print; 33 34 35 // Perform any required initialisation. qpyqml_post_init(PyObject * module_dict)36void qpyqml_post_init(PyObject *module_dict) 37 { 38 // QtCore imports. 39 pyqt5_qtqml_err_print = (pyqt5_qtqml_err_print_t)sipImportSymbol( 40 "pyqt5_err_print"); 41 Q_ASSERT(pyqt5_qtqml_err_print); 42 43 // Initialise the QQmlListProperty type. 44 if (!qpyqml_QQmlListProperty_init_type()) 45 Py_FatalError("PyQt5.QtQml: Failed to initialise QQmlListProperty type"); 46 47 // Create the only instance and add it to the module dictionary. 48 PyObject *inst = PyObject_CallFunction( 49 (PyObject *)qpyqml_QQmlListProperty_TypeObject, 50 const_cast<char *>("s"), "QQmlListProperty<QObject>"); 51 52 if (!inst) 53 Py_FatalError("PyQt5.QtQml: Failed to create QQmlListProperty instance"); 54 55 if (PyDict_SetItemString(module_dict, "QQmlListProperty", inst) < 0) 56 Py_FatalError("PyQt5.QtQml: Failed to set QQmlListProperty instance"); 57 58 // Initialise the private QQmlListPropertyWrapper type. 59 if (!qpyqml_QQmlListPropertyWrapper_init_type()) 60 Py_FatalError("PyQt5.QtQml: Failed to initialise QQmlListPropertyWrapper type"); 61 62 // Register the proxy resolver. 63 if (sipRegisterProxyResolver(sipType_QObject, QPyQmlObjectProxy::resolveProxy) < 0) 64 Py_FatalError("PyQt5.QtQml: Failed to register proxy resolver"); 65 } 66