Date: Monday, June 18, 2018 @ 22:24:39 Author: arojas Revision: 327174
archrelease: copy trunk to staging-x86_64 Added: pyqt5/repos/staging-x86_64/ pyqt5/repos/staging-x86_64/PKGBUILD (from rev 327173, pyqt5/trunk/PKGBUILD) pyqt5/repos/staging-x86_64/pyqt-qt5.11.patch (from rev 327173, pyqt5/trunk/pyqt-qt5.11.patch) pyqt5/repos/staging-x86_64/pyqt-support-new-qt.patch (from rev 327173, pyqt5/trunk/pyqt-support-new-qt.patch) pyqt5/repos/staging-x86_64/pyqt5-cura-crash.patch (from rev 327173, pyqt5/trunk/pyqt5-cura-crash.patch) ---------------------------+ PKGBUILD | 133 ++++++++++ pyqt-qt5.11.patch | 17 + pyqt-support-new-qt.patch | 12 pyqt5-cura-crash.patch | 559 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 721 insertions(+) Copied: pyqt5/repos/staging-x86_64/PKGBUILD (from rev 327173, pyqt5/trunk/PKGBUILD) =================================================================== --- staging-x86_64/PKGBUILD (rev 0) +++ staging-x86_64/PKGBUILD 2018-06-18 22:24:39 UTC (rev 327174) @@ -0,0 +1,133 @@ +# $Id$ +# Maintainer: Felix Yan <felixonm...@archlinux.org> +# Contributor: Andrea Scarpino <and...@archlinux.org> +# Contributor: Yichao Yu <yyc1...@gmail.com> +# Contributor: Douglas Soares de Andrade <doug...@archlinux.org> +# Contributor: riai <r...@bigfoot.com> Ben <b...@benmazer.net> + +pkgbase=pyqt5 +pkgname=('pyqt5-common' 'python-pyqt5' 'python2-pyqt5') +pkgver=5.10.1 +pkgrel=6 +arch=('x86_64') +url="http://riverbankcomputing.co.uk/software/pyqt/intro" +license=('GPL') +makedepends=('python-sip' 'python2-sip' 'python-opengl' 'python2-opengl' + 'python2-dbus' 'python-dbus' 'qt5-connectivity' + 'qt5-multimedia' 'qt5-tools' 'qt5-serialport' 'qt5-svg' + 'qt5-webengine' 'qt5-webkit' 'qt5-websockets' 'qt5-x11extras' 'qt5-networkauth') +source=("http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-$pkgver/PyQt5_gpl-$pkgver.tar.gz" pyqt-support-new-qt.patch + pyqt5-cura-crash.patch pyqt-qt5.11.patch) +sha512sums=('04cd0292f7a088f9c0d088d7c73ec96cfc40253f771dfdf194eb92be7635e6fcaf04863fa24215e9c34a096658549bb2feeb8d8fdca1e39ed87f0256ef0f790b' + 'a9c45534d540cd4eff732a92e66f98eb313b0734e64a2289fbc703fdb208265a610ccc3c4f54f43d0813afa3a7003ec7956e6029904cc56992a5e8cc2efb280c' + '3f6e1c0dcd95d3ff39c03f59d7c09cbf2e42431bf9cb6dc7a63da10b7a387e5977992e57ef0ff1dea495f29dfbf4db2568b4588e801cca966a0136fe98d1ed45' + 'bae60dd592701929acf403514d8be87d53330dccff74267efb615005d82f5710ce13636a99b2a75beb04fd93a4ade34486c3c2aa190efd334d01c78b34f1bcc0') + +prepare() { + # Support new versions of Qt - don't remove, needs to be reapplied after every new Qt release + pushd PyQt5_gpl-$pkgver + patch -p1 -i ../pyqt-support-new-qt.patch + patch -p1 -i ../pyqt5-cura-crash.patch # Fix crash in Cura + patch -p1 -i ../pyqt-qt5.11.patch # Fix build with Qt 5.11 (opensuse) + popd + + # The additional include path was removed due to this line, I don't really know why they are doing this... + sed -i '/target_config.dbus_inc_dirs = \[\]/d' PyQt5_gpl-$pkgver/configure.py + + cp -a PyQt5_gpl-$pkgver{,-py2} +} + +build() { + cd "$srcdir"/PyQt5_gpl-$pkgver + python configure.py \ + --confirm-license \ + --no-sip-files \ + --qsci-api \ + -q /usr/bin/qmake-qt5 + + # Thanks Gerardo for the rpath fix + find -name 'Makefile' | xargs sed -i 's|-Wl,-rpath,/usr/lib||g;s|-Wl,-rpath,.* ||g' + + make + + cd "$srcdir"/PyQt5_gpl-$pkgver-py2 + python2 configure.py \ + --confirm-license \ + --no-sip-files \ + --qsci-api \ + -q /usr/bin/qmake-qt5 + + # Thanks Gerardo for the rpath fix + find -name 'Makefile' | xargs sed -i 's|-Wl,-rpath,/usr/lib||g;s|-Wl,-rpath,.* ||g' + + make +} + +package_pyqt5-common(){ + pkgdesc="Common PyQt files shared between python-pyqt5 and python2-pyqt5" + depends=('qt5-base') + + cd PyQt5_gpl-$pkgver + install -Dm644 PyQt5.api "$pkgdir"/usr/share/qt/qsci/api/python/PyQt5.api + + install -d "$pkgdir"/usr/share/sip/PyQt5 + cp -a sip/* "$pkgdir"/usr/share/sip/PyQt5 +} + +package_python-pyqt5(){ + pkgdesc="A set of Python 3.x bindings for the Qt5 toolkit" + depends=('python-sip' 'pyqt5-common') + optdepends=('python-opengl: enable OpenGL 3D graphics in PyQt applications' + 'python-dbus: for python-dbus mainloop support' + 'qt5-multimedia: QtMultimedia, QtMultimediaWidgets' + 'qt5-tools: QtHelp, QtDesigner' + 'qt5-svg: QtSvg' + 'qt5-webkit: QtWebKit, QtWebKitWidgets' + 'qt5-xmlpatterns: QtXmlPatterns' + 'qt5-declarative: QtQml, qmlplugin' + 'qt5-serialport: QtSerialPort' + 'qt5-websockets: QtWebSockets' + 'qt5-connectivity: QtNfc, QtBluetooth' + 'qt5-webengine: QtWebEngine, QtWebEngineCore, QtWebEngineWidgets' + 'qt5-x11extras: QtX11Extras' + 'qt5-networkauth: QtNetworkAuth') + + cd PyQt5_gpl-$pkgver + # INSTALL_ROOT is needed for the QtDesigner module, the other Makefiles use DESTDIR + make DESTDIR="$pkgdir" INSTALL_ROOT="$pkgdir" install + + # Provided by pyqt-common + rm "$pkgdir"/usr/share/qt/qsci/api/python/PyQt5.api +} + +package_python2-pyqt5(){ + pkgdesc="A set of Python 2.x bindings for the Qt5 toolkit" + depends=('python2-sip' 'pyqt5-common' 'python2-enum34') + optdepends=('python2-opengl: enable OpenGL 3D graphics in PyQt applications' + 'python-dbus: for python-dbus mainloop support' + 'qt5-multimedia: QtMultimedia, QtMultimediaWidgets' + 'qt5-tools: QtHelp, QtDesigner' + 'qt5-svg: QtSvg' + 'qt5-webkit: QtWebKit, QtWebKitWidgets' + 'qt5-xmlpatterns: QtXmlPatterns' + 'qt5-declarative: QtQml, qmlplugin' + 'qt5-serialport: QtSerialPort' + 'qt5-websockets: QtWebSockets' + 'qt5-connectivity: QtNfc, QtBluetooth' + 'qt5-webengine: QtWebEngine, QtWebEngineCore, QtWebEngineWidgets' + 'qt5-x11extras: QtX11Extras' + 'qt5-networkauth: QtNetworkAuth') + + cd PyQt5_gpl-$pkgver-py2 + # INSTALL_ROOT is needed for the QtDesigner module, the other Makefiles use DESTDIR + make DESTDIR="$pkgdir" INSTALL_ROOT="$pkgdir" install + + # Fix conflicts with python-pyqt5 + mv "$pkgdir"/usr/bin/{,python2-}pyuic5 + mv "$pkgdir"/usr/bin/{,python2-}pylupdate5 + mv "$pkgdir"/usr/bin/{,python2-}pyrcc5 + + rm "$pkgdir"/usr/lib/qt/plugins/designer/libpyqt5.so + rm "$pkgdir"/usr/lib/qt/plugins/PyQt5/libpyqt5qmlplugin.so + rm "$pkgdir"/usr/share/qt/qsci/api/python/PyQt5.api +} Copied: pyqt5/repos/staging-x86_64/pyqt-qt5.11.patch (from rev 327173, pyqt5/trunk/pyqt-qt5.11.patch) =================================================================== --- staging-x86_64/pyqt-qt5.11.patch (rev 0) +++ staging-x86_64/pyqt-qt5.11.patch 2018-06-18 22:24:39 UTC (rev 327174) @@ -0,0 +1,17 @@ +From: Fabian Vogt <fab...@ritter-vogt.de> +Subject: QTest::waitForEvents() is internal only + +Must not be used, got removed with Qt 5.11. + +Index: PyQt5_gpl-5.10.1/sip/QtTest/qtestmouse.sip +=================================================================== +--- PyQt5_gpl-5.10.1.orig/sip/QtTest/qtestmouse.sip ++++ PyQt5_gpl-5.10.1/sip/QtTest/qtestmouse.sip +@@ -41,7 +41,6 @@ namespace QTest + void mousePress(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); + void mouseRelease(QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier = 0, QPoint pos = QPoint(), int delay = -1); + void mouseEvent(QTest::MouseAction action, QWidget *widget, Qt::MouseButton button, Qt::KeyboardModifiers modifier, QPoint pos, int delay = -1); +- void waitForEvents() /ReleaseGIL/; + void mouseEvent(QTest::MouseAction action, QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier, QPoint pos, int delay = -1); + void mousePress(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); + void mouseRelease(QWindow *window, Qt::MouseButton button, Qt::KeyboardModifiers modifier = Qt::KeyboardModifiers(), QPoint pos = QPoint(), int delay = -1); Copied: pyqt5/repos/staging-x86_64/pyqt-support-new-qt.patch (from rev 327173, pyqt5/trunk/pyqt-support-new-qt.patch) =================================================================== --- staging-x86_64/pyqt-support-new-qt.patch (rev 0) +++ staging-x86_64/pyqt-support-new-qt.patch 2018-06-18 22:24:39 UTC (rev 327174) @@ -0,0 +1,12 @@ +diff -ru a/sip/QtCore/QtCoremod.sip b/sip/QtCore/QtCoremod.sip +--- a/sip/QtCore/QtCoremod.sip 2016-12-25 18:56:11.000000000 +0100 ++++ b/sip/QtCore/QtCoremod.sip 2017-01-24 12:03:50.707514377 +0100 +@@ -22,7 +22,7 @@ + + %Module(name=PyQt5.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt5, keyword_arguments="Optional", use_limited_api=True) + +-%Timeline {Qt_5_0_0 Qt_5_0_1 Qt_5_0_2 Qt_5_1_0 Qt_5_1_1 Qt_5_2_0 Qt_5_2_1 Qt_5_3_0 Qt_5_3_1 Qt_5_3_2 Qt_5_4_0 Qt_5_4_1 Qt_5_4_2 Qt_5_5_0 Qt_5_5_1 Qt_5_6_0 Qt_5_6_1 Qt_5_6_2 Qt_5_6_3 Qt_5_6_4 Qt_5_6_5 Qt_5_6_6 Qt_5_6_7 Qt_5_6_8 Qt_5_6_9 Qt_5_7_0 Qt_5_7_1 Qt_5_8_0 Qt_5_8_1 Qt_5_9_0 Qt_5_9_1 Qt_5_9_2 Qt_5_9_3 Qt_5_9_99 Qt_5_10_0 Qt_5_10_1} ++%Timeline {Qt_5_0_0 Qt_5_0_1 Qt_5_0_2 Qt_5_1_0 Qt_5_1_1 Qt_5_2_0 Qt_5_2_1 Qt_5_3_0 Qt_5_3_1 Qt_5_3_2 Qt_5_4_0 Qt_5_4_1 Qt_5_4_2 Qt_5_5_0 Qt_5_5_1 Qt_5_6_0 Qt_5_6_1 Qt_5_6_2 Qt_5_6_3 Qt_5_6_4 Qt_5_6_5 Qt_5_6_6 Qt_5_6_7 Qt_5_6_8 Qt_5_6_9 Qt_5_7_0 Qt_5_7_1 Qt_5_8_0 Qt_5_8_1 Qt_5_9_0 Qt_5_9_1 Qt_5_9_2 Qt_5_9_3 Qt_5_9_99 Qt_5_10_0 Qt_5_10_1 Qt_5_11_0} + + %Platforms {WS_X11 WS_WIN WS_MACX} + Copied: pyqt5/repos/staging-x86_64/pyqt5-cura-crash.patch (from rev 327173, pyqt5/trunk/pyqt5-cura-crash.patch) =================================================================== --- staging-x86_64/pyqt5-cura-crash.patch (rev 0) +++ staging-x86_64/pyqt5-cura-crash.patch 2018-06-18 22:24:39 UTC (rev 327174) @@ -0,0 +1,559 @@ +diff -ur --new-file PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquick_register_type.cpp PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquick_register_type.cpp +--- PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquick_register_type.cpp 2018-02-27 11:43:52.000000000 +0100 ++++ PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquick_register_type.cpp 2018-03-29 03:32:17.000000000 +0200 +@@ -22,6 +22,8 @@ + #include "qpyquickframebufferobject.h" + #include "qpyquickitem.h" + #include "qpyquickpainteditem.h" ++#include "qpyquickview.h" ++#include "qpyquickwindow.h" + + #include "sipAPIQtQuick.h" + +@@ -30,6 +32,9 @@ + const QMetaObject *mo, const QByteArray &ptr_name, + const QByteArray &list_name, QQmlPrivate::RegisterType **rtp) + { ++ // Make sure the types are tested in the right order (ie. more specific ++ // types first). ++ + #if QT_VERSION >= 0x050200 + if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickFramebufferObject))) + return ((*rtp = QPyQuickFramebufferObject::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); +@@ -41,6 +46,12 @@ + if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickItem))) + return ((*rtp = QPyQuickItem::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); + ++ if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickView))) ++ return ((*rtp = QPyQuickView::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); ++ ++ if (PyType_IsSubtype(py_type, sipTypeAsPyTypeObject(sipType_QQuickWindow))) ++ return ((*rtp = QPyQuickWindow::addType(py_type, mo, ptr_name, list_name)) ? sipErrorNone : sipErrorFail); ++ + // We don't recognise the type. + return sipErrorContinue; + } +diff -ur --new-file PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickview.cpp PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquickview.cpp +--- PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickview.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquickview.cpp 2018-03-29 03:32:17.000000000 +0200 +@@ -0,0 +1,155 @@ ++// This is the implementation of the QPyQuickWindow classes. ++// ++// Copyright (c) 2018 Riverbank Computing Limited <i...@riverbankcomputing.com> ++// ++// This file is part of PyQt5. ++// ++// This file may be used under the terms of the GNU General Public License ++// version 3.0 as published by the Free Software Foundation and appearing in ++// the file LICENSE included in the packaging of this file. Please review the ++// following information to ensure the GNU General Public License version 3.0 ++// requirements will be met: http://www.gnu.org/copyleft/gpl.html. ++// ++// If you do not wish to use this file under the terms of the GPL version 3.0 ++// then you may purchase a commercial license. For more information contact ++// i...@riverbankcomputing.com. ++// ++// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++ ++#include <Python.h> ++ ++#include <QQmlListProperty> ++ ++#include "qpyquickview.h" ++ ++#include "sipAPIQtQuick.h" ++ ++ ++// The maximum number of Python QQuickView types. ++const int NrOfQuickViewTypes = 20; ++ ++// The list of registered Python types. ++static QList<PyTypeObject *> pyqt_types; ++ ++// The registration data for the canned types. ++static QQmlPrivate::RegisterType canned_types[NrOfQuickViewTypes]; ++ ++ ++#define QPYQUICKVIEW_INIT(n) \ ++ case n##U: \ ++ QPyQuickView##n::staticMetaObject = *mo; \ ++ rt->typeId = qRegisterNormalizedMetaType<QPyQuickView##n *>(ptr_name); \ ++ rt->listId = qRegisterNormalizedMetaType<QQmlListProperty<QPyQuickView##n> >(list_name); \ ++ rt->objectSize = sizeof(QPyQuickView##n); \ ++ rt->create = QQmlPrivate::createInto<QPyQuickView##n>; \ ++ rt->metaObject = mo; \ ++ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc<QPyQuickView##n>(); \ ++ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject<QPyQuickView##n>(); \ ++ rt->parserStatusCast = QQmlPrivate::StaticCastSelector<QPyQuickView##n,QQmlParserStatus>::cast(); \ ++ rt->valueSourceCast = QQmlPrivate::StaticCastSelector<QPyQuickView##n,QQmlPropertyValueSource>::cast(); \ ++ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector<QPyQuickView##n,QQmlPropertyValueInterceptor>::cast(); \ ++ break ++ ++ ++// The ctor. ++QPyQuickView::QPyQuickView(QWindow *parent) : sipQQuickView(parent) ++{ ++} ++ ++ ++// Add a new Python type and return its number. ++QQmlPrivate::RegisterType *QPyQuickView::addType(PyTypeObject *type, ++ const QMetaObject *mo, const QByteArray &ptr_name, ++ const QByteArray &list_name) ++{ ++ int type_nr = pyqt_types.size(); ++ ++ // Check we have a spare canned type. ++ if (type_nr >= NrOfQuickViewTypes) ++ { ++ PyErr_Format(PyExc_TypeError, ++ "a maximum of %d QQuickView types may be registered with QML", ++ NrOfQuickViewTypes); ++ return 0; ++ } ++ ++ pyqt_types.append(type); ++ ++ QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; ++ ++ // Initialise those members that depend on the C++ type. ++ switch (type_nr) ++ { ++ QPYQUICKVIEW_INIT(0); ++ QPYQUICKVIEW_INIT(1); ++ QPYQUICKVIEW_INIT(2); ++ QPYQUICKVIEW_INIT(3); ++ QPYQUICKVIEW_INIT(4); ++ QPYQUICKVIEW_INIT(5); ++ QPYQUICKVIEW_INIT(6); ++ QPYQUICKVIEW_INIT(7); ++ QPYQUICKVIEW_INIT(8); ++ QPYQUICKVIEW_INIT(9); ++ QPYQUICKVIEW_INIT(10); ++ QPYQUICKVIEW_INIT(11); ++ QPYQUICKVIEW_INIT(12); ++ QPYQUICKVIEW_INIT(13); ++ QPYQUICKVIEW_INIT(14); ++ QPYQUICKVIEW_INIT(15); ++ QPYQUICKVIEW_INIT(16); ++ QPYQUICKVIEW_INIT(17); ++ QPYQUICKVIEW_INIT(18); ++ QPYQUICKVIEW_INIT(19); ++ } ++ ++ return rt; ++} ++ ++ ++// Create the Python instance. ++void QPyQuickView::createPyObject(QWindow *parent) ++{ ++ SIP_BLOCK_THREADS ++ ++ // Assume C++ owns everything. ++ PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), ++ NULL, &sipPySelf, "D", parent, sipType_QWindow, NULL); ++ ++ if (!obj) ++ pyqt5_qtquick_err_print(); ++ ++ SIP_UNBLOCK_THREADS ++} ++ ++ ++// The canned type implementations. ++#define QPYQUICKVIEW_IMPL(n) \ ++QPyQuickView##n::QPyQuickView##n(QWindow *parent) : QPyQuickView(parent) \ ++{ \ ++ createPyObject(parent); \ ++} \ ++QMetaObject QPyQuickView##n::staticMetaObject ++ ++ ++QPYQUICKVIEW_IMPL(0); ++QPYQUICKVIEW_IMPL(1); ++QPYQUICKVIEW_IMPL(2); ++QPYQUICKVIEW_IMPL(3); ++QPYQUICKVIEW_IMPL(4); ++QPYQUICKVIEW_IMPL(5); ++QPYQUICKVIEW_IMPL(6); ++QPYQUICKVIEW_IMPL(7); ++QPYQUICKVIEW_IMPL(8); ++QPYQUICKVIEW_IMPL(9); ++QPYQUICKVIEW_IMPL(10); ++QPYQUICKVIEW_IMPL(11); ++QPYQUICKVIEW_IMPL(12); ++QPYQUICKVIEW_IMPL(13); ++QPYQUICKVIEW_IMPL(14); ++QPYQUICKVIEW_IMPL(15); ++QPYQUICKVIEW_IMPL(16); ++QPYQUICKVIEW_IMPL(17); ++QPYQUICKVIEW_IMPL(18); ++QPYQUICKVIEW_IMPL(19); +diff -ur --new-file PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickview.h PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquickview.h +--- PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickview.h 1970-01-01 01:00:00.000000000 +0100 ++++ PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquickview.h 2018-03-29 03:32:17.000000000 +0200 +@@ -0,0 +1,87 @@ ++// This is the definition of the QPyQuickView classes. ++// ++// Copyright (c) 2018 Riverbank Computing Limited <i...@riverbankcomputing.com> ++// ++// This file is part of PyQt5. ++// ++// This file may be used under the terms of the GNU General Public License ++// version 3.0 as published by the Free Software Foundation and appearing in ++// the file LICENSE included in the packaging of this file. Please review the ++// following information to ensure the GNU General Public License version 3.0 ++// requirements will be met: http://www.gnu.org/copyleft/gpl.html. ++// ++// If you do not wish to use this file under the terms of the GPL version 3.0 ++// then you may purchase a commercial license. For more information contact ++// i...@riverbankcomputing.com. ++// ++// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++ ++#ifndef _QPYQUICKVIEW_H ++#define _QPYQUICKVIEW_H ++ ++ ++#include <Python.h> ++ ++#include <qqmlprivate.h> ++#include <QByteArray> ++#include <QMetaObject> ++#include <QQuickView> ++ ++#include "sipAPIQtQuick.h" ++ ++ ++class QPyQuickView : public sipQQuickView ++{ ++public: ++ QPyQuickView(QWindow *parent = 0); ++ ++ virtual int typeNr() const = 0; ++ ++ static QQmlPrivate::RegisterType *addType(PyTypeObject *type, ++ const QMetaObject *mo, const QByteArray &ptr_name, ++ const QByteArray &list_name); ++ void createPyObject(QWindow *parent); ++ ++private: ++ QPyQuickView(const QPyQuickView &); ++}; ++ ++ ++// The canned type declarations. ++#define QPYQUICKVIEW_DECL(n) \ ++class QPyQuickView##n : public QPyQuickView \ ++{ \ ++public: \ ++ QPyQuickView##n(QWindow *parent = 0); \ ++ static QMetaObject staticMetaObject; \ ++ virtual int typeNr() const {return n##U;} \ ++private: \ ++ QPyQuickView##n(const QPyQuickView##n &); \ ++} ++ ++ ++QPYQUICKVIEW_DECL(0); ++QPYQUICKVIEW_DECL(1); ++QPYQUICKVIEW_DECL(2); ++QPYQUICKVIEW_DECL(3); ++QPYQUICKVIEW_DECL(4); ++QPYQUICKVIEW_DECL(5); ++QPYQUICKVIEW_DECL(6); ++QPYQUICKVIEW_DECL(7); ++QPYQUICKVIEW_DECL(8); ++QPYQUICKVIEW_DECL(9); ++QPYQUICKVIEW_DECL(10); ++QPYQUICKVIEW_DECL(11); ++QPYQUICKVIEW_DECL(12); ++QPYQUICKVIEW_DECL(13); ++QPYQUICKVIEW_DECL(14); ++QPYQUICKVIEW_DECL(15); ++QPYQUICKVIEW_DECL(16); ++QPYQUICKVIEW_DECL(17); ++QPYQUICKVIEW_DECL(18); ++QPYQUICKVIEW_DECL(19); ++ ++ ++#endif +diff -ur --new-file PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickwindow.cpp PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquickwindow.cpp +--- PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickwindow.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquickwindow.cpp 2018-03-29 03:32:17.000000000 +0200 +@@ -0,0 +1,155 @@ ++// This is the implementation of the QPyQuickWindow classes. ++// ++// Copyright (c) 2018 Riverbank Computing Limited <i...@riverbankcomputing.com> ++// ++// This file is part of PyQt5. ++// ++// This file may be used under the terms of the GNU General Public License ++// version 3.0 as published by the Free Software Foundation and appearing in ++// the file LICENSE included in the packaging of this file. Please review the ++// following information to ensure the GNU General Public License version 3.0 ++// requirements will be met: http://www.gnu.org/copyleft/gpl.html. ++// ++// If you do not wish to use this file under the terms of the GPL version 3.0 ++// then you may purchase a commercial license. For more information contact ++// i...@riverbankcomputing.com. ++// ++// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++ ++#include <Python.h> ++ ++#include <QQmlListProperty> ++ ++#include "qpyquickwindow.h" ++ ++#include "sipAPIQtQuick.h" ++ ++ ++// The maximum number of Python QQuickWindow types. ++const int NrOfQuickWindowTypes = 20; ++ ++// The list of registered Python types. ++static QList<PyTypeObject *> pyqt_types; ++ ++// The registration data for the canned types. ++static QQmlPrivate::RegisterType canned_types[NrOfQuickWindowTypes]; ++ ++ ++#define QPYQUICKWINDOW_INIT(n) \ ++ case n##U: \ ++ QPyQuickWindow##n::staticMetaObject = *mo; \ ++ rt->typeId = qRegisterNormalizedMetaType<QPyQuickWindow##n *>(ptr_name); \ ++ rt->listId = qRegisterNormalizedMetaType<QQmlListProperty<QPyQuickWindow##n> >(list_name); \ ++ rt->objectSize = sizeof(QPyQuickWindow##n); \ ++ rt->create = QQmlPrivate::createInto<QPyQuickWindow##n>; \ ++ rt->metaObject = mo; \ ++ rt->attachedPropertiesFunction = QQmlPrivate::attachedPropertiesFunc<QPyQuickWindow##n>(); \ ++ rt->attachedPropertiesMetaObject = QQmlPrivate::attachedPropertiesMetaObject<QPyQuickWindow##n>(); \ ++ rt->parserStatusCast = QQmlPrivate::StaticCastSelector<QPyQuickWindow##n,QQmlParserStatus>::cast(); \ ++ rt->valueSourceCast = QQmlPrivate::StaticCastSelector<QPyQuickWindow##n,QQmlPropertyValueSource>::cast(); \ ++ rt->valueInterceptorCast = QQmlPrivate::StaticCastSelector<QPyQuickWindow##n,QQmlPropertyValueInterceptor>::cast(); \ ++ break ++ ++ ++// The ctor. ++QPyQuickWindow::QPyQuickWindow(QWindow *parent) : sipQQuickWindow(parent) ++{ ++} ++ ++ ++// Add a new Python type and return its number. ++QQmlPrivate::RegisterType *QPyQuickWindow::addType(PyTypeObject *type, ++ const QMetaObject *mo, const QByteArray &ptr_name, ++ const QByteArray &list_name) ++{ ++ int type_nr = pyqt_types.size(); ++ ++ // Check we have a spare canned type. ++ if (type_nr >= NrOfQuickWindowTypes) ++ { ++ PyErr_Format(PyExc_TypeError, ++ "a maximum of %d QQuickWindow types may be registered with QML", ++ NrOfQuickWindowTypes); ++ return 0; ++ } ++ ++ pyqt_types.append(type); ++ ++ QQmlPrivate::RegisterType *rt = &canned_types[type_nr]; ++ ++ // Initialise those members that depend on the C++ type. ++ switch (type_nr) ++ { ++ QPYQUICKWINDOW_INIT(0); ++ QPYQUICKWINDOW_INIT(1); ++ QPYQUICKWINDOW_INIT(2); ++ QPYQUICKWINDOW_INIT(3); ++ QPYQUICKWINDOW_INIT(4); ++ QPYQUICKWINDOW_INIT(5); ++ QPYQUICKWINDOW_INIT(6); ++ QPYQUICKWINDOW_INIT(7); ++ QPYQUICKWINDOW_INIT(8); ++ QPYQUICKWINDOW_INIT(9); ++ QPYQUICKWINDOW_INIT(10); ++ QPYQUICKWINDOW_INIT(11); ++ QPYQUICKWINDOW_INIT(12); ++ QPYQUICKWINDOW_INIT(13); ++ QPYQUICKWINDOW_INIT(14); ++ QPYQUICKWINDOW_INIT(15); ++ QPYQUICKWINDOW_INIT(16); ++ QPYQUICKWINDOW_INIT(17); ++ QPYQUICKWINDOW_INIT(18); ++ QPYQUICKWINDOW_INIT(19); ++ } ++ ++ return rt; ++} ++ ++ ++// Create the Python instance. ++void QPyQuickWindow::createPyObject(QWindow *parent) ++{ ++ SIP_BLOCK_THREADS ++ ++ // Assume C++ owns everything. ++ PyObject *obj = sipConvertFromNewPyType(this, pyqt_types.at(typeNr()), ++ NULL, &sipPySelf, "D", parent, sipType_QWindow, NULL); ++ ++ if (!obj) ++ pyqt5_qtquick_err_print(); ++ ++ SIP_UNBLOCK_THREADS ++} ++ ++ ++// The canned type implementations. ++#define QPYQUICKWINDOW_IMPL(n) \ ++QPyQuickWindow##n::QPyQuickWindow##n(QWindow *parent) : QPyQuickWindow(parent) \ ++{ \ ++ createPyObject(parent); \ ++} \ ++QMetaObject QPyQuickWindow##n::staticMetaObject ++ ++ ++QPYQUICKWINDOW_IMPL(0); ++QPYQUICKWINDOW_IMPL(1); ++QPYQUICKWINDOW_IMPL(2); ++QPYQUICKWINDOW_IMPL(3); ++QPYQUICKWINDOW_IMPL(4); ++QPYQUICKWINDOW_IMPL(5); ++QPYQUICKWINDOW_IMPL(6); ++QPYQUICKWINDOW_IMPL(7); ++QPYQUICKWINDOW_IMPL(8); ++QPYQUICKWINDOW_IMPL(9); ++QPYQUICKWINDOW_IMPL(10); ++QPYQUICKWINDOW_IMPL(11); ++QPYQUICKWINDOW_IMPL(12); ++QPYQUICKWINDOW_IMPL(13); ++QPYQUICKWINDOW_IMPL(14); ++QPYQUICKWINDOW_IMPL(15); ++QPYQUICKWINDOW_IMPL(16); ++QPYQUICKWINDOW_IMPL(17); ++QPYQUICKWINDOW_IMPL(18); ++QPYQUICKWINDOW_IMPL(19); +diff -ur --new-file PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickwindow.h PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquickwindow.h +--- PyQt5_gpl-5.10.1/qpy/QtQuick/qpyquickwindow.h 1970-01-01 01:00:00.000000000 +0100 ++++ PyQt5_gpl-5.10.2.dev1803281228/qpy/QtQuick/qpyquickwindow.h 2018-03-29 03:32:17.000000000 +0200 +@@ -0,0 +1,87 @@ ++// This is the definition of the QPyQuickWindow classes. ++// ++// Copyright (c) 2018 Riverbank Computing Limited <i...@riverbankcomputing.com> ++// ++// This file is part of PyQt5. ++// ++// This file may be used under the terms of the GNU General Public License ++// version 3.0 as published by the Free Software Foundation and appearing in ++// the file LICENSE included in the packaging of this file. Please review the ++// following information to ensure the GNU General Public License version 3.0 ++// requirements will be met: http://www.gnu.org/copyleft/gpl.html. ++// ++// If you do not wish to use this file under the terms of the GPL version 3.0 ++// then you may purchase a commercial license. For more information contact ++// i...@riverbankcomputing.com. ++// ++// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ++// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++ ++#ifndef _QPYQUICKWINDOW_H ++#define _QPYQUICKWINDOW_H ++ ++ ++#include <Python.h> ++ ++#include <qqmlprivate.h> ++#include <QByteArray> ++#include <QMetaObject> ++#include <QQuickWindow> ++ ++#include "sipAPIQtQuick.h" ++ ++ ++class QPyQuickWindow : public sipQQuickWindow ++{ ++public: ++ QPyQuickWindow(QWindow *parent = 0); ++ ++ virtual int typeNr() const = 0; ++ ++ static QQmlPrivate::RegisterType *addType(PyTypeObject *type, ++ const QMetaObject *mo, const QByteArray &ptr_name, ++ const QByteArray &list_name); ++ void createPyObject(QWindow *parent); ++ ++private: ++ QPyQuickWindow(const QPyQuickWindow &); ++}; ++ ++ ++// The canned type declarations. ++#define QPYQUICKWINDOW_DECL(n) \ ++class QPyQuickWindow##n : public QPyQuickWindow \ ++{ \ ++public: \ ++ QPyQuickWindow##n(QWindow *parent = 0); \ ++ static QMetaObject staticMetaObject; \ ++ virtual int typeNr() const {return n##U;} \ ++private: \ ++ QPyQuickWindow##n(const QPyQuickWindow##n &); \ ++} ++ ++ ++QPYQUICKWINDOW_DECL(0); ++QPYQUICKWINDOW_DECL(1); ++QPYQUICKWINDOW_DECL(2); ++QPYQUICKWINDOW_DECL(3); ++QPYQUICKWINDOW_DECL(4); ++QPYQUICKWINDOW_DECL(5); ++QPYQUICKWINDOW_DECL(6); ++QPYQUICKWINDOW_DECL(7); ++QPYQUICKWINDOW_DECL(8); ++QPYQUICKWINDOW_DECL(9); ++QPYQUICKWINDOW_DECL(10); ++QPYQUICKWINDOW_DECL(11); ++QPYQUICKWINDOW_DECL(12); ++QPYQUICKWINDOW_DECL(13); ++QPYQUICKWINDOW_DECL(14); ++QPYQUICKWINDOW_DECL(15); ++QPYQUICKWINDOW_DECL(16); ++QPYQUICKWINDOW_DECL(17); ++QPYQUICKWINDOW_DECL(18); ++QPYQUICKWINDOW_DECL(19); ++ ++ ++#endif +diff -ur --new-file PyQt5_gpl-5.10.1/sip/QtQuick/qquickview.sip PyQt5_gpl-5.10.2.dev1803281228/sip/QtQuick/qquickview.sip +--- PyQt5_gpl-5.10.1/sip/QtQuick/qquickview.sip 2018-02-27 11:43:53.000000000 +0100 ++++ PyQt5_gpl-5.10.2.dev1803281228/sip/QtQuick/qquickview.sip 2018-03-29 03:32:18.000000000 +0200 +@@ -20,7 +20,7 @@ + // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +-class QQuickView : QQuickWindow ++class QQuickView : QQuickWindow /ExportDerived/ + { + %TypeHeaderCode + #include <qquickview.h> +diff -ur --new-file PyQt5_gpl-5.10.1/sip/QtQuick/qquickwindow.sip PyQt5_gpl-5.10.2.dev1803281228/sip/QtQuick/qquickwindow.sip +--- PyQt5_gpl-5.10.1/sip/QtQuick/qquickwindow.sip 2018-02-27 11:43:53.000000000 +0100 ++++ PyQt5_gpl-5.10.2.dev1803281228/sip/QtQuick/qquickwindow.sip 2018-03-29 03:32:18.000000000 +0200 +@@ -20,7 +20,7 @@ + // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +-class QQuickWindow : QWindow ++class QQuickWindow : QWindow /ExportDerived/ + { + %TypeHeaderCode + #include <qquickwindow.h>