diff options
Diffstat (limited to 'sources/pyside2/PySide2/QtWidgets')
7 files changed, 10 insertions, 459 deletions
diff --git a/sources/pyside2/PySide2/QtWidgets/CMakeLists.txt b/sources/pyside2/PySide2/QtWidgets/CMakeLists.txt index 78db04ded..5f10d5988 100644 --- a/sources/pyside2/PySide2/QtWidgets/CMakeLists.txt +++ b/sources/pyside2/PySide2/QtWidgets/CMakeLists.txt @@ -207,14 +207,6 @@ ${SPECIFIC_OS_FILES} ${QtWidgets_GEN_DIR}/qtwidgets_module_wrapper.cpp ) -set(QtWidgets_glue_sources - "${QtWidgets_SOURCE_DIR}/glue/qapplication_init.cpp" - "${QtWidgets_SOURCE_DIR}/glue/qlayout_help_functions.cpp" - "${QtWidgets_SOURCE_DIR}/glue/qmenu_glue.cpp" - "${QtWidgets_SOURCE_DIR}/glue/qmenubar_glue.cpp" - "${QtWidgets_SOURCE_DIR}/glue/qwidget_glue.cpp" -) - configure_file("${QtWidgets_SOURCE_DIR}/typesystem_widgets.xml.in" "${QtWidgets_BINARY_DIR}/typesystem_widgets.xml" @ONLY) @@ -248,4 +240,4 @@ create_pyside_module(QtWidgets "" ${QtWidgets_BINARY_DIR}/typesystem_widgets.xml "" - QtWidgets_glue_sources) + "") diff --git a/sources/pyside2/PySide2/QtWidgets/glue/qapplication_init.cpp b/sources/pyside2/PySide2/QtWidgets/glue/qapplication_init.cpp deleted file mode 100644 index aef11f2c7..000000000 --- a/sources/pyside2/PySide2/QtWidgets/glue/qapplication_init.cpp +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2017 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -static void QApplicationConstructor(PyObject *self, PyObject *pyargv, QApplicationWrapper **cptr) -{ - static int argc; - static char **argv; - PyObject *stringlist = PyTuple_GET_ITEM(pyargv, 0); - if (Shiboken::listToArgcArgv(stringlist, &argc, &argv, "PySideApp")) { - *cptr = new QApplicationWrapper(argc, argv, 0); - Shiboken::Object::releaseOwnership(reinterpret_cast<SbkObject*>(self)); - PySide::registerCleanupFunction(&PySide::destroyQCoreApplication); - } -} diff --git a/sources/pyside2/PySide2/QtWidgets/glue/qlayout_help_functions.cpp b/sources/pyside2/PySide2/QtWidgets/glue/qlayout_help_functions.cpp deleted file mode 100644 index d542b881c..000000000 --- a/sources/pyside2/PySide2/QtWidgets/glue/qlayout_help_functions.cpp +++ /dev/null @@ -1,161 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -void addLayoutOwnership(QLayout* layout, QLayoutItem* item); -void removeLayoutOwnership(QLayout* layout, QWidget* widget); - -inline QByteArray retrieveObjectName(PyObject* obj) -{ - Shiboken::AutoDecRef objName(PyObject_Str(obj)); - return Shiboken::String::toCString(objName); -} - -inline void addLayoutOwnership(QLayout* layout, QWidget* widget) -{ - //transfer ownership to parent widget - QWidget *lw = layout->parentWidget(); - QWidget *pw = widget->parentWidget(); - - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget)); - - //Transfer parent to layout widget - if (pw && lw && pw != lw) - Shiboken::Object::setParent(0, pyChild); - - if (!lw && !pw) { - //keep the reference while the layout is orphan - Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](layout)); - Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true); - } else { - if (!lw) - lw = pw; - Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](lw)); - Shiboken::Object::setParent(pyParent, pyChild); - } -} - -inline void addLayoutOwnership(QLayout* layout, QLayout* other) -{ - //transfer all children widgets from other to layout parent widget - QWidget* parent = layout->parentWidget(); - if (!parent) { - //keep the reference while the layout is orphan - Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout)); - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](other)); - Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true); - return; - } - - for (int i=0, i_max=other->count(); i < i_max; i++) { - QLayoutItem* item = other->itemAt(i); - if (PyErr_Occurred() || !item) - return; - addLayoutOwnership(layout, item); - } - - Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout)); - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](other)); - Shiboken::Object::setParent(pyParent, pyChild); -} - -inline void addLayoutOwnership(QLayout* layout, QLayoutItem* item) -{ - if (!item) - return; - - QWidget* w = item->widget(); - if (w) - addLayoutOwnership(layout, w); - else { - QLayout* l = item->layout(); - if (l) - addLayoutOwnership(layout, l); - } - - Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout)); - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayoutItem*](item)); - Shiboken::Object::setParent(pyParent, pyChild); -} - -static void removeWidgetFromLayout(QLayout* layout, QWidget* widget) -{ - QWidget* parent = widget->parentWidget(); - - if (!parent) { - //remove reference on layout - Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](layout)); - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget)); - Shiboken::Object::removeReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild); - } else { - //give the ownership to parent - Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](parent)); - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget)); - Shiboken::Object::setParent(pyParent, pyChild); - } -} - -inline void removeLayoutOwnership(QLayout* layout, QLayoutItem* item) -{ - QWidget* w = item->widget(); - if (w) - removeWidgetFromLayout(layout, w); - else { - QLayout* l = item->layout(); - if (l && item != l) - removeLayoutOwnership(layout, l); - } - - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayoutItem*](item)); - Shiboken::Object::invalidate(pyChild); - Shiboken::Object::setParent(0, pyChild); -} - -inline void removeLayoutOwnership(QLayout* layout, QWidget* widget) -{ - if (!widget) - return; - - for (int i=0, i_max=layout->count(); i < i_max; i++) { - QLayoutItem* item = layout->itemAt(i); - if (PyErr_Occurred() || !item) - return; - if (item->widget() == widget) - removeLayoutOwnership(layout, item); - } -} diff --git a/sources/pyside2/PySide2/QtWidgets/glue/qmenu_glue.cpp b/sources/pyside2/PySide2/QtWidgets/glue/qmenu_glue.cpp deleted file mode 100644 index 4e9c8c3b7..000000000 --- a/sources/pyside2/PySide2/QtWidgets/glue/qmenu_glue.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -inline PyObject* addActionWithPyObject(QMenu* self, const QIcon& icon, const QString& text, PyObject* callback, const QKeySequence& shortcut) -{ - QAction* act = new QAction(text, self); - - if (!icon.isNull()) - act->setIcon(icon); - - if (!shortcut.isEmpty()) - act->setShortcut(shortcut); - - self->addAction(act); - - PyObject* pyAct = %CONVERTTOPYTHON[QAction*](act); - Shiboken::AutoDecRef result(PyObject_CallMethod(pyAct, - const_cast<char *>("connect"), - const_cast<char *>("OsO"), - pyAct, - SIGNAL(triggered()), callback)); - if (result.isNull()) { - Py_DECREF(pyAct); - return 0; - } - - return pyAct; -} diff --git a/sources/pyside2/PySide2/QtWidgets/glue/qmenubar_glue.cpp b/sources/pyside2/PySide2/QtWidgets/glue/qmenubar_glue.cpp deleted file mode 100644 index 8cdbc2e01..000000000 --- a/sources/pyside2/PySide2/QtWidgets/glue/qmenubar_glue.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -inline PyObject* -addActionWithPyObject(QMenuBar* self, const QString& text, PyObject* callback) -{ - QAction* act = new QAction(text, self); - - self->addAction(act); - - PyObject* pyAct = %CONVERTTOPYTHON[QAction*](act); - PyObject* result = PyObject_CallMethod(pyAct, - const_cast<char *>("connect"), - const_cast<char *>("OsO"), - pyAct, - SIGNAL(triggered(bool)), callback); - - if (result == 0 || result == Py_False) { - if (result) - Py_DECREF(result); - Py_DECREF(pyAct); - return 0; - } - - return pyAct; -} diff --git a/sources/pyside2/PySide2/QtWidgets/glue/qwidget_glue.cpp b/sources/pyside2/PySide2/QtWidgets/glue/qwidget_glue.cpp deleted file mode 100644 index 674e34cfe..000000000 --- a/sources/pyside2/PySide2/QtWidgets/glue/qwidget_glue.cpp +++ /dev/null @@ -1,104 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of Qt for Python. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -static QString retrieveObjectName(PyObject *obj) -{ - Shiboken::AutoDecRef objName(PyObject_Str(obj)); - return QString(Shiboken::String::toCString(objName)); -} - - -/** - * Tranfer objects ownership from layout to widget - **/ -static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout) -{ - Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](parent)); - - for (int i=0; i < layout->count(); i++) { - QLayoutItem* item = layout->itemAt(i); - if (PyErr_Occurred() || !item) - return; - - QWidget* w = item->widget(); - if (w) { - QWidget* pw = w->parentWidget(); - if (pw != parent) { - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](w)); - Shiboken::Object::setParent(pyParent, pyChild); - } - } else { - QLayout* l = item->layout(); - if (l) - qwidgetReparentLayout(parent, l); - } - } - - Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](layout)); - Shiboken::Object::setParent(pyParent, pyChild); - //remove previous references - Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyChild.object()), qPrintable(retrieveObjectName(pyChild)), Py_None); -} - -static inline void qwidgetSetLayout(QWidget *self, QLayout *layout) -{ - if (!layout || self->layout()) - return; - - QObject* oldParent = layout->parent(); - if (oldParent && oldParent != self) { - if (oldParent->isWidgetType()) { - // remove old parent policy - Shiboken::AutoDecRef pyLayout(%CONVERTTOPYTHON[QLayout*](layout)); - Shiboken::Object::setParent(Py_None, pyLayout); - } else { - PyErr_Format(PyExc_RuntimeError, "QWidget::setLayout: Attempting to set QLayout \"%s\" on %s \"%s\", when the QLayout already has a parent", - qPrintable(layout->objectName()), self->metaObject()->className(), qPrintable(self->objectName())); - return; - } - } - - if (oldParent != self) { - qwidgetReparentLayout(self, layout); - if (PyErr_Occurred()) - return; - - self->setLayout(layout); - } -} diff --git a/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml b/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml index d22d694cc..13cc6f7cf 100644 --- a/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml +++ b/sources/pyside2/PySide2/QtWidgets/typesystem_widgets_common.xml @@ -800,7 +800,7 @@ </modify-function> </object-type> <object-type name="QMenu"> - <inject-code class="native" position="beginning" file="glue/qmenu_glue.cpp"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qmenu-glue"/> <modify-function signature="exec()" rename="exec_" allow-thread="yes"/> <modify-function signature="exec(const QPoint&,QAction*)" rename="exec_" allow-thread="yes"/> @@ -882,7 +882,7 @@ </object-type> <object-type name="QMenuBar"> - <inject-code class="native" position="beginning" file="glue/qmenubar_glue.cpp"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qmenubar-glue"/> <modify-function signature="addAction(const QString&)"> <modify-argument index="return"> <parent index="this" action="add"/> @@ -1247,7 +1247,7 @@ </object-type> <object-type name="QLayout"> - <inject-code class="native" position="beginning" file="glue/qlayout_help_functions.cpp"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/> <enum-type name="SizeConstraint"/> @@ -1332,7 +1332,7 @@ </object-type> <object-type name="QStackedLayout"> - <inject-code class="native" position="beginning" file="glue/qlayout_help_functions.cpp"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/> <enum-type name="StackingMode"/> <modify-function signature="insertWidget(int,QWidget*)"> <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-2"/> @@ -1340,7 +1340,7 @@ </object-type> <object-type name="QBoxLayout"> - <inject-code class="native" position="beginning" file="glue/qlayout_help_functions.cpp"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/> <enum-type name="Direction"/> @@ -1370,7 +1370,7 @@ </object-type> <object-type name="QGridLayout"> - <inject-code class="native" position="beginning" file="glue/qlayout_help_functions.cpp"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/> <modify-function signature="itemAtPosition (int,int)const"> <modify-argument index="return"> <define-ownership owner="default"/> @@ -2028,7 +2028,7 @@ <include file-name="QMessageBox" location="global"/> </extra-includes> - <inject-code class="native" file="glue/qwidget_glue.cpp" position="beginning"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-glue"/> <enum-type name="RenderFlag" flags="RenderFlags"/> @@ -2947,7 +2947,7 @@ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qapplication-setStyle"/> </modify-function> <modify-function signature="exec()" rename="exec_" allow-thread="yes"/> - <inject-code class="native" file="glue/qapplication_init.cpp" position="beginning"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qapplication-init"/> </object-type> <object-type name="QCommandLinkButton"/> @@ -2960,7 +2960,7 @@ </modify-function> </object-type> <object-type name="QFormLayout"> - <inject-code class="native" position="beginning" file="glue/qlayout_help_functions.cpp"/> + <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/> <enum-type name="FieldGrowthPolicy"/> <enum-type name="ItemRole"/> |