From 01a38942c96d94efcf91d69ffa47814985e394d2 Mon Sep 17 00:00:00 2001 From: Cristian Maureira-Fredes Date: Tue, 6 Apr 2021 22:16:57 +0200 Subject: Enable the exec() functions With Qt6, PySide dropped support for Python 2.7, thus it does not make sense to keep our exec_() renaming inplace. This patch will enable the exec() functions, and adds a deprecation note for exec_(), which will enable us to safely remove it in the future. Change-Id: I7375e10632e7ab534ca264304a5a65f380b9b1bb Reviewed-by: Christian Tismer (cherry picked from commit 62acb997f7fce1ae922e3a9995272c78353048b9) Reviewed-by: Friedemann Kleint --- .../PySide6/QtCore/typesystem_core_common.xml | 20 ++++- .../PySide6/QtGui/typesystem_gui_common.xml | 15 +++- .../typesystem_printsupport_common.xml | 10 ++- sources/pyside6/PySide6/QtSql/typesystem_sql.xml | 22 ++++- .../QtWidgets/typesystem_widgets_common.xml | 29 +++++-- sources/pyside6/PySide6/glue/qtcore.cpp | 73 +++++++++++++++- sources/pyside6/PySide6/glue/qtgui.cpp | 45 ++++++++++ sources/pyside6/PySide6/glue/qtprintsupport.cpp | 13 +++ sources/pyside6/PySide6/glue/qtsql.cpp | 96 ++++++++++++++++++++++ sources/pyside6/PySide6/glue/qtwidgets.cpp | 52 ++++++++++++ 10 files changed, 355 insertions(+), 20 deletions(-) create mode 100644 sources/pyside6/PySide6/glue/qtsql.cpp diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml index 510330ffc..55dfb76b2 100644 --- a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml +++ b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml @@ -1454,7 +1454,10 @@ - + + + + @@ -2085,7 +2088,10 @@ - + + + + @@ -2408,7 +2414,10 @@ - + + + + @@ -2628,7 +2637,10 @@ - + + + + diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml index 117476f23..66d7780ba 100644 --- a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml +++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml @@ -1504,8 +1504,14 @@ - - + + + + + + + + @@ -2491,7 +2497,10 @@ - + + + + diff --git a/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport_common.xml b/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport_common.xml index 586b63ce5..5b5c01276 100644 --- a/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport_common.xml +++ b/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport_common.xml @@ -43,7 +43,10 @@ - + + + + @@ -52,7 +55,10 @@ - + + + + diff --git a/sources/pyside6/PySide6/QtSql/typesystem_sql.xml b/sources/pyside6/PySide6/QtSql/typesystem_sql.xml index b7747adf0..1698c0bf1 100644 --- a/sources/pyside6/PySide6/QtSql/typesystem_sql.xml +++ b/sources/pyside6/PySide6/QtSql/typesystem_sql.xml @@ -65,7 +65,10 @@ - + + + + @@ -86,8 +89,16 @@ - - + + + + + + + + + + @@ -169,7 +180,10 @@ - + + + + diff --git a/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml b/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml index 7204fed89..4f1ee2472 100644 --- a/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml +++ b/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml @@ -490,7 +490,10 @@ - + + + + @@ -780,10 +783,21 @@ - - - - + + + + + + + + + + + + + + + @@ -2801,7 +2815,10 @@ - + + + + diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp index e4e964e73..f4521c1b4 100644 --- a/sources/pyside6/PySide6/glue/qtcore.cpp +++ b/sources/pyside6/PySide6/glue/qtcore.cpp @@ -1541,7 +1541,78 @@ Py_END_ALLOW_THREADS } } // @snippet qt-module-shutdown - +// +// @snippet qthread_exec_ +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +#ifndef AVOID_PROTECTED_HACK +int cppResult = %CPPSELF.exec(); +#else +int cppResult = static_cast<::QThreadWrapper *>(cppSelf)->QThreadWrapper::exec_protected(); +#endif +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](cppResult); +// @snippet qthread_exec_ + +// @snippet exec_ +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +int cppResult = %CPPSELF.exec(); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](cppResult); +// @snippet exec_ + +// @snippet exec_arg1 +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +int cppResult; +if (numArgs == 1) + cppResult = %CPPSELF.exec(%1); +else + cppResult = %CPPSELF.exec(); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](cppResult); +// @snippet exec_arg1 + +// @snippet exec_arg1_noreturn +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +if (numArgs == 1) + %CPPSELF.exec(%1); +else + %CPPSELF.exec(); +%END_ALLOW_THREADS +// @snippet exec_arg1_noreturn + +// @snippet qtextstreammanipulator-exec +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%CPPSELF.exec(%1); +// @snippet qtextstreammanipulator-exec /********************************************************************* * CONVERSIONS diff --git a/sources/pyside6/PySide6/glue/qtgui.cpp b/sources/pyside6/PySide6/glue/qtgui.cpp index 28d7c468e..48d246ddc 100644 --- a/sources/pyside6/PySide6/glue/qtgui.cpp +++ b/sources/pyside6/PySide6/glue/qtgui.cpp @@ -559,6 +559,51 @@ if (!result.isNull()) Shiboken::Object::setParent(%PYARG_2, %PYSELF); // @snippet qshortcut-2 +// @snippet qguiapplication-exec +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +int cppResult = %CPPSELF.exec(); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](cppResult); +// @snippet qguiapplication-exec + +// @snippet qdrag-exec-arg1 +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +int cppResult = %CPPSELF.exec(%1); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](cppResult); +// @snippet qdrag-exec-arg1 + +// @snippet qdrag-exec-arg2 +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +int cppResult; +if (numArgs == 2) + cppResult = %CPPSELF.exec(%1, %2); +else if (numArgs == 1) + cppResult = %CPPSELF.exec(%1); +else + cppResult = %CPPSELF.exec(); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](cppResult); +// @snippet qdrag-exec-arg2 + /********************************************************************* * CONVERSIONS ********************************************************************/ diff --git a/sources/pyside6/PySide6/glue/qtprintsupport.cpp b/sources/pyside6/PySide6/glue/qtprintsupport.cpp index 300a498c0..acd8eb4e2 100644 --- a/sources/pyside6/PySide6/glue/qtprintsupport.cpp +++ b/sources/pyside6/PySide6/glue/qtprintsupport.cpp @@ -41,3 +41,16 @@ bool out = %CPPSELF.setPageSize(%1); %PYARG_0 = %CONVERTTOPYTHON[bool](out); // @snippet setpagesize + +// @snippet exec +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +int cppResult = %CPPSELF.exec(); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](cppResult); +// @snippet exec diff --git a/sources/pyside6/PySide6/glue/qtsql.cpp b/sources/pyside6/PySide6/glue/qtsql.cpp new file mode 100644 index 000000000..34860ab9b --- /dev/null +++ b/sources/pyside6/PySide6/glue/qtsql.cpp @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2021 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$ +** +****************************************************************************/ + + +// @snippet simple-exec +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +bool cppResult = %CPPSELF.exec(); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[bool](cppResult); +// @snippet simple-exec + + +// @snippet qsqldatabase-exec +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +QSqlQuery cppResult = %CPPSELF.exec(%1); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[QSqlQuery](cppResult); +// @snippet qsqldatabase-exec + +// @snippet qsqlquery-exec +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +bool cppResult = %CPPSELF.exec(%1); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[bool](cppResult); +// @snippet qsqlquery-exec + +// @snippet qsqlresult-exec +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +#ifndef AVOID_PROTECTED_HACK +bool cppResult = %CPPSELF.exec(); +#else +bool cppResult = static_cast<::QSqlResultWrapper *>(cppSelf)->QSqlResultWrapper::exec_protected(); +#endif +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[bool](cppResult); +// @snippet qsqlresult-exec diff --git a/sources/pyside6/PySide6/glue/qtwidgets.cpp b/sources/pyside6/PySide6/glue/qtwidgets.cpp index f41bc7616..bd431655e 100644 --- a/sources/pyside6/PySide6/glue/qtwidgets.cpp +++ b/sources/pyside6/PySide6/glue/qtwidgets.cpp @@ -632,6 +632,58 @@ if (_old) Shiboken::Object::setParent(%PYSELF, %PYARG_1); // @snippet qgraphicsproxywidget-setwidget +// @snippet qapplication-exec +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +int cppResult = %CPPSELF.exec(); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[int](cppResult); +// @snippet qapplication-exec + +// @snippet qmenu-exec-1 +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +QAction *cppResult = %CPPSELF.exec(); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[QAction](cppResult); +// @snippet qmenu-exec-1 + +// @snippet qmenu-exec-2 +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +QAction *cppResult = %CPPSELF.exec(%1, %2); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[QAction](cppResult); +// @snippet qmenu-exec-2 + +// @snippet qmenu-exec-3 +if (PyErr_WarnEx(PyExc_DeprecationWarning, + "'exec_' will be removed in the future. " + "Use 'exec' instead.", + 1)) { + return nullptr; +} +%BEGIN_ALLOW_THREADS +QAction *cppResult = %CPPSELF.exec(%1, %2, %3, %4); +%END_ALLOW_THREADS +%PYARG_0 = %CONVERTTOPYTHON[QAction*](cppResult); +// @snippet qmenu-exec-3 + /********************************************************************* * CONVERSIONS ********************************************************************/ -- cgit v1.2.3