aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/PySide6
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/PySide6')
-rw-r--r--sources/pyside6/PySide6/CMakeLists.txt114
-rw-r--r--sources/pyside6/PySide6/Qt3DAnimation/CMakeLists.txt69
-rw-r--r--sources/pyside6/PySide6/Qt3DAnimation/typesystem_3danimation.xml60
-rw-r--r--sources/pyside6/PySide6/Qt3DCore/CMakeLists.txt62
-rw-r--r--sources/pyside6/PySide6/Qt3DCore/typesystem_3dcore.xml82
-rw-r--r--sources/pyside6/PySide6/Qt3DExtras/CMakeLists.txt85
-rw-r--r--sources/pyside6/PySide6/Qt3DExtras/typesystem_3dextras.xml58
-rw-r--r--sources/pyside6/PySide6/Qt3DInput/CMakeLists.txt54
-rw-r--r--sources/pyside6/PySide6/Qt3DInput/typesystem_3dinput.xml58
-rw-r--r--sources/pyside6/PySide6/Qt3DLogic/CMakeLists.txt35
-rw-r--r--sources/pyside6/PySide6/Qt3DLogic/typesystem_3dlogic.xml14
-rw-r--r--sources/pyside6/PySide6/Qt3DRender/CMakeLists.txt158
-rw-r--r--sources/pyside6/PySide6/Qt3DRender/typesystem_3drender.xml241
-rw-r--r--sources/pyside6/PySide6/QtAsyncio/__init__.py60
-rw-r--r--sources/pyside6/PySide6/QtAsyncio/events.py725
-rw-r--r--sources/pyside6/PySide6/QtAsyncio/futures.py117
-rw-r--r--sources/pyside6/PySide6/QtAsyncio/tasks.py190
-rw-r--r--sources/pyside6/PySide6/QtAxContainer/CMakeLists.txt47
-rw-r--r--sources/pyside6/PySide6/QtAxContainer/QtAxContainer_global.post.h.in1
-rw-r--r--sources/pyside6/PySide6/QtAxContainer/typesystem_axcontainer.xml40
-rw-r--r--sources/pyside6/PySide6/QtBluetooth/CMakeLists.txt56
-rw-r--r--sources/pyside6/PySide6/QtBluetooth/typesystem_bluetooth.xml120
-rw-r--r--sources/pyside6/PySide6/QtCharts/CMakeLists.txt85
-rw-r--r--sources/pyside6/PySide6/QtCharts/typesystem_charts.xml256
-rw-r--r--sources/pyside6/PySide6/QtConcurrent/CMakeLists.txt33
-rw-r--r--sources/pyside6/PySide6/QtConcurrent/curr_errors.txt21
-rw-r--r--sources/pyside6/PySide6/QtConcurrent/typesystem_concurrent.xml35
-rw-r--r--sources/pyside6/PySide6/QtCore/CMakeLists.txt291
-rw-r--r--sources/pyside6/PySide6/QtCore/QtCore_global.post.h.in2
-rw-r--r--sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp346
-rw-r--r--sources/pyside6/PySide6/QtCore/glue/core_snippets_p.h105
-rw-r--r--sources/pyside6/PySide6/QtCore/glue/qeasingcurve_glue.cpp123
-rw-r--r--sources/pyside6/PySide6/QtCore/glue/qeasingcurve_glue.h30
-rw-r--r--sources/pyside6/PySide6/QtCore/glue/qiopipe.cpp142
-rw-r--r--sources/pyside6/PySide6/QtCore/glue/qtcorehelper.cpp108
-rw-r--r--sources/pyside6/PySide6/QtCore/typesystem_core.xml12
-rw-r--r--sources/pyside6/PySide6/QtCore/typesystem_core_common.xml3630
-rw-r--r--sources/pyside6/PySide6/QtCore/typesystem_core_win.xml32
-rw-r--r--sources/pyside6/PySide6/QtDBus/CMakeLists.txt54
-rw-r--r--sources/pyside6/PySide6/QtDBus/QtDBus_global.post.h.in1
-rw-r--r--sources/pyside6/PySide6/QtDBus/typesystem_dbus.xml115
-rw-r--r--sources/pyside6/PySide6/QtDataVisualization/CMakeLists.txt71
-rw-r--r--sources/pyside6/PySide6/QtDataVisualization/qtdatavisualization_helper.cpp97
-rw-r--r--sources/pyside6/PySide6/QtDataVisualization/typesystem_datavisualization.xml476
-rw-r--r--sources/pyside6/PySide6/QtDesigner/CMakeLists.txt70
-rw-r--r--sources/pyside6/PySide6/QtDesigner/QtDesigner_global.post.h.in1
-rw-r--r--sources/pyside6/PySide6/QtDesigner/QtDesigner_global.pre.h.in3
-rw-r--r--sources/pyside6/PySide6/QtDesigner/qpydesignercustomwidgetcollection.cpp223
-rw-r--r--sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml103
-rw-r--r--sources/pyside6/PySide6/QtGraphs/CMakeLists.txt100
-rw-r--r--sources/pyside6/PySide6/QtGraphs/qtgraphs_helper.cpp97
-rw-r--r--sources/pyside6/PySide6/QtGraphs/typesystem_graphs.xml303
-rw-r--r--sources/pyside6/PySide6/QtGui/CMakeLists.txt355
-rw-r--r--sources/pyside6/PySide6/QtGui/QtGui_global.post.h.in6
-rw-r--r--sources/pyside6/PySide6/QtGui/typesystem_gui.xml20
-rw-r--r--sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml3182
-rw-r--r--sources/pyside6/PySide6/QtGui/typesystem_gui_mac.xml6
-rw-r--r--sources/pyside6/PySide6/QtGui/typesystem_gui_rhi.xml176
-rw-r--r--sources/pyside6/PySide6/QtGui/typesystem_gui_win.xml43
-rw-r--r--sources/pyside6/PySide6/QtGui/typesystem_gui_x11.xml9
-rw-r--r--sources/pyside6/PySide6/QtHelp/CMakeLists.txt53
-rw-r--r--sources/pyside6/PySide6/QtHelp/QtHelp_global.pre.h.in3
-rw-r--r--sources/pyside6/PySide6/QtHelp/typesystem_help.xml37
-rw-r--r--sources/pyside6/PySide6/QtHttpServer/CMakeLists.txt40
-rw-r--r--sources/pyside6/PySide6/QtHttpServer/typesystem_httpserver.xml38
-rw-r--r--sources/pyside6/PySide6/QtLocation/CMakeLists.txt70
-rw-r--r--sources/pyside6/PySide6/QtLocation/typesystem_location.xml82
-rw-r--r--sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt65
-rw-r--r--sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml180
-rw-r--r--sources/pyside6/PySide6/QtMultimediaWidgets/CMakeLists.txt39
-rw-r--r--sources/pyside6/PySide6/QtMultimediaWidgets/typesystem_multimediawidgets.xml15
-rw-r--r--sources/pyside6/PySide6/QtNetwork/CMakeLists.txt121
-rw-r--r--sources/pyside6/PySide6/QtNetwork/typesystem_network.xml475
-rw-r--r--sources/pyside6/PySide6/QtNetworkAuth/CMakeLists.txt38
-rw-r--r--sources/pyside6/PySide6/QtNetworkAuth/typesystem_networkauth.xml110
-rw-r--r--sources/pyside6/PySide6/QtNfc/CMakeLists.txt38
-rw-r--r--sources/pyside6/PySide6/QtNfc/typesystem_nfc.xml35
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/CMakeLists.txt100
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/QtOpenGL_global.post.h.in35
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/glue/utils.cpp40
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_glgeti_v_includes.xml1
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_glgeti_v_modifications.xml18
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_glgetv_includes.xml5
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_glgetv_modifications.xml36
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl.xml723
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_0.xml15
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_0_compat.xml67
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_1.xml8
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_1_compat.xml11
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_2_compat.xml10
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_3_compat.xml10
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_4.xml11
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_4_compat.xml13
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_0.xml13
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_0_compat.xml1
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_1.xml7
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_0.xml10
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_3.xml10
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_3a.xml21
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_0.xml10
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_1.xml40
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_3.xml7
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_4.xml20
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_4_core.xml7
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_5.xml21
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_5_core.xml5
-rw-r--r--sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications_va.xml7
-rw-r--r--sources/pyside6/PySide6/QtOpenGLWidgets/CMakeLists.txt33
-rw-r--r--sources/pyside6/PySide6/QtOpenGLWidgets/typesystem_openglwidgets.xml16
-rw-r--r--sources/pyside6/PySide6/QtPdf/CMakeLists.txt42
-rw-r--r--sources/pyside6/PySide6/QtPdf/typesystem_pdf.xml35
-rw-r--r--sources/pyside6/PySide6/QtPdfWidgets/CMakeLists.txt39
-rw-r--r--sources/pyside6/PySide6/QtPdfWidgets/typesystem_pdfwidgets.xml17
-rw-r--r--sources/pyside6/PySide6/QtPositioning/CMakeLists.txt60
-rw-r--r--sources/pyside6/PySide6/QtPositioning/typesystem_positioning.xml51
-rw-r--r--sources/pyside6/PySide6/QtPrintSupport/CMakeLists.txt40
-rw-r--r--sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport.xml10
-rw-r--r--sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport_common.xml71
-rw-r--r--sources/pyside6/PySide6/QtQml/CMakeLists.txt76
-rw-r--r--sources/pyside6/PySide6/QtQml/QtQml_global.post.h.in2
-rw-r--r--sources/pyside6/PySide6/QtQml/pysideqmlvolatilebool.cpp161
-rw-r--r--sources/pyside6/PySide6/QtQml/pysideqmlvolatilebool.h15
-rw-r--r--sources/pyside6/PySide6/QtQml/typesystem_qml.xml340
-rw-r--r--sources/pyside6/PySide6/QtQuick/CMakeLists.txt119
-rw-r--r--sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp76
-rw-r--r--sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h14
-rw-r--r--sources/pyside6/PySide6/QtQuick/typesystem_quick.xml251
-rw-r--r--sources/pyside6/PySide6/QtQuick3D/CMakeLists.txt54
-rw-r--r--sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml30
-rw-r--r--sources/pyside6/PySide6/QtQuickControls2/CMakeLists.txt46
-rw-r--r--sources/pyside6/PySide6/QtQuickControls2/typesystem_quickcontrols2.xml13
-rw-r--r--sources/pyside6/PySide6/QtQuickTest/CMakeLists.txt44
-rw-r--r--sources/pyside6/PySide6/QtQuickTest/typesystem_quicktest.xml33
-rw-r--r--sources/pyside6/PySide6/QtQuickWidgets/CMakeLists.txt48
-rw-r--r--sources/pyside6/PySide6/QtQuickWidgets/typesystem_quickwidgets.xml19
-rw-r--r--sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt53
-rw-r--r--sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml56
-rw-r--r--sources/pyside6/PySide6/QtScxml/CMakeLists.txt52
-rw-r--r--sources/pyside6/PySide6/QtScxml/typesystem_scxml.xml52
-rw-r--r--sources/pyside6/PySide6/QtSensors/CMakeLists.txt94
-rw-r--r--sources/pyside6/PySide6/QtSensors/typesystem_sensors.xml87
-rw-r--r--sources/pyside6/PySide6/QtSerialBus/CMakeLists.txt66
-rw-r--r--sources/pyside6/PySide6/QtSerialBus/typesystem_serialbus.xml118
-rw-r--r--sources/pyside6/PySide6/QtSerialPort/CMakeLists.txt34
-rw-r--r--sources/pyside6/PySide6/QtSerialPort/typesystem_serialport.xml20
-rw-r--r--sources/pyside6/PySide6/QtSpatialAudio/CMakeLists.txt40
-rw-r--r--sources/pyside6/PySide6/QtSpatialAudio/typesystem_spatialaudio.xml32
-rw-r--r--sources/pyside6/PySide6/QtSql/CMakeLists.txt52
-rw-r--r--sources/pyside6/PySide6/QtSql/QtSql_global.pre.h.in5
-rw-r--r--sources/pyside6/PySide6/QtSql/typesystem_sql.xml182
-rw-r--r--sources/pyside6/PySide6/QtStateMachine/CMakeLists.txt42
-rw-r--r--sources/pyside6/PySide6/QtStateMachine/typesystem_statemachine.xml195
-rw-r--r--sources/pyside6/PySide6/QtSvg/CMakeLists.txt34
-rw-r--r--sources/pyside6/PySide6/QtSvg/typesystem_svg.xml30
-rw-r--r--sources/pyside6/PySide6/QtSvgWidgets/CMakeLists.txt36
-rw-r--r--sources/pyside6/PySide6/QtSvgWidgets/typesystem_svgwidgets.xml25
-rw-r--r--sources/pyside6/PySide6/QtTest/CMakeLists.txt46
-rw-r--r--sources/pyside6/PySide6/QtTest/QtTest_global.post.h.in1
-rw-r--r--sources/pyside6/PySide6/QtTest/QtTest_global.pre.h.in5
-rw-r--r--sources/pyside6/PySide6/QtTest/typesystem_test.xml130
-rw-r--r--sources/pyside6/PySide6/QtTextToSpeech/CMakeLists.txt31
-rw-r--r--sources/pyside6/PySide6/QtTextToSpeech/typesystem_texttospeech.xml21
-rw-r--r--sources/pyside6/PySide6/QtUiTools/CMakeLists.txt45
-rw-r--r--sources/pyside6/PySide6/QtUiTools/QtUiTools_global.pre.h.in7
-rw-r--r--sources/pyside6/PySide6/QtUiTools/glue/plugins.h31
-rw-r--r--sources/pyside6/PySide6/QtUiTools/typesystem_uitools.xml88
-rw-r--r--sources/pyside6/PySide6/QtWebChannel/CMakeLists.txt30
-rw-r--r--sources/pyside6/PySide6/QtWebChannel/typesystem_webchannel.xml23
-rw-r--r--sources/pyside6/PySide6/QtWebEngineCore/CMakeLists.txt75
-rw-r--r--sources/pyside6/PySide6/QtWebEngineCore/typesystem_webenginecore.xml192
-rw-r--r--sources/pyside6/PySide6/QtWebEngineQuick/CMakeLists.txt43
-rw-r--r--sources/pyside6/PySide6/QtWebEngineQuick/typesystem_webenginequick.xml18
-rw-r--r--sources/pyside6/PySide6/QtWebEngineWidgets/CMakeLists.txt45
-rw-r--r--sources/pyside6/PySide6/QtWebEngineWidgets/typesystem_webenginewidgets.xml21
-rw-r--r--sources/pyside6/PySide6/QtWebSockets/CMakeLists.txt37
-rw-r--r--sources/pyside6/PySide6/QtWebSockets/typesystem_websockets.xml34
-rw-r--r--sources/pyside6/PySide6/QtWidgets/CMakeLists.txt226
-rw-r--r--sources/pyside6/PySide6/QtWidgets/typesystem_widgets.xml10
-rw-r--r--sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml3420
-rw-r--r--sources/pyside6/PySide6/QtXml/CMakeLists.txt45
-rw-r--r--sources/pyside6/PySide6/QtXml/typesystem_xml.xml173
-rw-r--r--sources/pyside6/PySide6/__feature__.pyi.in10
-rw-r--r--sources/pyside6/PySide6/__init__.py.in124
-rw-r--r--sources/pyside6/PySide6/_config.py.in17
-rw-r--r--sources/pyside6/PySide6/doc/qtqml_functions.rst152
-rw-r--r--sources/pyside6/PySide6/doc/qtquicktest.rst62
-rw-r--r--sources/pyside6/PySide6/doc/qtuitools.rst68
-rw-r--r--sources/pyside6/PySide6/global.h.in20
-rw-r--r--sources/pyside6/PySide6/glue/qhttpserver.cpp50
-rw-r--r--sources/pyside6/PySide6/glue/qtcharts.cpp16
-rw-r--r--sources/pyside6/PySide6/glue/qtcore.cpp2150
-rw-r--r--sources/pyside6/PySide6/glue/qtdatavisualization.cpp90
-rw-r--r--sources/pyside6/PySide6/glue/qtdesigner.cpp7
-rw-r--r--sources/pyside6/PySide6/glue/qtgraphs.cpp8
-rw-r--r--sources/pyside6/PySide6/glue/qtgui.cpp947
-rw-r--r--sources/pyside6/PySide6/glue/qtmultimedia.cpp28
-rw-r--r--sources/pyside6/PySide6/glue/qtnetwork.cpp130
-rw-r--r--sources/pyside6/PySide6/glue/qtnetworkauth.cpp44
-rw-r--r--sources/pyside6/PySide6/glue/qtopengl.cpp89
-rw-r--r--sources/pyside6/PySide6/glue/qtpositioning.cpp14
-rw-r--r--sources/pyside6/PySide6/glue/qtprintsupport.cpp20
-rw-r--r--sources/pyside6/PySide6/glue/qtqml.cpp90
-rw-r--r--sources/pyside6/PySide6/glue/qtquick.cpp27
-rw-r--r--sources/pyside6/PySide6/glue/qtquicktest.cpp50
-rw-r--r--sources/pyside6/PySide6/glue/qtserialbus.cpp30
-rw-r--r--sources/pyside6/PySide6/glue/qtsql.cpp60
-rw-r--r--sources/pyside6/PySide6/glue/qtstatemachine.cpp67
-rw-r--r--sources/pyside6/PySide6/glue/qttest.cpp24
-rw-r--r--sources/pyside6/PySide6/glue/qtuitools.cpp212
-rw-r--r--sources/pyside6/PySide6/glue/qtwebenginecore.cpp64
-rw-r--r--sources/pyside6/PySide6/glue/qtwebenginewidgets.cpp121
-rw-r--r--sources/pyside6/PySide6/glue/qtwidgets.cpp818
-rw-r--r--sources/pyside6/PySide6/glue/qtxml.cpp17
-rw-r--r--sources/pyside6/PySide6/licensecomment.txt2
-rw-r--r--sources/pyside6/PySide6/py.typed.in1
-rw-r--r--sources/pyside6/PySide6/pysideqtesttouch.h179
-rw-r--r--sources/pyside6/PySide6/pysidewtypes.h30
-rw-r--r--sources/pyside6/PySide6/qiopipe.h36
-rw-r--r--sources/pyside6/PySide6/qpydesignerextensions.h84
-rw-r--r--sources/pyside6/PySide6/qpyqmlparserstatus.h28
-rw-r--r--sources/pyside6/PySide6/qpyqmlpropertyvaluesource.h27
-rw-r--r--sources/pyside6/PySide6/qpytextobject.cpp14
-rw-r--r--sources/pyside6/PySide6/qpytextobject.h28
-rw-r--r--sources/pyside6/PySide6/qt.conf.in2
-rw-r--r--sources/pyside6/PySide6/qtcorehelper.h122
-rw-r--r--sources/pyside6/PySide6/qtdatavisualization_helper.h19
-rw-r--r--sources/pyside6/PySide6/qtdbushelper.h62
-rw-r--r--sources/pyside6/PySide6/qtgraphs_helper.h19
-rw-r--r--sources/pyside6/PySide6/qtguihelper.h35
-rw-r--r--sources/pyside6/PySide6/support/__init__.py6
-rw-r--r--sources/pyside6/PySide6/support/deprecated.py18
-rw-r--r--sources/pyside6/PySide6/support/generate_pyi.py93
-rw-r--r--sources/pyside6/PySide6/templates/common.xml27
-rw-r--r--sources/pyside6/PySide6/templates/core_common.xml287
-rw-r--r--sources/pyside6/PySide6/templates/datavisualization_common.xml40
-rw-r--r--sources/pyside6/PySide6/templates/gui_common.xml266
-rw-r--r--sources/pyside6/PySide6/templates/opengl_common.xml30
-rw-r--r--sources/pyside6/PySide6/templates/widgets_common.xml55
238 files changed, 30922 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/CMakeLists.txt b/sources/pyside6/PySide6/CMakeLists.txt
new file mode 100644
index 000000000..37b7a6c9c
--- /dev/null
+++ b/sources/pyside6/PySide6/CMakeLists.txt
@@ -0,0 +1,114 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(pyside6)
+
+# Configure include based on platform
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/global.h.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/pyside6_global.h" @ONLY)
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/__init__.py.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/__init__.py" @ONLY)
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/_config.py.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/_config.py" @ONLY)
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/__feature__.pyi.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/__feature__.pyi" @ONLY)
+# typing support for mypy
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/py.typed.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/py.typed" @ONLY)
+
+# Use absolute path instead of relative path, to avoid ninja build errors due to
+# duplicate file dependency inconsistency.
+set(pyside_version_relative_path "${CMAKE_CURRENT_SOURCE_DIR}/../pyside_version.py")
+get_filename_component(pyside_version_path ${pyside_version_relative_path} ABSOLUTE)
+configure_file("${pyside_version_path}"
+ "${CMAKE_CURRENT_BINARY_DIR}/_git_pyside_version.py" @ONLY)
+
+# qt.conf needs to be placed next to QtWebEngineProcess so that the executable uses the correct
+# Prefix location leading to an existing icu data file. It is needed on Windows, Linux, and macOS
+# non-framework build. In framework build, instead of using qt.conf, Bundle querying is used.
+if (WIN32 OR (UNIX AND NOT APPLE) OR (APPLE AND NOT QtCore_is_framework))
+
+ if (WIN32)
+ # On Windows, the QtWebEngineProcess is directly located in the Prefix, due to not using
+ # a "Qt" subfolder like on the other platforms.
+ set(QT_CONF_PREFIX ".")
+ else()
+ # On Linux and non-framework macOS, the QtWebEngineProcess is in ./libexec, so prefix is one
+ # level higher.
+ set(QT_CONF_PREFIX "..")
+ endif()
+
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/qt.conf.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/qt.conf" @ONLY)
+endif()
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/support/__init__.py"
+ "${CMAKE_CURRENT_BINARY_DIR}/support/__init__.py" COPYONLY)
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/support/generate_pyi.py"
+ "${CMAKE_CURRENT_BINARY_DIR}/support/generate_pyi.py" COPYONLY)
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/support/deprecated.py"
+ "${CMAKE_CURRENT_BINARY_DIR}/support/deprecated.py" COPYONLY)
+
+# now compile all modules.
+file(READ "${CMAKE_CURRENT_BINARY_DIR}/pyside6_global.h" pyside6_global_contents)
+
+foreach(shortname IN LISTS all_module_shortnames)
+ set(name "Qt${QT_MAJOR_VERSION}${shortname}")
+ set(_qt_module_name "${name}")
+ if ("${shortname}" STREQUAL "OpenGLFunctions")
+ set(_qt_module_name "Qt${QT_MAJOR_VERSION}Gui")
+ endif()
+ HAS_QT_MODULE(${_qt_module_name}_FOUND Qt${shortname})
+
+ # Create a module header consisting of pyside6_global.h and the module
+ # include. Note: The contents of pyside6_global.h must be copied instead of
+ # just #including it since shiboken will otherwise generate an
+ # #include <pyside6_global.h> for the the type entries originating from it
+ # (cf AbstractMetaBuilderPrivate::setInclude()).
+ set(module_header "${CMAKE_CURRENT_BINARY_DIR}/Qt${shortname}_global.h")
+ set(module_header_content "")
+ set(pre_header "${CMAKE_CURRENT_BINARY_DIR}/Qt${shortname}/Qt${shortname}_global.pre.h")
+ if(EXISTS "${pre_header}")
+ file(READ "${pre_header}" pre_header_content)
+ set(module_header_content "${pre_header_content}")
+ endif()
+ set(module_header_content "${module_header_content}\n${pyside6_global_contents}")
+ # AxContainer/AxServer from Active Qt do not have module headers
+ if(NOT "${shortname}" STREQUAL "AxContainer" AND NOT "${shortname}" STREQUAL "OpenGLFunctions")
+ set(module_header_content "${module_header_content}\n#include <Qt${shortname}/Qt${shortname}>")
+ endif()
+ set(post_header "${CMAKE_CURRENT_BINARY_DIR}/Qt${shortname}/Qt${shortname}_global.post.h")
+ if(EXISTS "${post_header}")
+ file(READ "${post_header}" post_header_content)
+ set(module_header_content "${module_header_content}\n${post_header_content}")
+ endif()
+ file(WRITE ${module_header} "${module_header_content}")
+endforeach()
+
+# install
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/__init__.py"
+ DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside6_SUFFIX}")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/_config.py"
+ DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside6_SUFFIX}")
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/_git_pyside_version.py"
+ DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside6_SUFFIX}")
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/support"
+ DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside6_SUFFIX}")
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/common.xml
+ DESTINATION share/PySide6${pyside_SUFFIX}/typesystems)
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/core_common.xml
+ DESTINATION share/PySide6${pyside_SUFFIX}/typesystems)
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/gui_common.xml
+ DESTINATION share/PySide6${pyside_SUFFIX}/typesystems)
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/widgets_common.xml
+ DESTINATION share/PySide6${pyside_SUFFIX}/typesystems)
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/datavisualization_common.xml
+ DESTINATION share/PySide6${pyside_SUFFIX}/typesystems)
+install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/templates/opengl_common.xml
+ DESTINATION share/PySide6${pyside_SUFFIX}/typesystems)
+install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pyside6_global.h
+ DESTINATION include/${BINDING_NAME}${pyside6_SUFFIX})
+
+install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/QtAsyncio"
+ DESTINATION "${PYTHON_SITE_PACKAGES}/${BINDING_NAME}${pyside6_SUFFIX}")
diff --git a/sources/pyside6/PySide6/Qt3DAnimation/CMakeLists.txt b/sources/pyside6/PySide6/Qt3DAnimation/CMakeLists.txt
new file mode 100644
index 000000000..d9169924e
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DAnimation/CMakeLists.txt
@@ -0,0 +1,69 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(Qt3DAnimation)
+
+set(Qt3DAnimation_SRC
+${Qt3DAnimation_GEN_DIR}/qt3danimation_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qabstractanimation_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qabstractanimationclip_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qabstractchannelmapping_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qabstractclipanimator_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qabstractclipblendnode_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qadditiveclipblend_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qanimationaspect_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qanimationcallback_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qanimationclip_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qanimationclipdata_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qanimationcliploader_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qanimationcontroller_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qanimationgroup_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qblendedclipanimator_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qcallbackmapping_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qchannel_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qchannelcomponent_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qchannelmapper_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qchannelmapping_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qclipanimator_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qclipblendvalue_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qclock_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qkeyframe_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qkeyframeanimation_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qlerpclipblend_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qmorphinganimation_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qmorphtarget_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qskeletonmapping_wrapper.cpp
+${Qt3DAnimation_GEN_DIR}/qt3danimation_qvertexblendanimation_wrapper.cpp
+# module is always needed
+${Qt3DAnimation_GEN_DIR}/qt3danimation_module_wrapper.cpp)
+
+set(Qt3DAnimation_include_dirs
+ ${Qt3DAnimation_SOURCE_DIR}
+ ${Qt3DAnimation_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIR}
+ ${Qt${QT_MAJOR_VERSION}OpenGL_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}3DCore_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}3DRender_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}3DAnimation_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtOpenGL_GEN_DIR}
+ ${Qt3DCore_GEN_DIR}
+ ${Qt3DRender_GEN_DIR}
+ ${Qt3DAnimation_GEN_DIR})
+
+set(Qt3DAnimation_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}3DAnimation_LIBRARIES})
+
+set(Qt3DAnimation_deps Qt3DRender)
+
+create_pyside_module(NAME Qt3DAnimation
+ INCLUDE_DIRS Qt3DAnimation_include_dirs
+ LIBRARIES Qt3DAnimation_libraries
+ DEPS Qt3DAnimation_deps
+ TYPESYSTEM_PATH Qt3DAnimation_SOURCE_DIR
+ SOURCES Qt3DAnimation_SRC
+ TYPESYSTEM_NAME ${Qt3DAnimation_BINARY_DIR}/typesystem_3danimation.xml)
diff --git a/sources/pyside6/PySide6/Qt3DAnimation/typesystem_3danimation.xml b/sources/pyside6/PySide6/Qt3DAnimation/typesystem_3danimation.xml
new file mode 100644
index 000000000..61af82d6d
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DAnimation/typesystem_3danimation.xml
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.Qt3DAnimation"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="Qt3DRender/typesystem_3drender.xml" generate="no"/>
+ <namespace-type name="Qt3DAnimation">
+ <object-type name="QAbstractAnimation">
+ <enum-type name="AnimationType"/>
+ <!-- Disambiguate from QtCore/qabstractanimation.h -->
+ <include file-name="Qt3DAnimation/qabstractanimation.h" location="global"/>
+ </object-type>
+ <object-type name="QAbstractAnimationClip"/>
+ <value-type name="QAnimationClipData" since="6.1"/>
+ <object-type name="QAbstractChannelMapping"/>
+ <object-type name="QAbstractClipAnimator">
+ <enum-type name="Loops"/>
+ </object-type>
+ <object-type name="QAbstractClipBlendNode"/>
+ <object-type name="QAdditiveClipBlend"/>
+ <object-type name="QAnimationAspect"/>
+ <object-type name="QAnimationCallback">
+ <enum-type name="Flag"/>
+ </object-type>
+ <object-type name="QAnimationClip"/>
+ <object-type name="QAnimationClipLoader">
+ <enum-type name="Status"/>
+ </object-type>
+ <object-type name="QAnimationController"/>
+ <object-type name="QAnimationGroup">
+ <!-- Disambiguate from QtCore/qanimationgroup.h -->
+ <include file-name="Qt3DAnimation/qanimationgroup.h" location="global"/>
+ </object-type>
+ <object-type name="QBlendedClipAnimator"/>
+ <value-type name="QChannel"/>
+ <value-type name="QChannelComponent"/>
+ <object-type name="QCallbackMapping"/>
+ <object-type name="QChannelMapper" since="6.1"/>
+ <object-type name="QChannelMapping"/>
+ <object-type name="QClipAnimator"/>
+ <object-type name="QClipBlendValue"/>
+ <object-type name="QClock"/>
+ <object-type name="QKeyFrame">
+ <enum-type name="InterpolationType"/>
+ </object-type>
+ <object-type name="QKeyframeAnimation">
+ <enum-type name="RepeatMode"/>
+ </object-type>
+ <object-type name="QLerpClipBlend"/>
+ <object-type name="QMorphingAnimation">
+ <enum-type name="Method"/>
+ </object-type>
+ <object-type name="QMorphTarget"/>
+ <object-type name="QSkeletonMapping"/>
+ <object-type name="QVertexBlendAnimation"/>
+ </namespace-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/Qt3DCore/CMakeLists.txt b/sources/pyside6/PySide6/Qt3DCore/CMakeLists.txt
new file mode 100644
index 000000000..cd2699f11
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DCore/CMakeLists.txt
@@ -0,0 +1,62 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(Qt3DCore)
+
+set(Qt3DCore_SRC
+${Qt3DCore_GEN_DIR}/qsharedpointer_qaspectjob_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qsharedpointer_qbackendnodemapper_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qsharedpointer_qentity_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qabstractaspect_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qabstractfunctor_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qabstractskeleton_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qarmature_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qaspectengine_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qaspectjob_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qattribute_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qbackendnode_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qbackendnodemapper_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qboundingvolume_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qbuffer_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qcomponent_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qcoreaspect_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qcoresettings_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qentity_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qgeometry_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qgeometryview_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qjoint_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qnode_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qnodeid_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qnodeidtypepair_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qskeleton_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qskeletonloader_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_qtransform_wrapper.cpp
+${Qt3DCore_GEN_DIR}/qt3dcore_wrapper.cpp
+# module is always needed
+${Qt3DCore_GEN_DIR}/qt3dcore_module_wrapper.cpp)
+
+set(Qt3DCore_include_dirs
+ ${Qt3DCore_SOURCE_DIR}
+ ${Qt3DCore_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}3DCore_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtNetwork_GEN_DIR})
+
+set(Qt3DCore_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}3DCore_LIBRARIES})
+
+set(Qt3DCore_deps QtGui QtNetwork)
+
+create_pyside_module(NAME Qt3DCore
+ INCLUDE_DIRS Qt3DCore_include_dirs
+ LIBRARIES Qt3DCore_libraries
+ DEPS Qt3DCore_deps
+ TYPESYSTEM_PATH Qt3DCore_SOURCE_DIR
+ SOURCES Qt3DCore_SRC
+ TYPESYSTEM_NAME ${Qt3DCore_BINARY_DIR}/typesystem_3dcore.xml)
diff --git a/sources/pyside6/PySide6/Qt3DCore/typesystem_3dcore.xml b/sources/pyside6/PySide6/Qt3DCore/typesystem_3dcore.xml
new file mode 100644
index 000000000..985c459b6
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DCore/typesystem_3dcore.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.Qt3DCore"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <smart-pointer-type name="QSharedPointer" type="shared" getter="data"
+ reset-method="reset"
+ instantiations="Qt3DCore::QAspectJob=Qt3DCore::QAspectJobPtr,Qt3DCore::QBackendNodeMapper=Qt3DCore::QBackendNodeMapperPtr,Qt3DCore::QEntity=Qt3DCore::QEntityPtr"/>
+ <namespace-type name="Qt3DCore" generate-using="no">
+ <object-type name="QAbstractAspect"/>
+ <object-type name="QAbstractFunctor"/>
+ <object-type name="QAbstractSkeleton"/>
+ <object-type name="QArmature"/>
+ <object-type name="QAspectEngine">
+ <enum-type name="RunMode"/>
+ <modify-function signature="registerAspect(Qt3DCore::QAbstractAspect*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QAspectJob"/>
+ <object-type name="QBackendNode">
+ <enum-type name="Mode"/>
+ </object-type>
+ <object-type name="QBackendNodeMapper"/>
+ <object-type name="QAttribute">
+ <enum-type name="AttributeType"/>
+ <enum-type name="VertexBaseType"/>
+ </object-type>
+ <!-- TODO: Solve issues related to windows and a unresolved
+ external symbol
+ <object-type name="QBackendNodeMapper"/>-->
+ <object-type name="QBoundingVolume"/>
+ <object-type name="QBuffer">
+ <enum-type name="AccessType"/>
+ <enum-type name="UsageType"/>
+ <!-- Disambiguate from QtCore/qbuffer.h -->
+ <include file-name="Qt3DCore/qbuffer.h" location="global"/>
+ </object-type>
+ <object-type name="QComponent"/>
+ <object-type name="QEntity">
+ <modify-function signature="addComponent(Qt3DCore::QComponent*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QCoreAspect"/>
+ <object-type name="QCoreSettings"/>
+ <object-type name="QGeometry"/>
+ <object-type name="QGeometryView">
+ <enum-type name="PrimitiveType"/>
+ </object-type>
+ <object-type name="QJoint">
+ <modify-function signature="addChildJoint(Qt3DCore::QJoint*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QNode"/>
+ <value-type name="QNodeId"/>
+ <value-type name="QNodeIdTypePair"/>
+ <object-type name="QSkeleton"/>
+ <object-type name="QSkeletonLoader">
+ <enum-type name="Status"/>
+ </object-type>
+ <object-type name="QTransform">
+ <!-- Disambiguate from QtGui/qtransform.h -->
+ <include file-name="Qt3DCore/qtransform.h" location="global"/>
+ </object-type>
+ </namespace-type>
+
+ <!-- QtNetwork is pulled in via QtBluetoothDepends. -->
+ <suppress-warning text="^Scoped enum 'Q(Ocsp)|(Dtls).*' does not have a type entry.*$"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/Qt3DExtras/CMakeLists.txt b/sources/pyside6/PySide6/Qt3DExtras/CMakeLists.txt
new file mode 100644
index 000000000..6f6f637fe
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DExtras/CMakeLists.txt
@@ -0,0 +1,85 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(Qt3DExtras)
+
+set(Qt3DExtras_SRC
+${Qt3DExtras_GEN_DIR}/qt3dextras_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qabstractcameracontroller_inputstate_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qabstractcameracontroller_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qabstractspritesheet_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qconegeometry_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qconegeometryview_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qconemesh_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qcuboidgeometry_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qcuboidgeometryview_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qcuboidmesh_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qcylindergeometry_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qcylindergeometryview_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qcylindermesh_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qdiffusemapmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qdiffusespecularmapmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qdiffusespecularmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qextrudedtextgeometry_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qextrudedtextmesh_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qfirstpersoncameracontroller_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qforwardrenderer_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qgoochmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qmetalroughmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qmorphphongmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qnormaldiffusemapmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qnormaldiffusemapalphamaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qnormaldiffusespecularmapmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qorbitcameracontroller_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qpervertexcolormaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qphongmaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qphongalphamaterial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qplanegeometry_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qplanegeometryview_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qplanemesh_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qskyboxentity_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qspheregeometry_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qspheregeometryview_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qspheremesh_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qspritegrid_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qspritesheet_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qspritesheetitem_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qtext2dentity_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qtexturematerial_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qtorusgeometry_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qtorusgeometryview_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qtorusmesh_wrapper.cpp
+${Qt3DExtras_GEN_DIR}/qt3dextras_qt3dwindow_wrapper.cpp
+# module is always needed
+${Qt3DExtras_GEN_DIR}/qt3dextras_module_wrapper.cpp)
+
+
+set(Qt3DExtras_include_dirs
+ ${Qt3DExtras_SOURCE_DIR}
+ ${Qt3DExtras_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}OpenGL_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}3DCore_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}3DRender_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}3DExtras_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtOpenGL_GEN_DIR}
+ ${Qt3DCore_GEN_DIR}
+ ${Qt3DRender_GEN_DIR})
+
+set(Qt3DExtras_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}3DExtras_LIBRARIES})
+
+set(Qt3DExtras_deps Qt3DRender)
+
+create_pyside_module(NAME Qt3DExtras
+ INCLUDE_DIRS Qt3DExtras_include_dirs
+ LIBRARIES Qt3DExtras_libraries
+ DEPS Qt3DExtras_deps
+ TYPESYSTEM_PATH Qt3DExtras_SOURCE_DIR
+ SOURCES Qt3DExtras_SRC
+ TYPESYSTEM_NAME ${Qt3DExtras_BINARY_DIR}/typesystem_3dextras.xml)
diff --git a/sources/pyside6/PySide6/Qt3DExtras/typesystem_3dextras.xml b/sources/pyside6/PySide6/Qt3DExtras/typesystem_3dextras.xml
new file mode 100644
index 000000000..d281ae15f
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DExtras/typesystem_3dextras.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.Qt3DExtras"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="Qt3DRender/typesystem_3drender.xml" generate="no"/>
+ <namespace-type name="Qt3DExtras">
+ <object-type name="QAbstractCameraController">
+ <value-type name="InputState"/>
+ </object-type>
+ <object-type name="QAbstractSpriteSheet"/>
+ <object-type name="QConeGeometry"/>
+ <object-type name="QConeMesh"/>
+ <object-type name="QConeGeometryView"/>
+ <object-type name="QCuboidGeometry"/>
+ <object-type name="QCuboidGeometryView"/>
+ <object-type name="QCuboidMesh"/>
+ <object-type name="QCylinderGeometry"/>
+ <object-type name="QCylinderGeometryView"/>
+ <object-type name="QCylinderMesh"/>
+ <object-type name="QDiffuseMapMaterial"/>
+ <object-type name="QDiffuseSpecularMaterial"/>
+ <object-type name="QDiffuseSpecularMapMaterial"/>
+ <object-type name="QExtrudedTextGeometry"/>
+ <object-type name="QExtrudedTextMesh"/>
+ <object-type name="QFirstPersonCameraController"/>
+ <object-type name="QForwardRenderer"/>
+ <object-type name="QGoochMaterial"/>
+ <object-type name="QMetalRoughMaterial"/>
+ <object-type name="QMorphPhongMaterial"/>
+ <object-type name="QNormalDiffuseMapAlphaMaterial"/>
+ <object-type name="QNormalDiffuseMapMaterial"/>
+ <object-type name="QNormalDiffuseSpecularMapMaterial"/>
+ <object-type name="QOrbitCameraController"/>
+ <object-type name="QPerVertexColorMaterial"/>
+ <object-type name="QPhongMaterial"/>
+ <object-type name="QPhongAlphaMaterial"/>
+ <object-type name="QPlaneGeometry"/>
+ <object-type name="QPlaneGeometryView"/>
+ <object-type name="QPlaneMesh"/>
+ <object-type name="QSkyboxEntity"/>
+ <object-type name="QSphereGeometry"/>
+ <object-type name="QSphereGeometryView"/>
+ <object-type name="QSphereMesh"/>
+ <object-type name="QSpriteGrid"/>
+ <object-type name="QSpriteSheet"/>
+ <object-type name="QSpriteSheetItem"/>
+ <object-type name="QText2DEntity"/>
+ <object-type name="QTextureMaterial"/>
+ <object-type name="QTorusGeometry"/>
+ <object-type name="QTorusGeometryView"/>
+ <object-type name="QTorusMesh"/>
+ <object-type name="Qt3DWindow"/>
+ </namespace-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/Qt3DInput/CMakeLists.txt b/sources/pyside6/PySide6/Qt3DInput/CMakeLists.txt
new file mode 100644
index 000000000..c27c27718
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DInput/CMakeLists.txt
@@ -0,0 +1,54 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(Qt3DInput)
+
+set(Qt3DInput_SRC
+${Qt3DInput_GEN_DIR}/qt3dinput_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qabstractactioninput_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qabstractaxisinput_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qabstractphysicaldevice_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qaction_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qactioninput_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qanalogaxisinput_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qaxis_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qaxisaccumulator_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qaxissetting_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qbuttonaxisinput_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qinputaspect_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qinputchord_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qinputsequence_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qinputsettings_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qkeyboardhandler_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qkeyevent_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qlogicaldevice_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qkeyboarddevice_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qmousedevice_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qmouseevent_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qwheelevent_wrapper.cpp
+${Qt3DInput_GEN_DIR}/qt3dinput_qmousehandler_wrapper.cpp
+# module is always needed
+${Qt3DInput_GEN_DIR}/qt3dinput_module_wrapper.cpp)
+
+set(Qt3DInput_include_dirs
+ ${Qt3DInput_SOURCE_DIR}
+ ${Qt3DInput_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${Qt3DCore_GEN_DIR})
+
+set(Qt3DInput_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}3DInput_LIBRARIES})
+
+set(Qt3DInput_deps Qt3DCore)
+
+create_pyside_module(NAME Qt3DInput
+ INCLUDE_DIRS Qt3DInput_include_dirs
+ LIBRARIES Qt3DInput_libraries
+ DEPS Qt3DInput_deps
+ TYPESYSTEM_PATH Qt3DInput_SOURCE_DIR
+ SOURCES Qt3DInput_SRC
+ TYPESYSTEM_NAME ${Qt3DInput_BINARY_DIR}/typesystem_3dinput.xml)
diff --git a/sources/pyside6/PySide6/Qt3DInput/typesystem_3dinput.xml b/sources/pyside6/PySide6/Qt3DInput/typesystem_3dinput.xml
new file mode 100644
index 000000000..fbdfc5961
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DInput/typesystem_3dinput.xml
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.Qt3DInput"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="Qt3DCore/typesystem_3dcore.xml" generate="no"/>
+ <namespace-type name="Qt3DInput">
+ <object-type name="QAbstractActionInput"/>
+ <object-type name="QAbstractAxisInput"/>
+ <object-type name="QAbstractPhysicalDevice"/>
+ <object-type name="QAction">
+ <!-- Disambiguate from QtGui/qaction.h -->
+ <include file-name="Qt3DInput/qaction.h" location="global"/>
+ </object-type>
+ <object-type name="QActionInput"/>
+ <object-type name="QAnalogAxisInput"/>
+ <object-type name="QAxis"/>
+ <object-type name="QAxisAccumulator">
+ <enum-type name="SourceAxisType"/>
+ </object-type>
+ <object-type name="QAxisSetting"/>
+ <object-type name="QButtonAxisInput"/>
+ <object-type name="QInputAspect"/>
+ <object-type name="QInputChord"/>
+ <!-- On windows this raises the following error:
+ type 'Qt3DInput::QInputDeviceIntegration' is specified in typesystem, but not defined.
+ This could potentially lead to compilation errors.
+ <object-type name="QInputDeviceIntegration"/>
+ -->
+ <object-type name="QInputSequence"/>
+ <object-type name="QInputSettings"/>
+ <object-type name="QKeyboardDevice"/>
+ <object-type name="QKeyboardHandler"/>
+ <object-type name="QKeyEvent"/>
+ <object-type name="QLogicalDevice"/>
+ <object-type name="QMouseDevice">
+ <enum-type name="Axis"/>
+ </object-type>
+ <object-type name="QMouseEvent">
+ <enum-type name="Buttons"/>
+ <enum-type name="Modifiers"/>
+ </object-type>
+ <object-type name="QWheelEvent">
+ <enum-type name="Buttons"/>
+ <enum-type name="Modifiers"/>
+ </object-type>
+ <object-type name="QMouseHandler"/>
+ <!-- On windows this raise the following error:
+ qt3dinput_module_wrapper.cpp.obj : error LNK2019:
+ unresolved external symbol "void __cdecl init_Qt3DInput_QPhysicalDeviceCreatedChangeBase(struct _object *)"
+ (?init_Qt3DInput_QPhysicalDeviceCreatedChangeBase@@YAXPAU_object@@@Z) referenced in function _PyInit_Qt3DInput
+ <object-type name="QPhysicalDeviceCreatedChangeBase"/>
+ -->
+ </namespace-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/Qt3DLogic/CMakeLists.txt b/sources/pyside6/PySide6/Qt3DLogic/CMakeLists.txt
new file mode 100644
index 000000000..b9da0cceb
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DLogic/CMakeLists.txt
@@ -0,0 +1,35 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(Qt3DLogic)
+
+set(Qt3DLogic_SRC
+${Qt3DLogic_GEN_DIR}/qt3dlogic_wrapper.cpp
+${Qt3DLogic_GEN_DIR}/qt3dlogic_qframeaction_wrapper.cpp
+${Qt3DLogic_GEN_DIR}/qt3dlogic_qlogicaspect_wrapper.cpp
+# module is always needed
+${Qt3DLogic_GEN_DIR}/qt3dlogic_module_wrapper.cpp)
+
+set(Qt3DLogic_include_dirs
+ ${Qt3DLogic_SOURCE_DIR}
+ ${Qt3DLogic_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${Qt3DCore_GEN_DIR})
+
+set(Qt3DLogic_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}3DLogic_LIBRARIES})
+
+set(Qt3DLogic_deps Qt3DCore)
+
+create_pyside_module(NAME Qt3DLogic
+ INCLUDE_DIRS Qt3DLogic_include_dirs
+ LIBRARIES Qt3DLogic_libraries
+ DEPS Qt3DLogic_deps
+ TYPESYSTEM_PATH Qt3DLogic_SOURCE_DIR
+ SOURCES Qt3DLogic_SRC
+ TYPESYSTEM_NAME ${Qt3DLogic_BINARY_DIR}/typesystem_3dlogic.xml)
diff --git a/sources/pyside6/PySide6/Qt3DLogic/typesystem_3dlogic.xml b/sources/pyside6/PySide6/Qt3DLogic/typesystem_3dlogic.xml
new file mode 100644
index 000000000..60f362534
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DLogic/typesystem_3dlogic.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.Qt3DLogic"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="Qt3DCore/typesystem_3dcore.xml" generate="no"/>
+ <namespace-type name="Qt3DLogic">
+ <object-type name="QFrameAction"/>
+ <object-type name="QLogicAspect"/>
+ </namespace-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/Qt3DRender/CMakeLists.txt b/sources/pyside6/PySide6/Qt3DRender/CMakeLists.txt
new file mode 100644
index 000000000..72f859305
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DRender/CMakeLists.txt
@@ -0,0 +1,158 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(Qt3DRender)
+
+set(Qt3DRender_DROPPED_ENTRIES)
+
+set(Qt3DRender_SRC
+${Qt3DRender_GEN_DIR}/qsharedpointer_propertyreaderinterface_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qsharedpointer_qtextureimagedata_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qsharedpointer_qtextureimagedatagenerator_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_propertyreaderinterface_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qabstractlight_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qabstractraycaster_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qabstracttexture_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qabstracttextureimage_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qalphacoverage_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qalphatest_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qblendequation_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qblendequationarguments_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qblitframebuffer_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qbuffercapture_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qcamera_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qcameralens_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qcameraselector_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qclearbuffers_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qclipplane_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qcolormask_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qcomputecommand_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qcullface_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qdebugoverlay_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qdepthrange_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qdepthtest_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qdirectionallight_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qdispatchcompute_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qdithering_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qeffect_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qenvironmentlight_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qfilterkey_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qframegraphnode_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qfrontface_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qfrustumculling_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qgeometryrenderer_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qgraphicsapifilter_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qlayer_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qlayerfilter_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qlevelofdetail_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qlevelofdetailboundingsphere_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qlevelofdetailswitch_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qlinewidth_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qmaterial_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qmemorybarrier_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qmesh_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qmultisampleantialiasing_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qnodepthmask_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qnodraw_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qnopicking_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qobjectpicker_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpaintedtextureimage_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qparameter_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpickevent_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpickingproxy_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpickingsettings_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpicklineevent_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpickpointevent_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpicktriangleevent_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpointlight_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpointsize_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qpolygonoffset_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qproximityfilter_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrastermode_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qraycaster_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qraycasterhit_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrenderaspect_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrendercapabilities_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrendercapture_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrendercapturereply_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrenderpass_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrenderpassfilter_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrendersettings_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrenderstate_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrenderstateset_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrendersurfaceselector_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrendertarget_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrendertargetoutput_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qrendertargetselector_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qsceneloader_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qscissortest_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qscreenraycaster_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qseamlesscubemap_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qsetfence_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qshaderdata_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qshaderimage_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qshaderprogram_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qshaderprogrambuilder_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qsharedgltexture_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qsortpolicy_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qspotlight_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qstencilmask_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qstenciloperation_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qstenciloperationarguments_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qstenciltest_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qstenciltestarguments_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qsubtreeenabler_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtechnique_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtechniquefilter_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexture1d_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexture1darray_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexture2d_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexture2darray_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexture2dmultisample_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexture2dmultisamplearray_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexture3d_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexturebuffer_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexturecubemap_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexturecubemaparray_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexturedata_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexturedataupdate_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtextureimage_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtextureimagedata_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtextureimagedatagenerator_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtextureloader_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexturerectangle_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qtexturewrapmode_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qviewport_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_qwaitfence_wrapper.cpp
+${Qt3DRender_GEN_DIR}/qt3drender_wrapper.cpp
+# module is always needed
+${Qt3DRender_GEN_DIR}/qt3drender_module_wrapper.cpp)
+
+set(Qt3DRender_include_dirs
+ ${Qt3DRender_SOURCE_DIR}
+ ${Qt3DRender_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+
+ ${Qt3DCore_GEN_DIR})
+
+set(Qt3DRender_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}3DRender_LIBRARIES})
+
+set(Qt3DRender_deps Qt3DCore)
+
+check_qt_opengl("3DRender" Qt3DRender_include_dirs Qt3DRender_deps
+ Qt3DRender_DROPPED_ENTRIES)
+
+create_pyside_module(NAME Qt3DRender
+ INCLUDE_DIRS Qt3DRender_include_dirs
+ LIBRARIES Qt3DRender_libraries
+ DEPS Qt3DRender_deps
+ TYPESYSTEM_PATH Qt3DRender_SOURCE_DIR
+ SOURCES Qt3DRender_SRC
+ TYPESYSTEM_NAME ${Qt3DRender_BINARY_DIR}/typesystem_3drender.xml
+ DROPPED_ENTRIES Qt3DRender_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/Qt3DRender/typesystem_3drender.xml b/sources/pyside6/PySide6/Qt3DRender/typesystem_3drender.xml
new file mode 100644
index 000000000..66fd70927
--- /dev/null
+++ b/sources/pyside6/PySide6/Qt3DRender/typesystem_3drender.xml
@@ -0,0 +1,241 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.Qt3DRender"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="Qt3DCore/typesystem_3dcore.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <!-- PYSIDE-2610: QOpenGLTexture's enums are used -->
+ <?if !no_QtOpenGL?>
+ <load-typesystem name="QtOpenGL/typesystem_opengl.xml" generate="no"/>
+ <?endif?>
+ <smart-pointer-type name="QSharedPointer" type="shared" getter="data"
+ reset-method="reset"
+ instantiations="Qt3DRender::PropertyReaderInterface=Qt3DRender::PropertyReaderInterfacePtr,Qt3DRender::QTextureImageData=Qt3DRender::QTextureImageDataPtr,Qt3DRender::QTextureImageDataGenerator=Qt3DRender::QTextureImageDataGeneratorPtr"/>
+ <namespace-type name="Qt3DRender">
+ <enum-type name="API"/>
+ <object-type name="PropertyReaderInterface"/>
+ <object-type name="QAbstractLight">
+ <enum-type name="Type"/>
+ </object-type>
+ <object-type name="QAbstractRayCaster">
+ <enum-type name="RunMode"/>
+ <enum-type name="FilterMode"/>
+ </object-type>
+ <object-type name="QAbstractTexture">
+ <enum-type name="CubeMapFace"/>
+ <enum-type name="ComparisonFunction"/>
+ <enum-type name="ComparisonMode"/>
+ <enum-type name="HandleType"/>
+ <enum-type name="Filter"/>
+ <enum-type name="Status"/>
+ <enum-type name="Target"/>
+ <enum-type name="TextureFormat"/>
+ </object-type>
+ <object-type name="QAbstractTextureImage"/>
+ <object-type name="QAlphaCoverage"/>
+ <object-type name="QAlphaTest">
+ <enum-type name="AlphaFunction"/>
+ </object-type>
+ <object-type name="QBlendEquation">
+ <enum-type name="BlendFunction"/>
+ </object-type>
+ <object-type name="QBlendEquationArguments">
+ <enum-type name="Blending"/>
+ </object-type>
+ <object-type name="QBlitFramebuffer">
+ <enum-type name="InterpolationMethod"/>
+ </object-type>
+ <object-type name="QBufferCapture"/>
+ <object-type name="QCamera">
+ <enum-type name="CameraTranslationOption"/>
+ </object-type>
+ <object-type name="QCameraLens">
+ <enum-type name="ProjectionType"/>
+ </object-type>
+ <object-type name="QCameraSelector"/>
+ <object-type name="QClearBuffers">
+ <enum-type name="BufferType" flags="BufferTypeFlags"/>
+ </object-type>
+ <object-type name="QClipPlane"/>
+ <object-type name="QColorMask"/>
+ <object-type name="QComputeCommand">
+ <enum-type name="RunType"/>
+ </object-type>
+ <object-type name="QCullFace">
+ <enum-type name="CullingMode"/>
+ </object-type>
+ <object-type name="QDebugOverlay"/>
+ <object-type name="QDepthRange"/>
+ <object-type name="QDepthTest">
+ <enum-type name="DepthFunction"/>
+ </object-type>
+ <object-type name="QDirectionalLight"/>
+ <object-type name="QDispatchCompute"/>
+ <object-type name="QDithering"/>
+ <object-type name="QEffect"/>
+ <object-type name="QEnvironmentLight"/>
+ <object-type name="QFilterKey"/>
+ <object-type name="QFrameGraphNode"/>
+ <object-type name="QFrontFace">
+ <enum-type name="WindingDirection"/>
+ </object-type>
+ <object-type name="QFrustumCulling"/>
+ <object-type name="QGeometryRenderer">
+ <enum-type name="PrimitiveType"/>
+ </object-type>
+ <object-type name="QGraphicsApiFilter">
+ <enum-type name="Api"/>
+ <enum-type name="OpenGLProfile"/>
+ <!-- only Q_AUTOTEST_EXPORT -->
+ <modify-function signature="operator==(Qt3DRender::QGraphicsApiFilter,Qt3DRender::QGraphicsApiFilter)"
+ remove="all"/>
+ <modify-function signature="operator!=(Qt3DRender::QGraphicsApiFilter,Qt3DRender::QGraphicsApiFilter)"
+ remove="all"/>
+ </object-type>
+ <object-type name="QLayer"/>
+ <object-type name="QLayerFilter">
+ <enum-type name="FilterMode"/>
+ </object-type>
+ <object-type name="QLevelOfDetail">
+ <enum-type name="ThresholdType"/>
+ </object-type>
+ <object-type name="QLevelOfDetailBoundingSphere"/>
+ <object-type name="QLevelOfDetailSwitch"/>
+ <object-type name="QLineWidth"/>
+ <object-type name="QMaterial"/>
+ <object-type name="QMemoryBarrier">
+ <enum-type name="Operation" flags="Operations"/>
+ </object-type>
+ <object-type name="QMesh">
+ <enum-type name="Status"/>
+ </object-type>
+ <object-type name="QMultiSampleAntiAliasing"/>
+ <object-type name="QNoDepthMask"/>
+ <object-type name="QNoDraw"/>
+ <object-type name="QNoPicking"/>
+ <object-type name="QObjectPicker"/>
+ <object-type name="QPaintedTextureImage"/>
+ <object-type name="QParameter"/>
+ <object-type name="QPickEvent">
+ <enum-type name="Buttons"/>
+ <enum-type name="Modifiers"/>
+ </object-type>
+ <object-type name="QPickingProxy"/>
+ <object-type name="QPickLineEvent"/>
+ <object-type name="QPickPointEvent"/>
+ <object-type name="QPickTriangleEvent"/>
+ <object-type name="QPickingSettings">
+ <enum-type name="FaceOrientationPickingMode"/>
+ <enum-type name="PickMethod"/>
+ <enum-type name="PickResultMode"/>
+ </object-type>
+ <object-type name="QPointLight"/>
+ <object-type name="QPointSize">
+ <enum-type name="SizeMode"/>
+ </object-type>
+ <object-type name="QPolygonOffset"/>
+ <object-type name="QProximityFilter"/>
+ <object-type name="QRasterMode">
+ <enum-type name="RasterMode"/>
+ <enum-type name="FaceMode"/>
+ </object-type>
+ <object-type name="QRayCaster"/>
+ <value-type name="QRayCasterHit">
+ <enum-type name="HitType"/>
+ </value-type>
+ <object-type name="QRenderAspect">
+ <enum-type name="SubmissionType"/>
+ </object-type>
+ <object-type name="QRenderCapabilities">
+ <enum-type name="API"/>
+ <enum-type name="Profile"/>
+ </object-type>
+ <object-type name="QRenderCapture"/>
+ <object-type name="QRenderCaptureReply"/>
+ <object-type name="QRenderPass"/>
+ <object-type name="QRenderPassFilter"/>
+ <object-type name="QRenderSettings">
+ <enum-type name="RenderPolicy"/>
+ </object-type>
+ <object-type name="QRenderState"/>
+ <object-type name="QRenderStateSet"/>
+ <object-type name="QRenderSurfaceSelector"/>
+ <object-type name="QRenderTarget"/>
+ <object-type name="QRenderTargetOutput">
+ <enum-type name="AttachmentPoint"/>
+ </object-type>
+ <object-type name="QRenderTargetSelector"/>
+ <object-type name="QSceneLoader">
+ <enum-type name="Status"/>
+ <enum-type name="ComponentType"/>
+ </object-type>
+ <object-type name="QScissorTest"/>
+ <object-type name="QScreenRayCaster"/>
+ <object-type name="QSeamlessCubemap"/>
+ <object-type name="QSetFence">
+ <enum-type name="HandleType"/>
+ </object-type>
+ <object-type name="QShaderData"/>
+ <object-type name="QShaderProgram">
+ <enum-type name="Format"/>
+ <enum-type name="ShaderType"/>
+ <enum-type name="Status"/>
+ </object-type>
+ <object-type name="QShaderImage">
+ <enum-type name="Access"/>
+ <enum-type name="ImageFormat"/>
+ </object-type>
+ <object-type name="QShaderProgramBuilder"/>
+ <object-type name="QSharedGLTexture"/>
+ <object-type name="QSortPolicy">
+ <enum-type name="SortType"/>
+ </object-type>
+ <object-type name="QSpotLight"/>
+ <object-type name="QStencilMask"/>
+ <object-type name="QStencilOperation"/>
+ <object-type name="QStencilOperationArguments">
+ <enum-type name="FaceMode"/>
+ <enum-type name="Operation"/>
+ </object-type>
+ <object-type name="QStencilTest"/>
+ <object-type name="QStencilTestArguments">
+ <enum-type name="StencilFaceMode"/>
+ <enum-type name="StencilFunction"/>
+ </object-type>
+ <object-type name="QSubtreeEnabler">
+ <enum-type name="Enablement"/>
+ </object-type>
+ <object-type name="QTechnique"/>
+ <object-type name="QTechniqueFilter"/>
+ <object-type name="QTexture1D"/>
+ <object-type name="QTexture1DArray"/>
+ <object-type name="QTexture2D"/>
+ <object-type name="QTexture2DArray"/>
+ <object-type name="QTexture2DMultisample"/>
+ <object-type name="QTexture2DMultisampleArray"/>
+ <object-type name="QTexture3D"/>
+ <object-type name="QTextureBuffer"/>
+ <object-type name="QTextureCubeMap"/>
+ <object-type name="QTextureCubeMapArray"/>
+ <object-type name="QTextureData"/>
+ <value-type name="QTextureDataUpdate"/>
+ <object-type name="QTextureImage">
+ <enum-type name="Status"/>
+ </object-type>
+ <object-type name="QTextureImageData"/>
+ <object-type name="QTextureImageDataGenerator"/>
+ <object-type name="QTextureLoader"/>
+ <object-type name="QTextureRectangle"/>
+ <object-type name="QTextureWrapMode">
+ <enum-type name="WrapMode"/>
+ </object-type>
+ <object-type name="QViewport"/>
+ <object-type name="QWaitFence">
+ <enum-type name="HandleType"/>
+ </object-type>
+ </namespace-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtAsyncio/__init__.py b/sources/pyside6/PySide6/QtAsyncio/__init__.py
new file mode 100644
index 000000000..60d1846d1
--- /dev/null
+++ b/sources/pyside6/PySide6/QtAsyncio/__init__.py
@@ -0,0 +1,60 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+from .events import (
+ QAsyncioEventLoopPolicy, QAsyncioEventLoop, QAsyncioHandle, QAsyncioTimerHandle
+)
+from .futures import QAsyncioFuture
+from .tasks import QAsyncioTask
+
+import asyncio
+import typing
+
+__all__ = [
+ "QAsyncioEventLoopPolicy", "QAsyncioEventLoop",
+ "QAsyncioHandle", "QAsyncioTimerHandle",
+ "QAsyncioFuture", "QAsyncioTask"
+]
+
+
+def run(coro: typing.Optional[typing.Coroutine] = None,
+ keep_running: bool = True,
+ quit_qapp: bool = True, *,
+ handle_sigint: bool = False,
+ debug: typing.Optional[bool] = None) -> typing.Any:
+ """Run the QtAsyncio event loop."""
+
+ # Event loop policies are expected to be deprecated with Python 3.13, with
+ # subsequent removal in Python 3.15. At that point, part of the current
+ # logic of the QAsyncioEventLoopPolicy constructor will have to be moved
+ # here and/or to a loop factory class (to be provided as an argument to
+ # asyncio.run()). In particular, this concerns the logic of setting up the
+ # QCoreApplication and the SIGINT handler.
+ #
+ # More details:
+ # https://discuss.python.org/t/removing-the-asyncio-policy-system-asyncio-set-event-loop-policy-in-python-3-15/37553 # noqa: E501
+ default_policy = asyncio.get_event_loop_policy()
+ asyncio.set_event_loop_policy(
+ QAsyncioEventLoopPolicy(quit_qapp=quit_qapp, handle_sigint=handle_sigint))
+
+ ret = None
+ exc = None
+
+ if keep_running:
+ if coro:
+ asyncio.ensure_future(coro)
+ asyncio.get_event_loop().run_forever()
+ else:
+ if coro:
+ ret = asyncio.run(coro, debug=debug)
+ else:
+ exc = RuntimeError(
+ "QtAsyncio was set to keep running after the coroutine "
+ "finished, but no coroutine was provided.")
+
+ asyncio.set_event_loop_policy(default_policy)
+
+ if ret:
+ return ret
+ if exc:
+ raise exc
diff --git a/sources/pyside6/PySide6/QtAsyncio/events.py b/sources/pyside6/PySide6/QtAsyncio/events.py
new file mode 100644
index 000000000..86b89014a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtAsyncio/events.py
@@ -0,0 +1,725 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+from PySide6.QtCore import (QCoreApplication, QDateTime, QDeadlineTimer,
+ QEventLoop, QObject, QTimer, QThread, Slot)
+
+from . import futures
+from . import tasks
+
+import asyncio
+import collections.abc
+import concurrent.futures
+import contextvars
+import enum
+import os
+import signal
+import socket
+import subprocess
+import typing
+import warnings
+
+__all__ = [
+ "QAsyncioEventLoopPolicy", "QAsyncioEventLoop",
+ "QAsyncioHandle", "QAsyncioTimerHandle",
+]
+
+
+class QAsyncioExecutorWrapper(QObject):
+ """
+ Executors in asyncio allow running synchronous code in a separate thread or
+ process without blocking the event loop or interrupting the asynchronous
+ program flow. Callables are scheduled for execution by calling submit() or
+ map() on an executor object.
+
+ Executors require a bit of extra work for QtAsyncio, as we can't use
+ naked Python threads; instead, we must make sure that the thread created
+ by executor.submit() has an event loop. This is achieved by not submitting
+ the callable directly, but a small wrapper that attaches a QEventLoop to
+ the executor thread, and then creates a zero-delay singleshot timer to push
+ the actual callable for the executor into this new event loop.
+ """
+
+ def __init__(self, func: typing.Callable, *args: typing.Tuple) -> None:
+ super().__init__()
+ self._loop: QEventLoop
+ self._func = func
+ self._args = args
+ self._result = None
+ self._exception = None
+
+ def _cb(self):
+ try:
+ # Call the synchronous callable that we submitted with submit() or
+ # map().
+ self._result = self._func(*self._args)
+ except BaseException as e:
+ self._exception = e
+ self._loop.exit()
+
+ def do(self):
+ # This creates a new event loop and dispatcher for the thread, if not
+ # already created.
+ self._loop = QEventLoop()
+ asyncio.events._set_running_loop(self._loop)
+
+ QTimer.singleShot(0, self._loop, lambda: self._cb())
+
+ self._loop.exec()
+ if self._exception is not None:
+ raise self._exception
+ return self._result
+
+ def exit(self):
+ self._loop.exit()
+
+
+class QAsyncioEventLoopPolicy(asyncio.AbstractEventLoopPolicy):
+ """
+ Event loop policies are expected to be deprecated with Python 3.13, with
+ subsequent removal in Python 3.15. At that point, part of the current
+ logic of the QAsyncioEventLoopPolicy constructor will have to be moved
+ to QtAsyncio.run() and/or to a loop factory class (to be provided as an
+ argument to asyncio.run()). In particular, this concerns the logic of
+ setting up the QCoreApplication and the SIGINT handler.
+
+ More details:
+ https://discuss.python.org/t/removing-the-asyncio-policy-system-asyncio-set-event-loop-policy-in-python-3-15/37553
+ """
+ def __init__(self,
+ application: typing.Optional[QCoreApplication] = None,
+ quit_qapp: bool = True,
+ handle_sigint: bool = False) -> None:
+ super().__init__()
+ if application is None:
+ if QCoreApplication.instance() is None:
+ application = QCoreApplication()
+ else:
+ application = QCoreApplication.instance()
+ self._application: QCoreApplication = application # type: ignore[assignment]
+
+ # Configure whether the QCoreApplication at the core of QtAsyncio
+ # should be shut down when asyncio finishes. A special case where one
+ # would want to disable this is test suites that want to reuse a single
+ # QCoreApplication instance across all unit tests, which would fail if
+ # this instance is shut down every time.
+ self._quit_qapp = quit_qapp
+
+ self._event_loop: typing.Optional[asyncio.AbstractEventLoop] = None
+
+ if handle_sigint:
+ signal.signal(signal.SIGINT, signal.SIG_DFL)
+
+ def get_event_loop(self) -> asyncio.AbstractEventLoop:
+ if self._event_loop is None:
+ self._event_loop = QAsyncioEventLoop(self._application, quit_qapp=self._quit_qapp)
+ return self._event_loop
+
+ def set_event_loop(self, loop: typing.Optional[asyncio.AbstractEventLoop]) -> None:
+ self._event_loop = loop
+
+ def new_event_loop(self) -> asyncio.AbstractEventLoop:
+ return QAsyncioEventLoop(self._application, quit_qapp=self._quit_qapp)
+
+ def get_child_watcher(self) -> "asyncio.AbstractChildWatcher":
+ raise DeprecationWarning("Child watchers are deprecated since Python 3.12")
+
+ def set_child_watcher(self, watcher: "asyncio.AbstractChildWatcher") -> None:
+ raise DeprecationWarning("Child watchers are deprecated since Python 3.12")
+
+
+class QAsyncioEventLoop(asyncio.BaseEventLoop, QObject):
+ """
+ Implements the asyncio API:
+ https://docs.python.org/3/library/asyncio-eventloop.html
+ """
+
+ class ShutDownThread(QThread):
+ """
+ Used to shut down the default executor when calling
+ shutdown_default_executor(). As the executor is a ThreadPoolExecutor,
+ it must be shut down in a separate thread as all the threads from the
+ thread pool must join, which we want to do without blocking the event
+ loop.
+ """
+
+ def __init__(self, future: futures.QAsyncioFuture, loop: "QAsyncioEventLoop") -> None:
+ super().__init__()
+ self._future = future
+ self._loop = loop
+ self.started.connect(self.shutdown)
+
+ def run(self) -> None:
+ pass
+
+ def shutdown(self) -> None:
+ try:
+ self._loop._default_executor.shutdown(wait=True)
+ if not self._loop.is_closed():
+ self._loop.call_soon_threadsafe(self._future.set_result, None)
+ except Exception as e:
+ if not self._loop.is_closed():
+ self._loop.call_soon_threadsafe(self._future.set_exception, e)
+
+ def __init__(self,
+ application: QCoreApplication, quit_qapp: bool = True) -> None:
+ asyncio.BaseEventLoop.__init__(self)
+ QObject.__init__(self)
+
+ self._application: QCoreApplication = application
+
+ # Configure whether the QCoreApplication at the core of QtAsyncio
+ # should be shut down when asyncio finishes. A special case where one
+ # would want to disable this is test suites that want to reuse a single
+ # QCoreApplication instance across all unit tests, which would fail if
+ # this instance is shut down every time.
+ self._quit_qapp = quit_qapp
+
+ self._thread = QThread.currentThread()
+
+ self._closed = False
+
+ # These two flags are used to determine whether the loop was stopped
+ # from inside the loop (i.e., coroutine or callback called stop()) or
+ # from outside the loop (i.e., the QApplication is being shut down, for
+ # example, by the user closing the window or by calling
+ # QApplication.quit()). The different cases can trigger slightly
+ # different behaviors (see the comments where the flags are used).
+ # There are two variables for this as in a third case the loop is still
+ # running and both flags are False.
+ self._quit_from_inside = False
+ self._quit_from_outside = False
+
+ # A set of all asynchronous generators that are currently running.
+ self._asyncgens: typing.Set[collections.abc.AsyncGenerator] = set()
+
+ # Starting with Python 3.11, this must be an instance of
+ # ThreadPoolExecutor.
+ self._default_executor = concurrent.futures.ThreadPoolExecutor()
+
+ # The exception handler, if set with set_exception_handler(). The
+ # exception handler is currently called in two places: One, if an
+ # asynchonrous generator raises an exception when closed, and two, if
+ # an exception is raised during the execution of a task. Currently, the
+ # default exception handler just prints the exception to the console.
+ self._exception_handler: typing.Optional[typing.Callable] = self.default_exception_handler
+
+ # The task factory, if set with set_task_factory(). Otherwise, a new
+ # task is created with the QAsyncioTask constructor.
+ self._task_factory: typing.Optional[typing.Callable] = None
+
+ # The future that is currently being awaited with run_until_complete().
+ self._future_to_complete: typing.Optional[futures.QAsyncioFuture] = None
+
+ self._debug = bool(os.getenv("PYTHONASYNCIODEBUG", False))
+
+ self._application.aboutToQuit.connect(self._about_to_quit_cb)
+
+ # Running and stopping the loop
+
+ def _run_until_complete_cb(self, future: futures.QAsyncioFuture) -> None:
+ """
+ A callback that stops the loop when the future is done, used when
+ running the loop with run_until_complete().
+ """
+ if not future.cancelled():
+ if isinstance(future.exception(), (SystemExit, KeyboardInterrupt)):
+ return
+ future.get_loop().stop()
+
+ def run_until_complete(self,
+ future: futures.QAsyncioFuture) -> typing.Any: # type: ignore[override]
+ if self.is_closed():
+ raise RuntimeError("Event loop is closed")
+ if self.is_running():
+ raise RuntimeError("Event loop is already running")
+
+ arg_was_coro = not asyncio.futures.isfuture(future)
+ future = asyncio.tasks.ensure_future(future, loop=self) # type: ignore[assignment]
+ future.add_done_callback(self._run_until_complete_cb)
+ self._future_to_complete = future
+
+ try:
+ self.run_forever()
+ except Exception as e:
+ if arg_was_coro and future.done() and not future.cancelled():
+ future.exception()
+ raise e
+ finally:
+ future.remove_done_callback(self._run_until_complete_cb)
+ if not future.done():
+ raise RuntimeError("Event loop stopped before Future completed")
+
+ return future.result()
+
+ def run_forever(self) -> None:
+ if self.is_closed():
+ raise RuntimeError("Event loop is closed")
+ if self.is_running():
+ raise RuntimeError("Event loop is already running")
+ asyncio.events._set_running_loop(self)
+ self._application.exec()
+ asyncio.events._set_running_loop(None)
+
+ def _about_to_quit_cb(self):
+ """ A callback for the aboutToQuit signal of the QCoreApplication. """
+ if not self._quit_from_inside:
+ # If the aboutToQuit signal is emitted, the user is closing the
+ # application window or calling QApplication.quit(). In this case,
+ # we want to close the event loop, and we consider this a quit from
+ # outside the loop.
+ self._quit_from_outside = True
+ self.close()
+
+ def stop(self) -> None:
+ if self._future_to_complete is not None:
+ if self._future_to_complete.done():
+ self._future_to_complete = None
+ else:
+ # Do not stop the loop if there is a future still being awaited
+ # with run_until_complete().
+ return
+
+ self._quit_from_inside = True
+
+ # The user might want to keep the QApplication running after the event
+ # event loop finishes, which they can control with the quit_qapp
+ # argument.
+ if self._quit_qapp:
+ self._application.quit()
+
+ def is_running(self) -> bool:
+ return self._thread.loopLevel() > 0
+
+ def is_closed(self) -> bool:
+ return self._closed
+
+ def close(self) -> None:
+ if self.is_running() and not self._quit_from_outside:
+ raise RuntimeError("Cannot close a running event loop")
+ if self.is_closed():
+ return
+ if self._default_executor is not None:
+ self._default_executor.shutdown(wait=False)
+ self._closed = True
+
+ async def shutdown_asyncgens(self) -> None:
+ if not len(self._asyncgens):
+ return
+
+ results = await asyncio.tasks.gather(
+ *[asyncgen.aclose() for asyncgen in self._asyncgens],
+ return_exceptions=True)
+
+ for result, asyncgen in zip(results, self._asyncgens):
+ if isinstance(result, Exception):
+ self.call_exception_handler({
+ "message": f"Closing asynchronous generator {asyncgen}"
+ f"raised an exception",
+ "exception": result,
+ "asyncgen": asyncgen})
+
+ self._asyncgens.clear()
+
+ async def shutdown_default_executor(self, # type: ignore[override]
+ timeout: typing.Union[int, float, None] = None) -> None:
+ shutdown_successful = False
+ if timeout is not None:
+ deadline_timer = QDeadlineTimer(int(timeout * 1000))
+ else:
+ deadline_timer = QDeadlineTimer(QDeadlineTimer.Forever)
+
+ if self._default_executor is None:
+ return
+ future = self.create_future()
+ thread = QAsyncioEventLoop.ShutDownThread(future, self)
+ thread.start()
+ try:
+ await future
+ finally:
+ shutdown_successful = thread.wait(deadline_timer)
+
+ if timeout is not None and not shutdown_successful:
+ warnings.warn(
+ f"Could not shutdown the default executor within {timeout} seconds",
+ RuntimeWarning, stacklevel=2)
+ self._default_executor.shutdown(wait=False)
+
+ # Scheduling callbacks
+
+ def _call_soon_impl(self, callback: typing.Callable, *args: typing.Any,
+ context: typing.Optional[contextvars.Context] = None,
+ is_threadsafe: typing.Optional[bool] = False) -> asyncio.Handle:
+ return self._call_later_impl(0, callback, *args, context=context,
+ is_threadsafe=is_threadsafe)
+
+ def call_soon(self, callback: typing.Callable, *args: typing.Any,
+ context: typing.Optional[contextvars.Context] = None) -> asyncio.Handle:
+ return self._call_soon_impl(callback, *args, context=context, is_threadsafe=False)
+
+ def call_soon_threadsafe(self, callback: typing.Callable, *args: typing.Any,
+ context:
+ typing.Optional[contextvars.Context] = None) -> asyncio.Handle:
+ if self.is_closed():
+ raise RuntimeError("Event loop is closed")
+ if context is None:
+ context = contextvars.copy_context()
+ return self._call_soon_impl(callback, *args, context=context, is_threadsafe=True)
+
+ def _call_later_impl(self, delay: typing.Union[int, float],
+ callback: typing.Callable, *args: typing.Any,
+ context: typing.Optional[contextvars.Context] = None,
+ is_threadsafe: typing.Optional[bool] = False) -> asyncio.TimerHandle:
+ if not isinstance(delay, (int, float)):
+ raise TypeError("delay must be an int or float")
+ return self._call_at_impl(self.time() + delay, callback, *args, context=context,
+ is_threadsafe=is_threadsafe)
+
+ def call_later(self, delay: typing.Union[int, float],
+ callback: typing.Callable, *args: typing.Any,
+ context: typing.Optional[contextvars.Context] = None) -> asyncio.TimerHandle:
+ return self._call_later_impl(delay, callback, *args, context=context, is_threadsafe=False)
+
+ def _call_at_impl(self, when: typing.Union[int, float],
+ callback: typing.Callable, *args: typing.Any,
+ context: typing.Optional[contextvars.Context] = None,
+ is_threadsafe: typing.Optional[bool] = False) -> asyncio.TimerHandle:
+ """ All call_at() and call_later() methods map to this method. """
+ if not isinstance(when, (int, float)):
+ raise TypeError("when must be an int or float")
+ return QAsyncioTimerHandle(when, callback, args, self, context, is_threadsafe=is_threadsafe)
+
+ def call_at(self, when: typing.Union[int, float],
+ callback: typing.Callable, *args: typing.Any,
+ context: typing.Optional[contextvars.Context] = None) -> asyncio.TimerHandle:
+ return self._call_at_impl(when, callback, *args, context=context, is_threadsafe=False)
+
+ def time(self) -> float:
+ return QDateTime.currentMSecsSinceEpoch() / 1000
+
+ # Creating Futures and Tasks
+
+ def create_future(self) -> futures.QAsyncioFuture: # type: ignore[override]
+ return futures.QAsyncioFuture(loop=self)
+
+ def create_task(self, # type: ignore[override]
+ coro: typing.Union[collections.abc.Generator, collections.abc.Coroutine],
+ *, name: typing.Optional[str] = None,
+ context: typing.Optional[contextvars.Context] = None) -> tasks.QAsyncioTask:
+ if self._task_factory is None:
+ task = tasks.QAsyncioTask(coro, loop=self, name=name, context=context)
+ else:
+ task = self._task_factory(self, coro, context=context)
+ task.set_name(name)
+
+ return task
+
+ def set_task_factory(self, factory: typing.Optional[typing.Callable]) -> None:
+ if factory is not None and not callable(factory):
+ raise TypeError("The task factory must be a callable or None")
+ self._task_factory = factory
+
+ def get_task_factory(self) -> typing.Optional[typing.Callable]:
+ return self._task_factory
+
+ # Opening network connections
+
+ async def create_connection(
+ self, protocol_factory, host=None, port=None,
+ *, ssl=None, family=0, proto=0,
+ flags=0, sock=None, local_addr=None,
+ server_hostname=None,
+ ssl_handshake_timeout=None,
+ ssl_shutdown_timeout=None,
+ happy_eyeballs_delay=None, interleave=None):
+ raise NotImplementedError
+
+ async def create_datagram_endpoint(self, protocol_factory,
+ local_addr=None, remote_addr=None, *,
+ family=0, proto=0, flags=0,
+ reuse_address=None, reuse_port=None,
+ allow_broadcast=None, sock=None):
+ raise NotImplementedError
+
+ async def create_unix_connection(
+ self, protocol_factory, path=None, *,
+ ssl=None, sock=None,
+ server_hostname=None,
+ ssl_handshake_timeout=None,
+ ssl_shutdown_timeout=None):
+ raise NotImplementedError
+
+ # Creating network servers
+
+ async def create_server(
+ self, protocol_factory, host=None, port=None,
+ *, family=socket.AF_UNSPEC,
+ flags=socket.AI_PASSIVE, sock=None, backlog=100,
+ ssl=None, reuse_address=None, reuse_port=None,
+ ssl_handshake_timeout=None,
+ ssl_shutdown_timeout=None,
+ start_serving=True):
+ raise NotImplementedError
+
+ async def create_unix_server(
+ self, protocol_factory, path=None, *,
+ sock=None, backlog=100, ssl=None,
+ ssl_handshake_timeout=None,
+ ssl_shutdown_timeout=None,
+ start_serving=True):
+ raise NotImplementedError
+
+ async def connect_accepted_socket(
+ self, protocol_factory, sock,
+ *, ssl=None,
+ ssl_handshake_timeout=None,
+ ssl_shutdown_timeout=None):
+ raise NotImplementedError
+
+ # Transferring files
+
+ async def sendfile(self, transport, file, offset=0, count=None,
+ *, fallback=True):
+ raise NotImplementedError
+
+ # TLS Upgrade
+
+ async def start_tls(self, transport, protocol, sslcontext, *,
+ server_side=False,
+ server_hostname=None,
+ ssl_handshake_timeout=None,
+ ssl_shutdown_timeout=None):
+ raise NotImplementedError
+
+ # Watching file descriptors
+
+ def add_reader(self, fd, callback, *args):
+ raise NotImplementedError
+
+ def remove_reader(self, fd):
+ raise NotImplementedError
+
+ def add_writer(self, fd, callback, *args):
+ raise NotImplementedError
+
+ def remove_writer(self, fd):
+ raise NotImplementedError
+
+ # Working with socket objects directly
+
+ async def sock_recv(self, sock, nbytes):
+ raise NotImplementedError
+
+ async def sock_recv_into(self, sock, buf):
+ raise NotImplementedError
+
+ async def sock_recvfrom(self, sock, bufsize):
+ raise NotImplementedError
+
+ async def sock_recvfrom_into(self, sock, buf, nbytes=0):
+ raise NotImplementedError
+
+ async def sock_sendall(self, sock, data):
+ raise NotImplementedError
+
+ async def sock_sendto(self, sock, data, address):
+ raise NotImplementedError
+
+ async def sock_connect(self, sock, address):
+ raise NotImplementedError
+
+ async def sock_accept(self, sock):
+ raise NotImplementedError
+
+ async def sock_sendfile(self, sock, file, offset=0, count=None, *,
+ fallback=None):
+ raise NotImplementedError
+
+ # DNS
+
+ async def getaddrinfo(self, host, port, *,
+ family=0, type=0, proto=0, flags=0):
+ raise NotImplementedError
+
+ async def getnameinfo(self, sockaddr, flags=0):
+ raise NotImplementedError
+
+ # Working with pipes
+
+ async def connect_read_pipe(self, protocol_factory, pipe):
+ raise NotImplementedError
+
+ async def connect_write_pipe(self, protocol_factory, pipe):
+ raise NotImplementedError
+
+ # Unix signals
+
+ def add_signal_handler(self, sig, callback, *args):
+ raise NotImplementedError
+
+ def remove_signal_handler(self, sig):
+ raise NotImplementedError
+
+ # Executing code in thread or process pools
+
+ def run_in_executor(self,
+ executor: typing.Optional[concurrent.futures.ThreadPoolExecutor],
+ func: typing.Callable, *args: typing.Tuple) -> asyncio.futures.Future:
+ if self.is_closed():
+ raise RuntimeError("Event loop is closed")
+ if executor is None:
+ executor = self._default_executor
+
+ # Executors require a bit of extra work for QtAsyncio, as we can't use
+ # naked Python threads; instead, we must make sure that the thread
+ # created by executor.submit() has an event loop. This is achieved by
+ # not submitting the callable directly, but a small wrapper that
+ # attaches a QEventLoop to the executor thread, and then pushes the
+ # actual callable for the executor into this new event loop.
+ wrapper = QAsyncioExecutorWrapper(func, *args)
+ return asyncio.futures.wrap_future(
+ executor.submit(wrapper.do), loop=self
+ )
+
+ def set_default_executor(self,
+ executor: typing.Optional[
+ concurrent.futures.ThreadPoolExecutor]) -> None:
+ if not isinstance(executor, concurrent.futures.ThreadPoolExecutor):
+ raise TypeError("The executor must be a ThreadPoolExecutor")
+ self._default_executor = executor
+
+ # Error Handling API
+
+ def set_exception_handler(self, handler: typing.Optional[typing.Callable]) -> None:
+ if handler is not None and not callable(handler):
+ raise TypeError("The handler must be a callable or None")
+ self._exception_handler = handler
+
+ def get_exception_handler(self) -> typing.Optional[typing.Callable]:
+ return self._exception_handler
+
+ def default_exception_handler(self, context: typing.Dict[str, typing.Any]) -> None:
+ # TODO
+ if context["message"]:
+ print(context["message"])
+
+ def call_exception_handler(self, context: typing.Dict[str, typing.Any]) -> None:
+ if self._exception_handler is not None:
+ self._exception_handler(context)
+
+ # Enabling debug mode
+
+ def get_debug(self) -> bool:
+ # TODO: Part of the asyncio API but currently unused. More details:
+ # https://docs.python.org/3/library/asyncio-dev.html#asyncio-debug-mode
+ return self._debug
+
+ def set_debug(self, enabled: bool) -> None:
+ self._debug = enabled
+
+ # Running subprocesses
+
+ async def subprocess_exec(self, protocol_factory, *args,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ **kwargs):
+ raise NotImplementedError
+
+ async def subprocess_shell(self, protocol_factory, cmd, *,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ **kwargs):
+ raise NotImplementedError
+
+
+class QAsyncioHandle():
+ """
+ The handle enqueues a callback to be executed by the event loop, and allows
+ for this callback to be cancelled before it is executed. This callback will
+ typically execute the step function for a task. This makes the handle one
+ of the main components of asyncio.
+ """
+ class HandleState(enum.Enum):
+ PENDING = enum.auto()
+ CANCELLED = enum.auto()
+ DONE = enum.auto()
+
+ def __init__(self, callback: typing.Callable, args: typing.Tuple,
+ loop: QAsyncioEventLoop, context: typing.Optional[contextvars.Context],
+ is_threadsafe: typing.Optional[bool] = False) -> None:
+ self._callback = callback
+ self._args = args
+ self._loop = loop
+ self._context = context
+ self._is_threadsafe = is_threadsafe
+
+ self._timeout = 0
+
+ self._state = QAsyncioHandle.HandleState.PENDING
+ self._start()
+
+ def _start(self) -> None:
+ self._schedule_event(self._timeout, lambda: self._cb())
+
+ def _schedule_event(self, timeout: int, func: typing.Callable) -> None:
+ # Do not schedule events from asyncio when the app is quit from outside
+ # the event loop, as this would cause events to be enqueued after the
+ # event loop was destroyed.
+ if not self._loop.is_closed() and not self._loop._quit_from_outside:
+ if self._is_threadsafe:
+ # This singleShot overload will push func into self._loop
+ # instead of the current thread's loop. This allows scheduling
+ # a callback from a different thread, which is necessary for
+ # thread-safety.
+ # https://docs.python.org/3/library/asyncio-dev.html#asyncio-multithreading
+ QTimer.singleShot(timeout, self._loop, func)
+ else:
+ QTimer.singleShot(timeout, func)
+
+ @Slot()
+ def _cb(self) -> None:
+ """
+ A slot, enqueued into the event loop, that wraps around the actual
+ callback, typically the step function of a task.
+ """
+ if self._state == QAsyncioHandle.HandleState.PENDING:
+ if self._context is not None:
+ self._context.run(self._callback, *self._args)
+ else:
+ self._callback(*self._args)
+ self._state = QAsyncioHandle.HandleState.DONE
+
+ def cancel(self) -> None:
+ if self._state == QAsyncioHandle.HandleState.PENDING:
+ # The old timer that was created in _start will still trigger but
+ # _cb won't do anything, therefore the callback is effectively
+ # cancelled.
+ self._state = QAsyncioHandle.HandleState.CANCELLED
+
+ def cancelled(self) -> bool:
+ return self._state == QAsyncioHandle.HandleState.CANCELLED
+
+
+class QAsyncioTimerHandle(QAsyncioHandle, asyncio.TimerHandle):
+ def __init__(self, when: float, callback: typing.Callable, args: typing.Tuple,
+ loop: QAsyncioEventLoop, context: typing.Optional[contextvars.Context],
+ is_threadsafe: typing.Optional[bool] = False) -> None:
+ QAsyncioHandle.__init__(self, callback, args, loop, context, is_threadsafe)
+
+ self._when = when
+ time = self._loop.time()
+ self._timeout = round(max(self._when - time, 0) * 1000)
+
+ QAsyncioHandle._start(self)
+
+ def _start(self) -> None:
+ """
+ Overridden so that timer.start() is only called once at the end of the
+ constructor for both QtHandle and QtTimerHandle.
+ """
+ pass
+
+ def when(self) -> float:
+ return self._when
diff --git a/sources/pyside6/PySide6/QtAsyncio/futures.py b/sources/pyside6/PySide6/QtAsyncio/futures.py
new file mode 100644
index 000000000..cbb005fc9
--- /dev/null
+++ b/sources/pyside6/PySide6/QtAsyncio/futures.py
@@ -0,0 +1,117 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+from . import events
+
+import asyncio
+import contextvars
+import enum
+import typing
+
+
+class QAsyncioFuture():
+ """ https://docs.python.org/3/library/asyncio-future.html """
+
+ # Declare that this class implements the Future protocol. The field must
+ # exist and be boolean - True indicates 'await' or 'yield from', False
+ # indicates 'yield'.
+ _asyncio_future_blocking = False
+
+ class FutureState(enum.Enum):
+ PENDING = enum.auto()
+ CANCELLED = enum.auto()
+ DONE_WITH_RESULT = enum.auto()
+ DONE_WITH_EXCEPTION = enum.auto()
+
+ def __init__(self, *, loop: typing.Optional["events.QAsyncioEventLoop"] = None,
+ context: typing.Optional[contextvars.Context] = None) -> None:
+ self._loop: "events.QAsyncioEventLoop"
+ if loop is None:
+ self._loop = asyncio.events.get_event_loop() # type: ignore[assignment]
+ else:
+ self._loop = loop
+ self._context = context
+
+ self._state = QAsyncioFuture.FutureState.PENDING
+ self._result: typing.Any = None
+ self._exception: typing.Optional[BaseException] = None
+
+ self._cancel_message: typing.Optional[str] = None
+
+ # List of callbacks that are called when the future is done.
+ self._callbacks: typing.List[typing.Callable] = list()
+
+ def __await__(self):
+ if not self.done():
+ self._asyncio_future_blocking = True
+ yield self
+ if not self.done():
+ raise RuntimeError("await was not used with a Future or Future-like object")
+ return self.result()
+
+ __iter__ = __await__
+
+ def _schedule_callbacks(self, context: typing.Optional[contextvars.Context] = None):
+ """ A future can optionally have callbacks that are called when the future is done. """
+ for cb in self._callbacks:
+ self._loop.call_soon(
+ cb, self, context=context if context else self._context)
+
+ def result(self) -> typing.Union[typing.Any, Exception]:
+ if self._state == QAsyncioFuture.FutureState.DONE_WITH_RESULT:
+ return self._result
+ if self._state == QAsyncioFuture.FutureState.DONE_WITH_EXCEPTION and self._exception:
+ raise self._exception
+ if self._state == QAsyncioFuture.FutureState.CANCELLED:
+ if self._cancel_message:
+ raise asyncio.CancelledError(self._cancel_message)
+ else:
+ raise asyncio.CancelledError
+ raise asyncio.InvalidStateError
+
+ def set_result(self, result: typing.Any) -> None:
+ self._result = result
+ self._state = QAsyncioFuture.FutureState.DONE_WITH_RESULT
+ self._schedule_callbacks()
+
+ def set_exception(self, exception: Exception) -> None:
+ self._exception = exception
+ self._state = QAsyncioFuture.FutureState.DONE_WITH_EXCEPTION
+ self._schedule_callbacks()
+
+ def done(self) -> bool:
+ return self._state != QAsyncioFuture.FutureState.PENDING
+
+ def cancelled(self) -> bool:
+ return self._state == QAsyncioFuture.FutureState.CANCELLED
+
+ def add_done_callback(self, cb: typing.Callable, *,
+ context: typing.Optional[contextvars.Context] = None) -> None:
+ if self.done():
+ self._loop.call_soon(
+ cb, self, context=context if context else self._context)
+ else:
+ self._callbacks.append(cb)
+
+ def remove_done_callback(self, cb: typing.Callable) -> int:
+ original_len = len(self._callbacks)
+ self._callbacks = [_cb for _cb in self._callbacks if _cb != cb]
+ return original_len - len(self._callbacks)
+
+ def cancel(self, msg: typing.Optional[str] = None) -> bool:
+ if self.done():
+ return False
+ self._state = QAsyncioFuture.FutureState.CANCELLED
+ self._cancel_message = msg
+ self._schedule_callbacks()
+ return True
+
+ def exception(self) -> typing.Optional[BaseException]:
+ if self._state == QAsyncioFuture.FutureState.CANCELLED:
+ raise asyncio.CancelledError
+ if self.done():
+ return self._exception
+ raise asyncio.InvalidStateError
+
+ def get_loop(self) -> asyncio.AbstractEventLoop:
+ return self._loop
diff --git a/sources/pyside6/PySide6/QtAsyncio/tasks.py b/sources/pyside6/PySide6/QtAsyncio/tasks.py
new file mode 100644
index 000000000..7edc15093
--- /dev/null
+++ b/sources/pyside6/PySide6/QtAsyncio/tasks.py
@@ -0,0 +1,190 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+from . import events
+from . import futures
+
+import asyncio
+import collections.abc
+import concurrent.futures
+import contextvars
+import typing
+
+
+class QAsyncioTask(futures.QAsyncioFuture):
+ """ https://docs.python.org/3/library/asyncio-task.html """
+
+ def __init__(self, coro: typing.Union[collections.abc.Generator, collections.abc.Coroutine], *,
+ loop: typing.Optional["events.QAsyncioEventLoop"] = None,
+ name: typing.Optional[str] = None,
+ context: typing.Optional[contextvars.Context] = None) -> None:
+ super().__init__(loop=loop, context=context)
+
+ self._coro = coro # The coroutine for which this task was created.
+ self._name = name if name else "QtTask"
+
+ # The task creates a handle for its coroutine. The handle enqueues the
+ # task's step function as its callback in the event loop.
+ self._handle = self._loop.call_soon(self._step, context=self._context)
+
+ # The task step function executes the coroutine until it finishes,
+ # raises an exception or returns a future. If a future was returned,
+ # the task will await its completion (or exception).
+ self._future_to_await: typing.Optional[asyncio.Future] = None
+
+ self._cancelled = False
+ self._cancel_message: typing.Optional[str] = None
+
+ # https://docs.python.org/3/library/asyncio-extending.html#task-lifetime-support
+ asyncio._register_task(self) # type: ignore[arg-type]
+
+ def __repr__(self) -> str:
+ if self._state == futures.QAsyncioFuture.FutureState.PENDING:
+ state = "Pending"
+ elif self._state == futures.QAsyncioFuture.FutureState.DONE_WITH_RESULT:
+ state = "Done"
+ elif self._state == futures.QAsyncioFuture.FutureState.DONE_WITH_EXCEPTION:
+ state = f"Done with exception ({repr(self._exception)})"
+ elif self._state == futures.QAsyncioFuture.FutureState.CANCELLED:
+ state = "Cancelled"
+
+ return f"Task '{self.get_name()}' with state: {state}"
+
+ class QtTaskApiMisuseError(Exception):
+ pass
+
+ def set_result(self, result: typing.Any) -> None: # type: ignore[override]
+ # This function is not inherited from the Future APIs.
+ raise QAsyncioTask.QtTaskApiMisuseError("Tasks cannot set results")
+
+ def set_exception(self, exception: typing.Any) -> None: # type: ignore[override]
+ # This function is not inherited from the Future APIs.
+ raise QAsyncioTask.QtTaskApiMisuseError("Tasks cannot set exceptions")
+
+ def _step(self,
+ exception_or_future: typing.Union[
+ BaseException, futures.QAsyncioFuture, None] = None) -> None:
+ """
+ The step function is the heart of a task. It is scheduled in the event
+ loop repeatedly, executing the coroutine "step" by "step" (i.e.,
+ iterating through the asynchronous generator) until it finishes with an
+ exception or successfully. Each step can optionally receive an
+ exception or a future as a result from a previous step to handle.
+ """
+
+ if self.done():
+ return
+ result = None
+ self._future_to_await = None
+
+ if asyncio.futures.isfuture(exception_or_future):
+ try:
+ exception_or_future.result()
+ except BaseException as e:
+ exception_or_future = e
+
+ try:
+ asyncio._enter_task(self._loop, self) # type: ignore[arg-type]
+
+ # It is at this point that the coroutine is resumed for the current
+ # step (i.e. asynchronous generator iteration). It will now be
+ # executed until it yields (and potentially returns a future),
+ # raises an exception, is cancelled, or finishes successfully.
+
+ if isinstance(exception_or_future, BaseException):
+ # If the coroutine doesn't handle this exception, it propagates
+ # to the caller.
+ result = self._coro.throw(exception_or_future)
+ else:
+ result = self._coro.send(None)
+ except StopIteration as e:
+ self._state = futures.QAsyncioFuture.FutureState.DONE_WITH_RESULT
+ self._result = e.value
+ except (concurrent.futures.CancelledError, asyncio.exceptions.CancelledError) as e:
+ self._state = futures.QAsyncioFuture.FutureState.CANCELLED
+ self._exception = e
+ except BaseException as e:
+ self._state = futures.QAsyncioFuture.FutureState.DONE_WITH_EXCEPTION
+ self._exception = e
+ else:
+ if asyncio.futures.isfuture(result):
+ # If the coroutine yields a future, the task will await its
+ # completion, and at that point the step function will be
+ # called again.
+ result.add_done_callback(
+ self._step, context=self._context) # type: ignore[arg-type]
+ self._future_to_await = result
+ if self._cancelled:
+ # If the task was cancelled, then a new future should be
+ # cancelled as well. Otherwise, in some scenarios like
+ # a loop inside the task and with bad timing, if the new
+ # future is not cancelled, the task would continue running
+ # in this loop despite having been cancelled. This bad
+ # timing can occur especially if the first future finishes
+ # very quickly.
+ self._future_to_await.cancel(self._cancel_message)
+ elif result is None:
+ # If no future was yielded, we schedule the step function again
+ # without any arguments.
+ self._loop.call_soon(self._step, context=self._context)
+ else:
+ # This is not supposed to happen.
+ exception = RuntimeError(f"Bad task result: {result}")
+ self._loop.call_soon(self._step, exception, context=self._context)
+ finally:
+ asyncio._leave_task(self._loop, self) # type: ignore[arg-type]
+
+ if self._exception:
+ self._loop.call_exception_handler({
+ "message": (str(self._exception) if self._exception
+ else "An exception occurred during task "
+ "execution"),
+ "exception": self._exception,
+ "task": self,
+ "future": (exception_or_future
+ if asyncio.futures.isfuture(exception_or_future)
+ else None)
+ })
+
+ if self.done():
+ self._schedule_callbacks()
+
+ # https://docs.python.org/3/library/asyncio-extending.html#task-lifetime-support
+ asyncio._unregister_task(self) # type: ignore[arg-type]
+
+ def get_stack(self, *, limit=None) -> typing.List[typing.Any]:
+ # TODO
+ raise NotImplementedError("QtTask.get_stack is not implemented")
+
+ def print_stack(self, *, limit=None, file=None) -> None:
+ # TODO
+ raise NotImplementedError("QtTask.print_stack is not implemented")
+
+ def get_coro(self) -> typing.Union[collections.abc.Generator, collections.abc.Coroutine]:
+ return self._coro
+
+ def get_name(self) -> str:
+ return self._name
+
+ def set_name(self, value) -> None:
+ self._name = str(value)
+
+ def cancel(self, msg: typing.Optional[str] = None) -> bool:
+ if self.done():
+ return False
+ self._cancel_message = msg
+ self._handle.cancel()
+ if self._future_to_await is not None:
+ # A task that is awaiting a future must also cancel this future in
+ # order for the cancellation to be successful.
+ self._future_to_await.cancel(msg)
+ self._cancelled = True
+ return True
+
+ def uncancel(self) -> None:
+ # TODO
+ raise NotImplementedError("QtTask.uncancel is not implemented")
+
+ def cancelling(self) -> bool:
+ # TODO
+ raise NotImplementedError("QtTask.cancelling is not implemented")
diff --git a/sources/pyside6/PySide6/QtAxContainer/CMakeLists.txt b/sources/pyside6/PySide6/QtAxContainer/CMakeLists.txt
new file mode 100644
index 000000000..3857d8ddb
--- /dev/null
+++ b/sources/pyside6/PySide6/QtAxContainer/CMakeLists.txt
@@ -0,0 +1,47 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtAxContainer)
+
+set(QtAxContainer_SRC
+${QtAxContainer_GEN_DIR}/qaxbase_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxbaseobject_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxbasewidget_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxobject_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxobjectinterface_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxscript_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxscriptengine_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxscriptmanager_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxselect_wrapper.cpp
+${QtAxContainer_GEN_DIR}/qaxwidget_wrapper.cpp
+# module is always needed
+${QtAxContainer_GEN_DIR}/qtaxcontainer_module_wrapper.cpp)
+
+configure_file("${QtAxContainer_SOURCE_DIR}/QtAxContainer_global.post.h.in"
+ "${QtAxContainer_BINARY_DIR}/QtAxContainer_global.post.h" @ONLY)
+
+set(QtAxContainer_include_dirs
+ ${QtAxContainer_SOURCE_DIR}
+ ${QtAxContainer_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR})
+
+set(QtAxContainer_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}AxContainer_LIBRARIES}
+ ${Qt${QT_MAJOR_VERSION}AxBase_LIBRARIES})
+
+set(QtAxContainer_deps QtWidgets)
+
+create_pyside_module(NAME QtAxContainer
+ INCLUDE_DIRS QtAxContainer_include_dirs
+ LIBRARIES QtAxContainer_libraries
+ DEPS QtAxContainer_deps
+ TYPESYSTEM_PATH QtAxContainer_SOURCE_DIR
+ SOURCES QtAxContainer_SRC
+ TYPESYSTEM_NAME ${QtAxContainer_BINARY_DIR}/typesystem_axcontainer.xml)
diff --git a/sources/pyside6/PySide6/QtAxContainer/QtAxContainer_global.post.h.in b/sources/pyside6/PySide6/QtAxContainer/QtAxContainer_global.post.h.in
new file mode 100644
index 000000000..f4033c4f5
--- /dev/null
+++ b/sources/pyside6/PySide6/QtAxContainer/QtAxContainer_global.post.h.in
@@ -0,0 +1 @@
+#include <QtAxContainer/QtAxContainer>
diff --git a/sources/pyside6/PySide6/QtAxContainer/typesystem_axcontainer.xml b/sources/pyside6/PySide6/QtAxContainer/typesystem_axcontainer.xml
new file mode 100644
index 000000000..4d1cbe91c
--- /dev/null
+++ b/sources/pyside6/PySide6/QtAxContainer/typesystem_axcontainer.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.QtAxContainer"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+ <rejection class="*" function-name="connectNotify"/>
+ <rejection class="*" function-name="queryInterface"/>
+ <rejection class="*" function-name="qt_metacall"/>
+ <rejection class="*" function-name="qt_static_metacall"/>
+
+ <object-type name="QAxBase">
+ <!-- PYSIDE-1410, Check for QVariantList first since it also is a QVariant -->
+ <modify-function signature="dynamicCall(const char*,QList&lt;QVariant&gt;&amp;)" overload-number="0"/>
+ <modify-function signature="dynamicCall(const char*,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)" overload-number="1"/>
+ <!-- Remove protected, internal function -->
+ <modify-function signature="dynamicCall(const char*,QList&lt;QVariant&gt;&amp;,unsigned)" remove="all"/>
+ </object-type>
+ <object-type name="QAxBaseObject"/>
+ <object-type name="QAxObject"/>
+ <object-type name="QAxObjectInterface"/>
+ <object-type name="QAxScript">
+ <enum-type name="FunctionFlags"/>
+ </object-type>
+ <object-type name="QAxScriptEngine">
+ <enum-type name="State"/>
+ </object-type>
+ <object-type name="QAxScriptManager">
+ <!-- Ax Servers only -->
+ <modify-function signature="addObject(QObject*)" remove="all"/>
+ </object-type>
+ <object-type name="QAxBaseWidget"/>
+ <object-type name="QAxSelect">
+ <enum-type name="SandboxingLevel"/>
+ </object-type>
+ <object-type name="QAxWidget"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtBluetooth/CMakeLists.txt b/sources/pyside6/PySide6/QtBluetooth/CMakeLists.txt
new file mode 100644
index 000000000..e063a4546
--- /dev/null
+++ b/sources/pyside6/PySide6/QtBluetooth/CMakeLists.txt
@@ -0,0 +1,56 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtBluetooth)
+
+set(QtBluetooth_OPTIONAL_SRC )
+set(QtBluetooth_DROPPED_ENTRIES )
+
+set(QtBluetooth_SRC
+ ${QtBluetooth_GEN_DIR}/qbluetooth_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothaddress_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothdevicediscoveryagent_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothdeviceinfo_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothhostinfo_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothlocaldevice_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothserver_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothservicediscoveryagent_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothserviceinfo_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothserviceinfo_alternative_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothserviceinfo_sequence_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothsocket_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qbluetoothuuid_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergyadvertisingdata_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergyadvertisingparameters_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergyadvertisingparameters_addressinfo_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergycharacteristic_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergycharacteristicdata_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergyconnectionparameters_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergycontroller_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergydescriptor_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergydescriptordata_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergyservice_wrapper.cpp
+ ${QtBluetooth_GEN_DIR}/qlowenergyservicedata_wrapper.cpp
+# module is always needed
+ ${QtBluetooth_GEN_DIR}/qtbluetooth_module_wrapper.cpp
+)
+
+set(QtBluetooth_include_dirs ${QtBluetooth_SOURCE_DIR}
+ ${QtBluetooth_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Bluetooth_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtBluetooth_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Bluetooth_LIBRARIES})
+
+set(QtBluetooth_deps QtCore)
+
+create_pyside_module(NAME QtBluetooth
+ INCLUDE_DIRS QtBluetooth_include_dirs
+ LIBRARIES QtBluetooth_libraries
+ DEPS QtBluetooth_deps
+ TYPESYSTEM_PATH QtBluetooth_SOURCE_DIR
+ SOURCES QtBluetooth_SRC
+ DROPPED_ENTRIES QtBluetooth_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtBluetooth/typesystem_bluetooth.xml b/sources/pyside6/PySide6/QtBluetooth/typesystem_bluetooth.xml
new file mode 100644
index 000000000..a3687b6b0
--- /dev/null
+++ b/sources/pyside6/PySide6/QtBluetooth/typesystem_bluetooth.xml
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtBluetooth"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <namespace-type name="QBluetooth">
+ <enum-type name="AttAccessConstraint" flags="AttAccessConstraints"/>
+ <enum-type name="Security" flags="SecurityFlags"/>
+ </namespace-type>
+ <value-type name="QBluetoothAddress"/>
+ <value-type name="QBluetoothHostInfo"/>
+ <object-type name="QBluetoothLocalDevice">
+ <enum-type name="Error"/>
+ <enum-type name="HostMode"/>
+ <enum-type name="Pairing"/>
+ </object-type>
+ <object-type name="QBluetoothDeviceDiscoveryAgent">
+ <enum-type name="DiscoveryMethod" flags="DiscoveryMethods"/>
+ <enum-type name="Error"/>
+ </object-type>
+ <value-type name="QBluetoothDeviceInfo">
+ <enum-type name="CoreConfiguration" flags="CoreConfigurations"/>
+ <enum-type name="Field" flags="Fields"/>
+ <enum-type name="MajorDeviceClass"/>
+ <enum-type name="MinorAudioVideoClass"/>
+ <enum-type name="MinorComputerClass"/>
+ <enum-type name="MinorHealthClass"/>
+ <enum-type name="MinorImagingClass"/>
+ <enum-type name="MinorMiscellaneousClass"/>
+ <enum-type name="MinorNetworkClass"/>
+ <enum-type name="MinorPeripheralClass"/>
+ <enum-type name="MinorPhoneClass"/>
+ <enum-type name="MinorToyClass"/>
+ <enum-type name="MinorWearableClass"/>
+ <enum-type name="ServiceClass" flags="ServiceClasses"/>
+ </value-type>
+ <object-type name="QBluetoothServiceDiscoveryAgent">
+ <enum-type name="DiscoveryMode"/>
+ <enum-type name="Error"/>
+ </object-type>
+ <object-type name="QBluetoothServer">
+ <enum-type name="Error"/>
+ </object-type>
+ <value-type name="QBluetoothServiceInfo">
+ <enum-type name="AttributeId"/>
+ <enum-type name="Protocol"/>
+ <value-type name="Alternative"/>
+ <value-type name="Sequence"/>
+ </value-type>
+ <object-type name="QBluetoothSocket">
+ <enum-type name="SocketError"/>
+ <enum-type name="SocketState"/>
+ </object-type>
+ <value-type name="QBluetoothUuid">
+ <enum-type name="CharacteristicType"/>
+ <enum-type name="DescriptorType"/>
+ <enum-type name="ProtocolUuid"/>
+ <enum-type name="ServiceClassUuid"/>
+ <modify-function signature="toUInt16(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toUInt32(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+ </value-type>
+ <value-type name="QLowEnergyAdvertisingData">
+ <enum-type name="Discoverability"/>
+ </value-type>
+ <value-type name="QLowEnergyAdvertisingParameters">
+ <value-type name="AddressInfo"/>
+ <enum-type name="FilterPolicy"/>
+ <enum-type name="Mode"/>
+ </value-type>
+ <value-type name="QLowEnergyCharacteristic">
+ <enum-type name="PropertyType" flags="PropertyTypes"/>
+ </value-type>
+ <value-type name="QLowEnergyCharacteristicData"/>
+ <value-type name="QLowEnergyConnectionParameters"/>
+ <object-type name="QLowEnergyController">
+ <enum-type name="ControllerState"/>
+ <enum-type name="Error"/>
+ <enum-type name="RemoteAddressType"/>
+ <enum-type name="Role"/>
+ </object-type>
+ <value-type name="QLowEnergyDescriptor"/>
+ <value-type name="QLowEnergyDescriptorData"/>
+ <object-type name="QLowEnergyService">
+ <enum-type name="DiscoveryMode"/>
+ <enum-type name="ServiceError"/>
+ <enum-type name="ServiceState"/>
+ <enum-type name="ServiceType" flags="ServiceTypes"/>
+ <enum-type name="WriteMode"/>
+ </object-type>
+ <value-type name="QLowEnergyServiceData">
+ <enum-type name="ServiceType"/>
+ </value-type>
+
+ <!-- QtNetwork is pulled in via QtBluetoothDepends. -->
+ <suppress-warning text="^Scoped enum 'Q(Ocsp)|(Dtls).*' does not have a type entry.*$"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtCharts/CMakeLists.txt b/sources/pyside6/PySide6/QtCharts/CMakeLists.txt
new file mode 100644
index 000000000..20126fdee
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCharts/CMakeLists.txt
@@ -0,0 +1,85 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtCharts)
+
+set(QtCharts_SRC
+${QtCharts_GEN_DIR}/qabstractaxis_wrapper.cpp
+${QtCharts_GEN_DIR}/qabstractbarseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qabstractseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qarealegendmarker_wrapper.cpp
+${QtCharts_GEN_DIR}/qareaseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qbarcategoryaxis_wrapper.cpp
+${QtCharts_GEN_DIR}/qbarlegendmarker_wrapper.cpp
+${QtCharts_GEN_DIR}/qbarmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qbarseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qbarset_wrapper.cpp
+${QtCharts_GEN_DIR}/qboxplotlegendmarker_wrapper.cpp
+${QtCharts_GEN_DIR}/qboxplotmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qboxplotseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qboxset_wrapper.cpp
+${QtCharts_GEN_DIR}/qcandlesticklegendmarker_wrapper.cpp
+${QtCharts_GEN_DIR}/qcandlestickmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qcandlestickseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qcandlestickset_wrapper.cpp
+${QtCharts_GEN_DIR}/qcategoryaxis_wrapper.cpp
+${QtCharts_GEN_DIR}/qchart_wrapper.cpp
+${QtCharts_GEN_DIR}/qchartview_wrapper.cpp
+${QtCharts_GEN_DIR}/qcoloraxis_wrapper.cpp
+${QtCharts_GEN_DIR}/qdatetimeaxis_wrapper.cpp
+${QtCharts_GEN_DIR}/qhbarmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qhboxplotmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qhcandlestickmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qhorizontalbarseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qhorizontalpercentbarseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qhorizontalstackedbarseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qhpiemodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qhxymodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qlegend_wrapper.cpp
+${QtCharts_GEN_DIR}/qlegendmarker_wrapper.cpp
+${QtCharts_GEN_DIR}/qlineseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qlogvalueaxis_wrapper.cpp
+${QtCharts_GEN_DIR}/qpercentbarseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qpielegendmarker_wrapper.cpp
+${QtCharts_GEN_DIR}/qpiemodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qpieseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qpieslice_wrapper.cpp
+${QtCharts_GEN_DIR}/qpolarchart_wrapper.cpp
+${QtCharts_GEN_DIR}/qscatterseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qsplineseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qstackedbarseries_wrapper.cpp
+${QtCharts_GEN_DIR}/qvalueaxis_wrapper.cpp
+${QtCharts_GEN_DIR}/qvbarmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qvboxplotmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qvcandlestickmodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qvpiemodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qvxymodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qxylegendmarker_wrapper.cpp
+${QtCharts_GEN_DIR}/qxymodelmapper_wrapper.cpp
+${QtCharts_GEN_DIR}/qxyseries_wrapper.cpp
+# module is always needed
+${QtCharts_GEN_DIR}/qtcharts_module_wrapper.cpp
+)
+
+set(QtCharts_include_dirs ${QtCharts_SOURCE_DIR}
+ ${QtCharts_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Charts_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR})
+
+set(QtCharts_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Charts_LIBRARIES})
+
+set(QtCharts_deps QtCore QtGui QtWidgets)
+
+create_pyside_module(NAME QtCharts
+ INCLUDE_DIRS QtCharts_include_dirs
+ LIBRARIES QtCharts_libraries
+ DEPS QtCharts_deps
+ TYPESYSTEM_PATH QtCharts_SOURCE_DIR
+ SOURCES QtCharts_SRC)
diff --git a/sources/pyside6/PySide6/QtCharts/typesystem_charts.xml b/sources/pyside6/PySide6/QtCharts/typesystem_charts.xml
new file mode 100644
index 000000000..d4337df8e
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCharts/typesystem_charts.xml
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtCharts"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+ <!-- PYSIDE-1101 Removing inherited method to avoid argument conflict
+ on the QChart::scroll overload -->
+ <rejection class="QGraphicsItem" function-name="scroll"/>
+ <object-type name="QAbstractAxis">
+ <enum-type name="AxisType"/>
+ </object-type>
+ <object-type name="QAbstractBarSeries">
+ <enum-type name="LabelsPosition"/>
+ <modify-function signature="append(QBarSet*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="append(QList&lt;QBarSet*&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insert(int,QBarSet*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="take(QBarSet*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QAbstractSeries">
+ <enum-type name="SeriesType"/>
+ </object-type>
+ <object-type name="QAreaLegendMarker"/>
+ <object-type name="QAreaSeries">
+ <modify-function signature="setUpperSeries(QLineSeries*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setLowerSeries(QLineSeries*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QBarCategoryAxis"/>
+ <object-type name="QBarLegendMarker"/>
+ <object-type name="QBarModelMapper"/>
+ <object-type name="QBarSeries"/>
+ <object-type name="QBarSet"/>
+ <object-type name="QBoxPlotLegendMarker"/>
+ <object-type name="QBoxPlotModelMapper"/>
+ <object-type name="QBoxPlotSeries">
+ <modify-function signature="append(QBoxSet*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="append(QList&lt;QBoxSet*&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insert(int,QBoxSet*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="take(QBoxSet*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QBoxSet">
+ <enum-type name="ValuePositions" python-type="IntEnum"/>
+ </object-type>
+ <object-type name="QCandlestickLegendMarker"/>
+ <object-type name="QCandlestickModelMapper"/>
+ <object-type name="QCandlestickSeries">
+ <modify-function signature="append(QCandlestickSet*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="append(QList&lt;QCandlestickSet*&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insert(int,QCandlestickSet*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="take(QCandlestickSet*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QCandlestickSet"/>
+ <object-type name="QCategoryAxis">
+ <enum-type name="AxisLabelsPosition"/>
+ </object-type>
+ <object-type name="QChart">
+ <enum-type name="ChartType"/>
+ <enum-type name="ChartTheme"/>
+ <enum-type name="AnimationOption" flags="AnimationOptions"/>
+ <modify-function signature="addAxis(QAbstractAxis*,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addSeries(QAbstractSeries*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisX(QAbstractAxis*,QAbstractSeries*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisY(QAbstractAxis*,QAbstractSeries*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeAxis(QAbstractAxis*)">
+ <inject-code file="../glue/qtcharts.cpp" snippet="qchart-releaseownership"/>
+ </modify-function>
+ <modify-function signature="removeSeries(QAbstractSeries*)">
+ <inject-code file="../glue/qtcharts.cpp" snippet="qchart-releaseownership"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QChartView">
+ <enum-type name="RubberBand" flags="RubberBands"/>
+ <modify-function signature="QChartView(QChart*,QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setChart(QChart*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QColorAxis"/>
+ <object-type name="QDateTimeAxis"/>
+ <object-type name="QHBarModelMapper"/>
+ <object-type name="QHBoxPlotModelMapper"/>
+ <object-type name="QHCandlestickModelMapper"/>
+ <object-type name="QHorizontalBarSeries"/>
+ <object-type name="QHorizontalPercentBarSeries"/>
+ <object-type name="QHorizontalStackedBarSeries"/>
+ <object-type name="QHPieModelMapper"/>
+ <object-type name="QHXYModelMapper"/>
+ <object-type name="QLegend">
+ <enum-type name="MarkerShape"/>
+ </object-type>
+ <object-type name="QLegendMarker">
+ <enum-type name="LegendMarkerType"/>
+ </object-type>
+ <object-type name="QLineSeries"/>
+ <object-type name="QLogValueAxis"/>
+ <object-type name="QPercentBarSeries"/>
+ <object-type name="QPieLegendMarker"/>
+ <object-type name="QPieModelMapper"/>
+ <object-type name="QPieSlice">
+ <enum-type name="LabelPosition"/>
+ </object-type>
+ <object-type name="QPieSeries">
+ <modify-function signature="append(QPieSlice*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="append(QList&lt;QPieSlice*&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insert(int,QPieSlice*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="take(QPieSlice*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QPolarChart">
+ <enum-type name="PolarOrientation" flags="PolarOrientations"/>
+ <modify-function signature="addAxis(QAbstractAxis*,QPolarChart::PolarOrientation)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <!-- Compile error assigning default flags value -->
+ <modify-function signature="axes(QFlags&lt;QPolarChart::PolarOrientation&gt;,QAbstractSeries*)const" remove="all"/>
+ </object-type>
+ <object-type name="QScatterSeries">
+ <enum-type name="MarkerShape"/>
+ </object-type>
+ <object-type name="QSplineSeries"/>
+ <object-type name="QStackedBarSeries"/>
+ <object-type name="QValueAxis">
+ <enum-type name="TickType"/>
+ </object-type>
+ <object-type name="QVBarModelMapper"/>
+ <object-type name="QVBoxPlotModelMapper"/>
+ <object-type name="QVCandlestickModelMapper"/>
+ <object-type name="QVPieModelMapper"/>
+ <object-type name="QVXYModelMapper"/>
+ <object-type name="QXYLegendMarker"/>
+ <object-type name="QXYModelMapper"/>
+ <!-- Add numpy versions as separate functions since passing ndarrays to other
+ typecheck macros causes:
+ FIXME Subscripted generics cannot be used with class and instance checks -->
+ <object-type name="QXYSeries">
+ <enum-type name="PointConfiguration"/>
+ <include file-name="pyside_numpy.h" location="global"/>
+ <add-function signature="appendNp(PyArrayObject *@x@, PyArrayObject *@y@)">
+ <inject-code file="../glue/qtcharts.cpp" snippet="qxyseries-appendnp-numpy-x-y"/>
+ <inject-documentation format="target" mode="append">
+ Adds the list of data points specified by two
+ one-dimensional, equally sized numpy arrays representing the x, y values, respectively.
+ </inject-documentation>
+ </add-function>
+ <add-function signature="replaceNp(PyArrayObject *@x@, PyArrayObject *@y@)">
+ <inject-code file="../glue/qtcharts.cpp" snippet="qxyseries-replacenp-numpy-x-y"/>
+ <inject-documentation format="target" mode="append">
+ Replaces the current points with the points specified by two
+ one-dimensional, equally sized numpy arrays representing the x, y values, respectively.
+ </inject-documentation>
+ </add-function>
+ </object-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtConcurrent/CMakeLists.txt b/sources/pyside6/PySide6/QtConcurrent/CMakeLists.txt
new file mode 100644
index 000000000..134e44ed9
--- /dev/null
+++ b/sources/pyside6/PySide6/QtConcurrent/CMakeLists.txt
@@ -0,0 +1,33 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtConcurrent)
+
+set(QtConcurrent_SRC
+${QtConcurrent_GEN_DIR}/qtconcurrent_wrapper.cpp
+${QtConcurrent_GEN_DIR}/qfuturevoid_wrapper.cpp
+${QtConcurrent_GEN_DIR}/qfutureqstring_wrapper.cpp
+${QtConcurrent_GEN_DIR}/qfuturewatchervoid_wrapper.cpp
+${QtConcurrent_GEN_DIR}/qfuturewatcherqstring_wrapper.cpp
+# module is always needed
+${QtConcurrent_GEN_DIR}/qtconcurrent_module_wrapper.cpp
+)
+
+set(QtConcurrent_include_dirs ${QtConcurrent_SOURCE_DIR}
+ ${QtConcurrent_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Concurrent_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtConcurrent_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Concurrent_LIBRARIES})
+
+set(QtConcurrent_deps QtCore)
+
+create_pyside_module(NAME QtConcurrent
+ INCLUDE_DIRS QtConcurrent_include_dirs
+ LIBRARIES QtConcurrent_libraries
+ DEPS QtConcurrent_deps
+ TYPESYSTEM_PATH QtConcurrent_SOURCE_DIR
+ SOURCES QtConcurrent_SRC)
diff --git a/sources/pyside6/PySide6/QtConcurrent/curr_errors.txt b/sources/pyside6/PySide6/QtConcurrent/curr_errors.txt
new file mode 100644
index 000000000..d8405c755
--- /dev/null
+++ b/sources/pyside6/PySide6/QtConcurrent/curr_errors.txt
@@ -0,0 +1,21 @@
+Generating class model... [OK]
+Generating enum model... [OK]
+Generating namespace model... [WARNING]
+ enum 'QtConcurrent::ThreadFunctionResult' does not have a type entry or is not an enum
+ enum 'QtConcurrent::ReduceQueueThrottleLimit' does not have a type entry or is not an enum
+
+
+Resolving typedefs... [OK]
+Fixing class inheritance... [OK]
+Detecting inconsistencies in class model... [OK]
+[OK]
+
+Done, 2 warnings (506 known issues)
+Scanning dependencies of target QtConcurrent
+[ 21%] Building CXX object PySide/QtConcurrent/CMakeFiles/QtConcurrent.dir/PySide/QtConcurrent/qtconcurrent_module_wrapper.cpp.o
+In file included from /Users/tismer/src/pyside-setup2/pyside_build/py3.4-qt5.4.2-64bit-debug/pyside/PySide/QtConcurrent/PySide/QtConcurrent/qtconcurrent_module_wrapper.cpp:30:
+/Users/tismer/src/pyside-setup2/pyside_build/py3.4-qt5.4.2-64bit-debug/pyside/PySide/QtConcurrent/PySide/QtConcurrent/pyside_qtconcurrent_python.h:44:10: fatal error:
+ 'qtconcurrentexception.h' file not found
+#include <qtconcurrentexception.h>
+ ^
+1 error generated.
diff --git a/sources/pyside6/PySide6/QtConcurrent/typesystem_concurrent.xml b/sources/pyside6/PySide6/QtConcurrent/typesystem_concurrent.xml
new file mode 100644
index 000000000..1892793b9
--- /dev/null
+++ b/sources/pyside6/PySide6/QtConcurrent/typesystem_concurrent.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtConcurrent"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+
+ <!-- Qt5: this is currently the minimum possible QtConcurrent support, by just extracting
+ the name space from QtCore -->
+ <namespace-type name="QtConcurrent" target-type="class">
+ <enum-type name="FutureResult"/>
+ <enum-type name="ReduceOption" flags="ReduceOptions"/>
+ <enum-type name="ThreadFunctionResult"/>
+ <extra-includes>
+ <include file-name="qtconcurrentreducekernel.h" location="global"/>
+ <include file-name="qtconcurrentthreadengine.h" location="global"/>
+ </extra-includes>
+ </namespace-type>
+
+ <typedef-type name="QFutureVoid" source="QFuture&lt;void&gt;" disable-wrapper="yes">
+ <include file-name="QtCore/qfuture.h" location="global"/>
+ </typedef-type>
+ <typedef-type name="QFutureQString" source="QFuture&lt;QString&gt;" disable-wrapper="yes">
+ <include file-name="QtCore/qfuture.h" location="global"/>
+ </typedef-type>
+ <typedef-type name="QFutureWatcherVoid" source="QFutureWatcher&lt;void&gt;">
+ <include file-name="QtCore/qfuturewatcher.h" location="global"/>
+ </typedef-type>
+ <typedef-type name="QFutureWatcherQString" source="QFutureWatcher&lt;QString&gt;">
+ <include file-name="QtCore/qfuturewatcher.h" location="global"/>
+ </typedef-type>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtCore/CMakeLists.txt b/sources/pyside6/PySide6/QtCore/CMakeLists.txt
new file mode 100644
index 000000000..f3e4be0f9
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/CMakeLists.txt
@@ -0,0 +1,291 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtCore)
+
+set(CMAKE_AUTOMOC ON)
+
+set(QtCore_DROPPED_ENTRIES )
+
+set(QtCore_static_sources
+ "${QtCore_SOURCE_DIR}/glue/qeasingcurve_glue.cpp"
+ "${QtCore_SOURCE_DIR}/glue/core_snippets.cpp"
+ "${QtCore_SOURCE_DIR}/glue/qtcorehelper.cpp"
+ "${QtCore_SOURCE_DIR}/glue/qiopipe.cpp"
+ "${pyside6_SOURCE_DIR}/qiopipe.h"
+)
+
+if(ENABLE_WIN)
+ set(SPECIFIC_OS_FILES
+ ${QtCore_GEN_DIR}/qwineventnotifier_wrapper.cpp
+ )
+else()
+ set(SPECIFIC_OS_FILES
+ ${QtCore_GEN_DIR}/qprocess_unixprocessparameters_wrapper.cpp)
+endif()
+
+set(QtCore_SRC
+${QtCore_GEN_DIR}/qabstractanimation_wrapper.cpp
+${QtCore_GEN_DIR}/qabstracteventdispatcher_timerinfo_wrapper.cpp
+${QtCore_GEN_DIR}/qabstracteventdispatcher_wrapper.cpp
+${QtCore_GEN_DIR}/qabstractitemmodel_wrapper.cpp
+${QtCore_GEN_DIR}/qabstractlistmodel_wrapper.cpp
+${QtCore_GEN_DIR}/qabstractnativeeventfilter_wrapper.cpp
+${QtCore_GEN_DIR}/qabstractproxymodel_wrapper.cpp
+${QtCore_GEN_DIR}/qabstracttablemodel_wrapper.cpp
+${QtCore_GEN_DIR}/qanimationgroup_wrapper.cpp
+${QtCore_GEN_DIR}/qbasicmutex_wrapper.cpp
+${QtCore_GEN_DIR}/qbasictimer_wrapper.cpp
+${QtCore_GEN_DIR}/qbitarray_wrapper.cpp
+${QtCore_GEN_DIR}/qbuffer_wrapper.cpp
+${QtCore_GEN_DIR}/qbytearray_frombase64result_wrapper.cpp
+${QtCore_GEN_DIR}/qbytearray_wrapper.cpp
+${QtCore_GEN_DIR}/qbytearraymatcher_wrapper.cpp
+${QtCore_GEN_DIR}/qcalendar_systemid_wrapper.cpp
+${QtCore_GEN_DIR}/qcalendar_wrapper.cpp
+${QtCore_GEN_DIR}/qcalendar_yearmonthday_wrapper.cpp
+${QtCore_GEN_DIR}/qcborarray_wrapper.cpp
+${QtCore_GEN_DIR}/qcborerror_wrapper.cpp
+${QtCore_GEN_DIR}/qcbormap_wrapper.cpp
+${QtCore_GEN_DIR}/qcborparsererror_wrapper.cpp
+${QtCore_GEN_DIR}/qcborstreamreader_wrapper.cpp
+${QtCore_GEN_DIR}/qcborstreamwriter_wrapper.cpp
+${QtCore_GEN_DIR}/qcborstringresultbytearray_wrapper.cpp
+${QtCore_GEN_DIR}/qcborstringresultstring_wrapper.cpp
+${QtCore_GEN_DIR}/qcborvalue_wrapper.cpp
+${QtCore_GEN_DIR}/qchildevent_wrapper.cpp
+${QtCore_GEN_DIR}/qcollator_wrapper.cpp
+${QtCore_GEN_DIR}/qcollatorsortkey_wrapper.cpp
+${QtCore_GEN_DIR}/qcommandlineoption_wrapper.cpp
+${QtCore_GEN_DIR}/qcommandlineparser_wrapper.cpp
+${QtCore_GEN_DIR}/qconcatenatetablesproxymodel_wrapper.cpp
+${QtCore_GEN_DIR}/qcoreapplication_wrapper.cpp
+${QtCore_GEN_DIR}/qcryptographichash_wrapper.cpp
+${QtCore_GEN_DIR}/qdatastream_wrapper.cpp
+${QtCore_GEN_DIR}/qdate_wrapper.cpp
+${QtCore_GEN_DIR}/qdatetime_wrapper.cpp
+${QtCore_GEN_DIR}/qdeadlinetimer_wrapper.cpp
+${QtCore_GEN_DIR}/qdir_wrapper.cpp
+${QtCore_GEN_DIR}/qdiriterator_wrapper.cpp
+${QtCore_GEN_DIR}/qdynamicpropertychangeevent_wrapper.cpp
+${QtCore_GEN_DIR}/qeasingcurve_wrapper.cpp
+${QtCore_GEN_DIR}/qelapsedtimer_wrapper.cpp
+${QtCore_GEN_DIR}/qevent_wrapper.cpp
+${QtCore_GEN_DIR}/qeventloop_wrapper.cpp
+${QtCore_GEN_DIR}/qfactoryinterface_wrapper.cpp
+${QtCore_GEN_DIR}/qfile_wrapper.cpp
+${QtCore_GEN_DIR}/qfiledevice_wrapper.cpp
+${QtCore_GEN_DIR}/qfileinfo_wrapper.cpp
+${QtCore_GEN_DIR}/qfileselector_wrapper.cpp
+${QtCore_GEN_DIR}/qfilesystemwatcher_wrapper.cpp
+${QtCore_GEN_DIR}/qfutureinterfacebase_wrapper.cpp
+${QtCore_GEN_DIR}/qgenericargument_wrapper.cpp
+${QtCore_GEN_DIR}/qgenericreturnargument_wrapper.cpp
+${QtCore_GEN_DIR}/qhashseed_wrapper.cpp
+${QtCore_GEN_DIR}/qidentityproxymodel_wrapper.cpp
+${QtCore_GEN_DIR}/qiodevice_wrapper.cpp
+${QtCore_GEN_DIR}/qiodevicebase_wrapper.cpp
+${QtCore_GEN_DIR}/qitemselection_wrapper.cpp
+${QtCore_GEN_DIR}/qitemselectionmodel_wrapper.cpp
+${QtCore_GEN_DIR}/qitemselectionrange_wrapper.cpp
+${QtCore_GEN_DIR}/qjsonarray_wrapper.cpp
+${QtCore_GEN_DIR}/qjsondocument_wrapper.cpp
+${QtCore_GEN_DIR}/qjsonparseerror_wrapper.cpp
+${QtCore_GEN_DIR}/qjsonvalue_wrapper.cpp
+${QtCore_GEN_DIR}/qkeycombination_wrapper.cpp
+${QtCore_GEN_DIR}/qlibrary_wrapper.cpp
+${QtCore_GEN_DIR}/qlibraryinfo_wrapper.cpp
+${QtCore_GEN_DIR}/qline_wrapper.cpp
+${QtCore_GEN_DIR}/qlinef_wrapper.cpp
+${QtCore_GEN_DIR}/qlocale_wrapper.cpp
+${QtCore_GEN_DIR}/qlockfile_wrapper.cpp
+${QtCore_GEN_DIR}/qloggingcategory_wrapper.cpp
+${QtCore_GEN_DIR}/qmargins_wrapper.cpp
+${QtCore_GEN_DIR}/qmarginsf_wrapper.cpp
+${QtCore_GEN_DIR}/qmessageauthenticationcode_wrapper.cpp
+${QtCore_GEN_DIR}/qmessagelogcontext_wrapper.cpp
+${QtCore_GEN_DIR}/qmetaclassinfo_wrapper.cpp
+${QtCore_GEN_DIR}/qmetaenum_wrapper.cpp
+${QtCore_GEN_DIR}/qmetamethod_wrapper.cpp
+${QtCore_GEN_DIR}/qmetaobject_connection_wrapper.cpp
+${QtCore_GEN_DIR}/qmetaobject_wrapper.cpp
+${QtCore_GEN_DIR}/qmetaproperty_wrapper.cpp
+${QtCore_GEN_DIR}/qmetatype_wrapper.cpp
+${QtCore_GEN_DIR}/qmimedata_wrapper.cpp
+${QtCore_GEN_DIR}/qmimedatabase_wrapper.cpp
+${QtCore_GEN_DIR}/qmimetype_wrapper.cpp
+${QtCore_GEN_DIR}/qmodelindex_wrapper.cpp
+${QtCore_GEN_DIR}/qmodelroledata_wrapper.cpp
+${QtCore_GEN_DIR}/qmutex_wrapper.cpp
+${QtCore_GEN_DIR}/qnativeipckey_wrapper.cpp
+${QtCore_GEN_DIR}/qobject_wrapper.cpp
+${QtCore_GEN_DIR}/qoperatingsystemversion_wrapper.cpp
+${QtCore_GEN_DIR}/qoperatingsystemversionbase_wrapper.cpp
+${QtCore_GEN_DIR}/qparallelanimationgroup_wrapper.cpp
+${QtCore_GEN_DIR}/qpauseanimation_wrapper.cpp
+${QtCore_GEN_DIR}/qpersistentmodelindex_wrapper.cpp
+${QtCore_GEN_DIR}/qpluginloader_wrapper.cpp
+${QtCore_GEN_DIR}/qpoint_wrapper.cpp
+${QtCore_GEN_DIR}/qpointf_wrapper.cpp
+${QtCore_GEN_DIR}/qprocess_wrapper.cpp
+${QtCore_GEN_DIR}/qprocessenvironment_wrapper.cpp
+${QtCore_GEN_DIR}/qpropertyanimation_wrapper.cpp
+${QtCore_GEN_DIR}/qrandomgenerator64_wrapper.cpp
+${QtCore_GEN_DIR}/qrandomgenerator_wrapper.cpp
+${QtCore_GEN_DIR}/qreadlocker_wrapper.cpp
+${QtCore_GEN_DIR}/qreadwritelock_wrapper.cpp
+${QtCore_GEN_DIR}/qrect_wrapper.cpp
+${QtCore_GEN_DIR}/qrectf_wrapper.cpp
+${QtCore_GEN_DIR}/qrecursivemutex_wrapper.cpp
+${QtCore_GEN_DIR}/qregularexpression_wrapper.cpp
+${QtCore_GEN_DIR}/qregularexpressionmatch_wrapper.cpp
+${QtCore_GEN_DIR}/qregularexpressionmatchiterator_wrapper.cpp
+${QtCore_GEN_DIR}/qresource_wrapper.cpp
+${QtCore_GEN_DIR}/qrunnable_wrapper.cpp
+${QtCore_GEN_DIR}/qsavefile_wrapper.cpp
+${QtCore_GEN_DIR}/qsemaphore_wrapper.cpp
+${QtCore_GEN_DIR}/qsemaphorereleaser_wrapper.cpp
+${QtCore_GEN_DIR}/qsequentialanimationgroup_wrapper.cpp
+${QtCore_GEN_DIR}/qsettings_wrapper.cpp
+${QtCore_GEN_DIR}/qsignalblocker_wrapper.cpp
+${QtCore_GEN_DIR}/qsignalmapper_wrapper.cpp
+${QtCore_GEN_DIR}/qsize_wrapper.cpp
+${QtCore_GEN_DIR}/qsizef_wrapper.cpp
+${QtCore_GEN_DIR}/qsocketdescriptor_wrapper.cpp
+${QtCore_GEN_DIR}/qsocketnotifier_wrapper.cpp
+${QtCore_GEN_DIR}/qsortfilterproxymodel_wrapper.cpp
+${QtCore_GEN_DIR}/qstandardpaths_wrapper.cpp
+${QtCore_GEN_DIR}/qstorageinfo_wrapper.cpp
+${QtCore_GEN_DIR}/qstringconverter_wrapper.cpp
+${QtCore_GEN_DIR}/qstringconverterbase_state_wrapper.cpp
+${QtCore_GEN_DIR}/qstringconverterbase_wrapper.cpp
+${QtCore_GEN_DIR}/qstringdecoder_wrapper.cpp
+${QtCore_GEN_DIR}/qstringencoder_wrapper.cpp
+${QtCore_GEN_DIR}/qstringlistmodel_wrapper.cpp
+${QtCore_GEN_DIR}/qsysinfo_wrapper.cpp
+${QtCore_GEN_DIR}/qsystemsemaphore_wrapper.cpp
+${QtCore_GEN_DIR}/qt_wrapper.cpp
+${QtCore_GEN_DIR}/qtcorehelper_qgenericargumentholder_wrapper.cpp
+${QtCore_GEN_DIR}/qtcorehelper_qgenericreturnargumentholder_wrapper.cpp
+${QtCore_GEN_DIR}/qtcorehelper_qiopipe_wrapper.cpp
+${QtCore_GEN_DIR}/qtcorehelper_qmutexlocker_wrapper.cpp
+${QtCore_GEN_DIR}/qtemporarydir_wrapper.cpp
+${QtCore_GEN_DIR}/qtemporaryfile_wrapper.cpp
+${QtCore_GEN_DIR}/qtextboundaryfinder_wrapper.cpp
+${QtCore_GEN_DIR}/qtextstream_wrapper.cpp
+${QtCore_GEN_DIR}/qtextstreammanipulator_wrapper.cpp
+${QtCore_GEN_DIR}/qthread_wrapper.cpp
+${QtCore_GEN_DIR}/qthreadpool_wrapper.cpp
+${QtCore_GEN_DIR}/qtime_wrapper.cpp
+${QtCore_GEN_DIR}/qtimeline_wrapper.cpp
+${QtCore_GEN_DIR}/qtimer_wrapper.cpp
+${QtCore_GEN_DIR}/qtimerevent_wrapper.cpp
+${QtCore_GEN_DIR}/qtimezone_offsetdata_wrapper.cpp
+${QtCore_GEN_DIR}/qtimezone_wrapper.cpp
+${QtCore_GEN_DIR}/qtranslator_wrapper.cpp
+${QtCore_GEN_DIR}/qtransposeproxymodel_wrapper.cpp
+${QtCore_GEN_DIR}/qurl_wrapper.cpp
+${QtCore_GEN_DIR}/qurlquery_wrapper.cpp
+${QtCore_GEN_DIR}/quuid_wrapper.cpp
+${QtCore_GEN_DIR}/qvariantanimation_wrapper.cpp
+${QtCore_GEN_DIR}/qversionnumber_wrapper.cpp
+${QtCore_GEN_DIR}/qwaitcondition_wrapper.cpp
+${QtCore_GEN_DIR}/qwritelocker_wrapper.cpp
+${QtCore_GEN_DIR}/qxmlstreamattribute_wrapper.cpp
+${QtCore_GEN_DIR}/qxmlstreamattributes_wrapper.cpp
+${QtCore_GEN_DIR}/qxmlstreamentitydeclaration_wrapper.cpp
+${QtCore_GEN_DIR}/qxmlstreamentityresolver_wrapper.cpp
+${QtCore_GEN_DIR}/qxmlstreamnamespacedeclaration_wrapper.cpp
+${QtCore_GEN_DIR}/qxmlstreamnotationdeclaration_wrapper.cpp
+${QtCore_GEN_DIR}/qxmlstreamreader_wrapper.cpp
+${QtCore_GEN_DIR}/qxmlstreamwriter_wrapper.cpp
+
+${SPECIFIC_OS_FILES}
+# module is always needed
+${QtCore_GEN_DIR}/qtcore_module_wrapper.cpp
+)
+
+get_property(QtCore_disabled_features TARGET Qt${QT_MAJOR_VERSION}::Core
+ PROPERTY QT_DISABLED_PUBLIC_FEATURES)
+
+if("permissions" IN_LIST QtCore_disabled_features)
+ list(APPEND QtCore_DROPPED_ENTRIES QPermission
+ QBluetoothPermission QCalendarPermission QCameraPermission
+ QContactsPermission QLocationPermission QMicrophonePermission)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Core: Dropping Permissions classes")
+else()
+ list(APPEND QtCore_SRC
+ ${QtCore_GEN_DIR}/qbluetoothpermission_wrapper.cpp
+ ${QtCore_GEN_DIR}/qcalendarpermission_wrapper.cpp
+ ${QtCore_GEN_DIR}/qcamerapermission_wrapper.cpp
+ ${QtCore_GEN_DIR}/qcontactspermission_wrapper.cpp
+ ${QtCore_GEN_DIR}/qlocationpermission_wrapper.cpp
+ ${QtCore_GEN_DIR}/qmicrophonepermission_wrapper.cpp
+ ${QtCore_GEN_DIR}/qpermission_wrapper.cpp)
+endif()
+
+if("sharedmemory" IN_LIST QtCore_disabled_features)
+ list(APPEND QtCore_DROPPED_ENTRIES QSharedMemory)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Core: Dropping QSharedMemory")
+else()
+ list(APPEND QtCore_SRC ${QtCore_GEN_DIR}/qsharedmemory_wrapper.cpp)
+endif()
+
+configure_file("${QtCore_SOURCE_DIR}/QtCore_global.post.h.in"
+ "${QtCore_BINARY_DIR}/QtCore_global.post.h" @ONLY)
+
+set(QtCore_glue_sources
+ "${QtCore_SOURCE_DIR}/glue/qeasingcurve_glue.cpp"
+ "${QtCore_SOURCE_DIR}/glue/qeasingcurve_glue.h"
+)
+
+set(QtCore_include_dirs ${QtCore_SOURCE_DIR}
+ ${QtCore_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${pyside6_SOURCE_DIR}
+ ${libpyside_SOURCE_DIR}
+ )
+set(QtCore_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Core_LIBRARIES}
+ Qt::CorePrivate
+ )
+
+create_pyside_module(NAME QtCore
+ INCLUDE_DIRS QtCore_include_dirs
+ LIBRARIES QtCore_libraries
+ TYPESYSTEM_PATH QtCore_SOURCE_DIR
+ SOURCES QtCore_SRC
+ STATIC_SOURCES QtCore_static_sources
+ TYPESYSTEM_NAME ${QtCore_BINARY_DIR}/typesystem_core.xml
+ GLUE_SOURCES QtCore_glue_sources
+ DROPPED_ENTRIES QtCore_DROPPED_ENTRIES
+ )
+
+# Note: The permission API for Apple platforms only works if the Python application is packaged
+# with pyside6-deploy (uses Nuitka). Read "Notes for Developers" in Qt for Python documentation
+# for more information
+#
+# For Apple platforms, the Qt permission API implementations are in small static libraries.
+# In Qt C++, the application is linked directly to these static libraries during the build when
+# linking to the QtCore module as a post processing CMake step.
+# Being static plugins makes it difficult to add these plugins during Nuitka packaging step.
+# Thus, we link the static plugins to QtCore.abi3.so. However, to request the permissions
+# it is still required to have the necessary Information Property keys eg: NSCameraUsageDescription
+# in the Info.plist of the application bundle which Nuitka creates.
+if (APPLE)
+ set(permissions Camera Microphone Bluetooth Contacts Calendar)
+ foreach(permission IN LISTS permissions)
+ set(permission_plugin_name "QDarwin${permission}PermissionPlugin")
+ set(permission_plugin "${QT_CMAKE_EXPORT_NAMESPACE}::${permission_plugin_name}")
+ # Setting this property is necessary for Camera and Microphone. Otherwise it won't append
+ # the linker flags like -Wl,-u,_QDarwinMicrophonePermissionRequest which are required to
+ # link to qdarwinpermissionplugin_microphone_request.mm.o and find symbols like
+ # QDarwinMicrosphonePermissionHandler which handles requesting the actual permission
+ set_target_properties(QtCore PROPERTIES "_qt_has_${permission_plugin_name}_usage_description" TRUE)
+ # importing the plugin
+ qt6_import_plugins(QtCore INCLUDE ${permission_plugin})
+ endforeach()
+endif()
+
+install(FILES ${pyside6_SOURCE_DIR}/qtcorehelper.h ${pyside6_SOURCE_DIR}/qiopipe.h
+ DESTINATION include/PySide6/QtCore/)
diff --git a/sources/pyside6/PySide6/QtCore/QtCore_global.post.h.in b/sources/pyside6/PySide6/QtCore/QtCore_global.post.h.in
new file mode 100644
index 000000000..8383b9ae4
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/QtCore_global.post.h.in
@@ -0,0 +1,2 @@
+#include <qtcorehelper.h>
+#include <qiopipe.h>
diff --git a/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp b/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp
new file mode 100644
index 000000000..f6acf9d60
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/glue/core_snippets.cpp
@@ -0,0 +1,346 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "core_snippets_p.h"
+#include "qtcorehelper.h"
+#include "pysideqobject.h"
+
+#include "shiboken.h"
+#ifndef Py_LIMITED_API
+# include <datetime.h>
+#endif
+#include "basewrapper.h"
+#include "autodecref.h"
+#include "pysideutils.h"
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QDebug>
+#include <QtCore/QMetaType>
+#include <QtCore/QObject>
+#include <QtCore/QRegularExpression>
+#include <QtCore/QStack>
+#include <QtCore/QVariant>
+
+// Helpers for QVariant conversion
+
+QMetaType QVariant_resolveMetaType(PyTypeObject *type)
+{
+ if (!PyObject_TypeCheck(type, SbkObjectType_TypeF()))
+ return {};
+ const char *typeName = Shiboken::ObjectType::getOriginalName(type);
+ if (!typeName)
+ return {};
+ const bool valueType = '*' != typeName[qstrlen(typeName) - 1];
+ // Do not convert user type of value
+ if (valueType && Shiboken::ObjectType::isUserType(type))
+ return {};
+ QMetaType metaType = QMetaType::fromName(typeName);
+ if (metaType.isValid())
+ return metaType;
+ // Do not resolve types to value type
+ if (valueType)
+ return {};
+ // Find in base types. First check tp_bases, and only after check tp_base, because
+ // tp_base does not always point to the first base class, but rather to the first
+ // that has added any python fields or slots to its object layout.
+ // See https://mail.python.org/pipermail/python-list/2009-January/520733.html
+ if (type->tp_bases) {
+ for (Py_ssize_t i = 0, size = PyTuple_GET_SIZE(type->tp_bases); i < size; ++i) {
+ auto baseType = reinterpret_cast<PyTypeObject *>(PyTuple_GET_ITEM(type->tp_bases, i));
+ const QMetaType derived = QVariant_resolveMetaType(baseType);
+ if (derived.isValid())
+ return derived;
+ }
+ } else if (type->tp_base) {
+ return QVariant_resolveMetaType(type->tp_base);
+ }
+ return {};
+}
+
+QVariant QVariant_convertToValueList(PyObject *list)
+{
+ if (PySequence_Size(list) < 0) {
+ // clear the error if < 0 which means no length at all
+ PyErr_Clear();
+ return {};
+ }
+
+ Shiboken::AutoDecRef element(PySequence_GetItem(list, 0));
+
+ auto *type = reinterpret_cast<PyTypeObject *>(element.object());
+ QMetaType metaType = QVariant_resolveMetaType(type);
+ if (!metaType.isValid())
+ return {};
+
+ const QByteArray listTypeName = QByteArrayLiteral("QList<") + metaType.name() + '>';
+ metaType = QMetaType::fromName(listTypeName);
+ if (!metaType.isValid())
+ return {};
+
+ Shiboken::Conversions::SpecificConverter converter(listTypeName);
+ if (!converter) {
+ qWarning("Type converter for: %s not registered.", listTypeName.constData());
+ return {};
+ }
+
+ QVariant var(metaType);
+ converter.toCpp(list, &var);
+ return var;
+}
+
+bool QVariant_isStringList(PyObject *list)
+{
+ if (!PySequence_Check(list)) {
+ // If it is not a list or a derived list class
+ // we assume that will not be a String list neither.
+ return false;
+ }
+
+ if (PySequence_Size(list) < 0) {
+ // clear the error if < 0 which means no length at all
+ PyErr_Clear();
+ return false;
+ }
+
+ Shiboken::AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList"));
+ const Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object());
+ for (Py_ssize_t i = 0; i < size; ++i) {
+ PyObject *item = PySequence_Fast_GET_ITEM(fast.object(), i);
+ if (PyUnicode_Check(item) == 0)
+ return false;
+ }
+ return true;
+}
+
+// Helpers for qAddPostRoutine
+
+namespace PySide {
+
+static QStack<PyObject *> globalPostRoutineFunctions;
+
+void globalPostRoutineCallback()
+{
+ Shiboken::GilState state;
+ for (auto *callback : globalPostRoutineFunctions) {
+ Shiboken::AutoDecRef result(PyObject_CallObject(callback, nullptr));
+ Py_DECREF(callback);
+ }
+ globalPostRoutineFunctions.clear();
+}
+
+void addPostRoutine(PyObject *callback)
+{
+ if (PyCallable_Check(callback)) {
+ globalPostRoutineFunctions << callback;
+ Py_INCREF(callback);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "qAddPostRoutine: The argument must be a callable object.");
+ }
+}
+} // namespace PySide
+
+// Helpers for QObject::findChild(ren)()
+
+static bool _findChildTypeMatch(const QObject *child, PyTypeObject *desiredType)
+{
+ auto *pyChildType = PySide::getTypeForQObject(child);
+ return pyChildType != nullptr && PyType_IsSubtype(pyChildType, desiredType);
+}
+
+static inline bool _findChildrenComparator(const QObject *child,
+ const QRegularExpression &name)
+{
+ return name.match(child->objectName()).hasMatch();
+}
+
+static inline bool _findChildrenComparator(const QObject *child,
+ const QString &name)
+{
+ return name.isNull() || name == child->objectName();
+}
+
+QObject *qObjectFindChild(const QObject *parent, const QString &name,
+ PyTypeObject *desiredType, Qt::FindChildOptions options)
+{
+ for (auto *child : parent->children()) {
+ if (_findChildrenComparator(child, name)
+ && _findChildTypeMatch(child, desiredType)) {
+ return child;
+ }
+ }
+
+ if (options.testFlag(Qt::FindChildrenRecursively)) {
+ for (auto *child : parent->children()) {
+ if (auto *obj = qObjectFindChild(child, name, desiredType, options))
+ return obj;
+ }
+ }
+ return nullptr;
+}
+
+template<typename T> // QString/QRegularExpression
+static void _findChildrenHelper(const QObject *parent, const T& name, PyTypeObject *desiredType,
+ Qt::FindChildOptions options, FindChildHandler handler)
+{
+ for (auto *child : parent->children()) {
+ if (_findChildrenComparator(child, name) && _findChildTypeMatch(child, desiredType))
+ handler(child);
+ if (options.testFlag(Qt::FindChildrenRecursively))
+ _findChildrenHelper(child, name, desiredType, options, handler);
+ }
+}
+
+void qObjectFindChildren(const QObject *parent, const QString &name,
+ PyTypeObject *desiredType, Qt::FindChildOptions options,
+ FindChildHandler handler)
+{
+ _findChildrenHelper(parent, name, desiredType, options, handler);
+}
+
+void qObjectFindChildren(const QObject *parent, const QRegularExpression &pattern,
+ PyTypeObject *desiredType, Qt::FindChildOptions options,
+ FindChildHandler handler)
+{
+ _findChildrenHelper(parent, pattern, desiredType, options, handler);
+}
+
+//////////////////////////////////////////////////////////////////////////////
+// Helpers for translation:
+// PYSIDE-131: Use the class name as context where the calling function is
+// living. Derived Python classes have the wrong context.
+//
+// The original patch uses Python introspection to look up the current
+// function (from the frame stack) in the class __dict__ along the mro.
+//
+// The problem is that looking into the frame stack works for Python
+// functions, only. For including builtin function callers, the following
+// approach turned out to be much simpler:
+//
+// Walk the __mro__
+// - translate the string
+// - if the translated string is changed:
+// - return the translation.
+
+QString qObjectTr(PyTypeObject *type, const char *sourceText, const char *disambiguation, int n)
+{
+ PyObject *mro = type->tp_mro;
+ auto len = PyTuple_GET_SIZE(mro);
+ QString result = QString::fromUtf8(sourceText);
+ QString oldResult = result;
+ static auto *sbkObjectType = reinterpret_cast<PyTypeObject *>(SbkObject_TypeF());
+ for (Py_ssize_t idx = 0; idx < len - 1; ++idx) {
+ // Skip the last class which is `object`.
+ auto *type = reinterpret_cast<PyTypeObject *>(PyTuple_GET_ITEM(mro, idx));
+ if (type == sbkObjectType)
+ continue;
+ const char *context = type->tp_name;
+ const char *dotpos = strrchr(context, '.');
+ if (dotpos != nullptr)
+ context = dotpos + 1;
+ result = QCoreApplication::translate(context, sourceText, disambiguation, n);
+ if (result != oldResult)
+ break;
+ }
+ return result;
+}
+
+bool PyDate_ImportAndCheck(PyObject *pyIn)
+{
+ if (!PyDateTimeAPI)
+ PyDateTime_IMPORT;
+ return PyDate_Check(pyIn);
+}
+
+bool PyDateTime_ImportAndCheck(PyObject *pyIn)
+{
+ if (!PyDateTimeAPI)
+ PyDateTime_IMPORT;
+ return PyDateTime_Check(pyIn);
+}
+
+bool PyTime_ImportAndCheck(PyObject *pyIn)
+{
+ if (!PyDateTimeAPI)
+ PyDateTime_IMPORT;
+ return PyTime_Check(pyIn);
+}
+
+PyObject *invokeMetaMethod(const InvokeMetaMethodFunc &f,
+ const QtCoreHelper::QGenericArgumentHolder &a0,
+ const QtCoreHelper::QGenericArgumentHolder &a1,
+ const QtCoreHelper::QGenericArgumentHolder &a2,
+ const QtCoreHelper::QGenericArgumentHolder &a3,
+ const QtCoreHelper::QGenericArgumentHolder &a4,
+ const QtCoreHelper::QGenericArgumentHolder &a5,
+ const QtCoreHelper::QGenericArgumentHolder &a6,
+ const QtCoreHelper::QGenericArgumentHolder &a7,
+ const QtCoreHelper::QGenericArgumentHolder &a8,
+ const QtCoreHelper::QGenericArgumentHolder &a9)
+{
+ PyThreadState *_save = PyEval_SaveThread(); // Py_BEGIN_ALLOW_THREADS
+ const bool resultB = f(a0.toGenericArgument(), a1.toGenericArgument(), a2.toGenericArgument(),
+ a3.toGenericArgument(), a4.toGenericArgument(), a5.toGenericArgument(),
+ a6.toGenericArgument(), a7.toGenericArgument(), a8.toGenericArgument(),
+ a9.toGenericArgument());
+ PyEval_RestoreThread(_save); // Py_END_ALLOW_THREADS
+ PyObject *result = resultB ? Py_True : Py_False;
+ Py_INCREF(result);
+ return result;
+}
+
+// Convert a QGenericReturnArgument to Python for QMetaObject::invokeMethod
+static PyObject *convertGenericReturnArgument(const void *retData, QMetaType metaType)
+{
+ PyObject *result = nullptr;
+ switch (metaType.id()) {
+ case QMetaType::Bool:
+ result = *reinterpret_cast<const bool *>(retData) ? Py_True : Py_False;
+ Py_INCREF(result);
+ break;
+ case QMetaType::Int:
+ result = PyLong_FromLong(*reinterpret_cast<const int *>(retData));
+ break;
+ case QMetaType::Double:
+ result = PyFloat_FromDouble(*reinterpret_cast<const double *>(retData));
+ break;
+ case QMetaType::QString:
+ result = PySide::qStringToPyUnicode(*reinterpret_cast<const QString *>(retData));
+ break;
+ default: {
+ Shiboken::Conversions::SpecificConverter converter(metaType.name());
+ const auto type = converter.conversionType();
+ if (type == Shiboken::Conversions::SpecificConverter::InvalidConversion) {
+ PyErr_Format(PyExc_RuntimeError, "%s: Unable to find converter for \"%s\".",
+ __FUNCTION__, metaType.name());
+ return nullptr;
+ }
+ result = converter.toPython(retData);
+ }
+ }
+ return result;
+}
+
+PyObject *invokeMetaMethodWithReturn(const InvokeMetaMethodFuncWithReturn &f,
+ const QtCoreHelper::QGenericReturnArgumentHolder &r,
+ const QtCoreHelper::QGenericArgumentHolder &a0,
+ const QtCoreHelper::QGenericArgumentHolder &a1,
+ const QtCoreHelper::QGenericArgumentHolder &a2,
+ const QtCoreHelper::QGenericArgumentHolder &a3,
+ const QtCoreHelper::QGenericArgumentHolder &a4,
+ const QtCoreHelper::QGenericArgumentHolder &a5,
+ const QtCoreHelper::QGenericArgumentHolder &a6,
+ const QtCoreHelper::QGenericArgumentHolder &a7,
+ const QtCoreHelper::QGenericArgumentHolder &a8,
+ const QtCoreHelper::QGenericArgumentHolder &a9)
+{
+ PyThreadState *_save = PyEval_SaveThread(); // Py_BEGIN_ALLOW_THREADS
+ const bool callResult = f(r.toGenericReturnArgument(),
+ a0.toGenericArgument(), a1.toGenericArgument(), a2.toGenericArgument(),
+ a3.toGenericArgument(), a4.toGenericArgument(), a5.toGenericArgument(),
+ a6.toGenericArgument(), a7.toGenericArgument(), a8.toGenericArgument(),
+ a9.toGenericArgument());
+ PyEval_RestoreThread(_save); // Py_END_ALLOW_THREADS
+ if (!callResult)
+ return PyErr_Format(PyExc_RuntimeError, "QMetaMethod invocation failed.");
+ return convertGenericReturnArgument(r.data(), r.metaType());
+}
diff --git a/sources/pyside6/PySide6/QtCore/glue/core_snippets_p.h b/sources/pyside6/PySide6/QtCore/glue/core_snippets_p.h
new file mode 100644
index 000000000..11e84b291
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/glue/core_snippets_p.h
@@ -0,0 +1,105 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef CORE_SNIPPETS_P_H
+#define CORE_SNIPPETS_P_H
+
+#include "pysidemacros.h"
+
+#include <sbkpython.h>
+
+#include <QtCore/qnamespace.h>
+
+#include <functional>
+
+QT_FORWARD_DECLARE_CLASS(QGenericArgument)
+QT_FORWARD_DECLARE_CLASS(QGenericReturnArgument)
+QT_FORWARD_DECLARE_CLASS(QMetaType)
+QT_FORWARD_DECLARE_CLASS(QObject)
+QT_FORWARD_DECLARE_CLASS(QRegularExpression)
+QT_FORWARD_DECLARE_CLASS(QVariant);
+
+QT_BEGIN_NAMESPACE
+namespace QtCoreHelper {
+class QGenericArgumentHolder;
+class QGenericReturnArgumentHolder;
+}
+QT_END_NAMESPACE
+
+// Helpers for QVariant conversion
+
+QMetaType QVariant_resolveMetaType(PyTypeObject *type);
+
+QVariant QVariant_convertToValueList(PyObject *list);
+
+bool QVariant_isStringList(PyObject *list);
+
+// Helpers for qAddPostRoutine
+namespace PySide {
+void globalPostRoutineCallback();
+void addPostRoutine(PyObject *callback);
+}
+
+// Helpers for QObject::findChild(ren)()
+QObject *qObjectFindChild(const QObject *parent, const QString &name,
+ PyTypeObject *desiredType, Qt::FindChildOptions options);
+
+using FindChildHandler = std::function<void(QObject *)>;
+
+void qObjectFindChildren(const QObject *parent, const QString &name,
+ PyTypeObject *desiredType, Qt::FindChildOptions options,
+ FindChildHandler handler);
+
+void qObjectFindChildren(const QObject *parent, const QRegularExpression &pattern,
+ PyTypeObject *desiredType, Qt::FindChildOptions options,
+ FindChildHandler handler);
+
+// Helpers for translation
+QString qObjectTr(PyTypeObject *type, const char *sourceText, const char *disambiguation, int n);
+
+bool PyDate_ImportAndCheck(PyObject *pyIn);
+bool PyDateTime_ImportAndCheck(PyObject *pyIn);
+bool PyTime_ImportAndCheck(PyObject *pyIn);
+
+// Helpers for QMetaObject::invokeMethod(), QMetaMethod::invoke(). The std::function
+// serves to abstract from QMetaObject/QMetaMethod invocation parameters.
+using InvokeMetaMethodFunc =
+ std::function<bool(QGenericArgument,QGenericArgument,QGenericArgument,QGenericArgument,
+ QGenericArgument,QGenericArgument,QGenericArgument,QGenericArgument,
+ QGenericArgument,QGenericArgument)>;
+
+using InvokeMetaMethodFuncWithReturn =
+ std::function<bool(QGenericReturnArgument,
+ QGenericArgument,QGenericArgument,QGenericArgument,QGenericArgument,
+ QGenericArgument,QGenericArgument,QGenericArgument,QGenericArgument,
+ QGenericArgument,QGenericArgument)>;
+
+// Call a void meta method from Python passing the argument holder helpers.
+PyObject *invokeMetaMethod(const InvokeMetaMethodFunc &f,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &);
+
+// Call a meta method with a return value from Python passing the argument holder
+// helpers.
+PyObject *invokeMetaMethodWithReturn(const InvokeMetaMethodFuncWithReturn &f,
+ const QtCoreHelper::QGenericReturnArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &,
+ const QtCoreHelper::QGenericArgumentHolder &);
+
+#endif // CORE_SNIPPETS_P_H
diff --git a/sources/pyside6/PySide6/QtCore/glue/qeasingcurve_glue.cpp b/sources/pyside6/PySide6/QtCore/glue/qeasingcurve_glue.cpp
new file mode 100644
index 000000000..e154b932a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/glue/qeasingcurve_glue.cpp
@@ -0,0 +1,123 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <sbkpython.h>
+#include <shiboken.h>
+#include <pysideweakref.h>
+
+#include <QtCore/QEasingCurve>
+
+#include "glue/qeasingcurve_glue.h"
+
+#define MAX_CUSTOM_FUNCTIONS 10
+
+static void deleteData(void *data);
+
+struct CustomFunctionsData
+{
+ static CustomFunctionsData m_list[MAX_CUSTOM_FUNCTIONS];
+
+ PySideEasingCurveFunctor *m_obj;
+ QEasingCurve::EasingFunction m_func;
+};
+
+CustomFunctionsData CustomFunctionsData::m_list[MAX_CUSTOM_FUNCTIONS];
+
+template<int N>
+struct CustomFunctions
+{
+ static void init()
+ {
+ CustomFunctionsData data;
+ data.m_obj = 0;
+ data.m_func = &CustomFunctions<N>::callback;
+ CustomFunctionsData::m_list[N] = data;
+
+ CustomFunctions<N-1>::init();
+ }
+
+ static qreal callback(qreal v)
+ {
+ return (*CustomFunctionsData::m_list[N].m_obj)(v);
+ }
+};
+
+template<>
+struct CustomFunctions<0>
+{
+ static void init()
+ {
+ CustomFunctionsData data;
+ data.m_obj = 0;
+ data.m_func = &CustomFunctions<0>::callback;
+ CustomFunctionsData::m_list[0] = data;
+ }
+
+ static qreal callback(qreal v)
+ {
+ return (*CustomFunctionsData::m_list[0].m_obj)(v);
+ }
+};
+
+void deleteData(void *data)
+{
+ delete (PySideEasingCurveFunctor *)(data);
+}
+
+void PySideEasingCurveFunctor::init()
+{
+ CustomFunctions<MAX_CUSTOM_FUNCTIONS-1>::init();
+}
+
+QEasingCurve::EasingFunction PySideEasingCurveFunctor::createCustomFuntion(PyObject *parent, PyObject *pyFunc)
+{
+ for(int i=0; i < MAX_CUSTOM_FUNCTIONS; i++) {
+ CustomFunctionsData &data = CustomFunctionsData::m_list[i];
+ if (data.m_obj == 0) {
+ data.m_obj = new PySideEasingCurveFunctor(i, parent, pyFunc);
+ return data.m_func;
+ }
+ }
+ //PyErr_Format(PyExc_RuntimeError, "PySide only supports %d custom functions simultaneously.", MAX_CUSTOM_FUNCTIONS);
+ return 0;
+}
+
+PySideEasingCurveFunctor::~PySideEasingCurveFunctor()
+{
+
+ CustomFunctionsData::m_list[m_index].m_obj = 0;
+ PyObject_SetAttr(m_parent, Shiboken::PyMagicName::ecf(), Py_None);
+}
+
+qreal PySideEasingCurveFunctor::operator()(qreal progress)
+{
+ Shiboken::GilState state;
+ PyObject *args = Py_BuildValue("(f)", progress);
+ PyObject *result = PyObject_CallObject(m_func, args);
+ qreal cppResult = 0.0;
+ if (result) {
+ Shiboken::Conversions::pythonToCppCopy(Shiboken::Conversions::PrimitiveTypeConverter<qreal>(), result, &cppResult);
+ Py_DECREF(result);
+ }
+ Py_DECREF(args);
+ return cppResult;
+}
+
+PyObject *PySideEasingCurveFunctor::callable()
+{
+ Py_INCREF(m_func);
+ return m_func;
+}
+
+PyObject *PySideEasingCurveFunctor::callable(PyObject *parent)
+{
+ return PyObject_GetAttr(parent, Shiboken::PyMagicName::ecf());
+}
+
+PySideEasingCurveFunctor::PySideEasingCurveFunctor(int index, PyObject *parent, PyObject *pyFunc)
+ : m_parent(parent), m_func(pyFunc), m_index(index)
+{
+ PyObject_SetAttr(m_parent, Shiboken::PyMagicName::ecf(), m_func);
+ PySide::WeakRef::create(m_parent, deleteData, this);
+}
+
diff --git a/sources/pyside6/PySide6/QtCore/glue/qeasingcurve_glue.h b/sources/pyside6/PySide6/QtCore/glue/qeasingcurve_glue.h
new file mode 100644
index 000000000..78adaae2e
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/glue/qeasingcurve_glue.h
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef __QEASINGCURVE_GLUE__
+#define __QEASINGCURVE_GLUE__
+
+#include <sbkpython.h>
+#include <QtCore/QEasingCurve>
+
+class PySideEasingCurveFunctor
+{
+ public:
+ static void init();
+ static QEasingCurve::EasingFunction createCustomFuntion(PyObject *parent, PyObject *pyFunc);
+
+ qreal operator()(qreal progress);
+
+ PyObject *callable(); //Return New reference
+ static PyObject *callable(PyObject *parent); //Return New reference
+
+ ~PySideEasingCurveFunctor();
+ private:
+ PyObject *m_parent;
+ PyObject *m_func;
+ int m_index;
+
+ PySideEasingCurveFunctor(int index, PyObject *parent, PyObject *pyFunc);
+};
+
+#endif
diff --git a/sources/pyside6/PySide6/QtCore/glue/qiopipe.cpp b/sources/pyside6/PySide6/QtCore/glue/qiopipe.cpp
new file mode 100644
index 000000000..6799c0f32
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/glue/qiopipe.cpp
@@ -0,0 +1,142 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qiopipe.h"
+
+#include <QtCore/private/qobject_p.h>
+#include <QtCore/qdebug.h>
+#include <QtCore/qiodevice.h>
+#include <QtCore/qpointer.h>
+
+#include <memory>
+
+QT_BEGIN_NAMESPACE
+
+namespace QtCoreHelper
+{
+
+class QPipeEndPoint : public QIODevice
+{
+ Q_OBJECT
+
+public:
+ bool isSequential() const override;
+ qint64 bytesAvailable() const override;
+
+ void setRemoteEndPoint(QPipeEndPoint *other);
+
+protected:
+ qint64 readData(char *data, qint64 maxlen) override;
+ qint64 writeData(const char *data, qint64 len) override;
+
+private:
+ QByteArray m_buffer;
+ QPointer<QPipeEndPoint> m_remoteEndPoint;
+};
+
+class QIOPipePrivate final : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QIOPipe)
+public:
+ QIOPipePrivate();
+ ~QIOPipePrivate() {};
+
+ std::unique_ptr<QPipeEndPoint> end1;
+ std::unique_ptr<QPipeEndPoint> end2;
+};
+
+QIOPipe::QIOPipe(QObject *parent) : QObject(*(new QIOPipePrivate()), parent) { }
+
+bool QIOPipe::open(QIODevice::OpenMode mode)
+{
+ Q_D(QIOPipe);
+
+ if (!d->end1->open(mode))
+ return false;
+ switch (mode & QIODevice::ReadWrite) {
+ case QIODevice::WriteOnly:
+ case QIODevice::ReadOnly:
+ return d->end2->open(mode ^ QIODevice::ReadWrite);
+ default:
+ return d->end2->open(mode);
+ }
+}
+
+QIODevice *QIOPipe::end1() const
+{
+ Q_D(const QIOPipe);
+ return d->end1.get();
+}
+
+QIODevice *QIOPipe::end2() const
+{
+ Q_D(const QIOPipe);
+ return d->end2.get();
+}
+
+QIOPipePrivate::QIOPipePrivate() : end1(std::make_unique<QPipeEndPoint>()),
+ end2(std::make_unique<QPipeEndPoint>())
+{
+ end1->setRemoteEndPoint(end2.get());
+ end2->setRemoteEndPoint(end1.get());
+}
+
+bool QPipeEndPoint::isSequential() const
+{
+ return true;
+}
+
+qint64 QPipeEndPoint::bytesAvailable() const
+{
+ return m_buffer.size() + QIODevice::bytesAvailable();
+}
+
+void QPipeEndPoint::setRemoteEndPoint(QPipeEndPoint *other)
+{
+ m_remoteEndPoint = other;
+}
+
+qint64 QPipeEndPoint::readData(char *data, qint64 maxlen)
+{
+ maxlen = qMin(maxlen, static_cast<qint64>(m_buffer.size()));
+ if (maxlen <= 0)
+ return 0;
+
+ Q_ASSERT(maxlen > 0);
+ memcpy(data, m_buffer.data(), static_cast<size_t>(maxlen));
+ m_buffer = m_buffer.mid(maxlen);
+ return maxlen;
+}
+
+qint64 QPipeEndPoint::writeData(const char *data, qint64 len)
+{
+ if (!m_remoteEndPoint)
+ return -1;
+
+ if (len <= 0)
+ return 0;
+
+ QByteArray &buffer = m_remoteEndPoint->m_buffer;
+ const qint64 prevLen = buffer.size();
+ Q_ASSERT(prevLen >= 0);
+ len = qMin(len, std::numeric_limits<int>::max() - prevLen);
+
+ if (len == 0)
+ return 0;
+
+ Q_ASSERT(len > 0);
+ Q_ASSERT(prevLen + len > 0);
+ Q_ASSERT(prevLen + len <= std::numeric_limits<int>::max());
+
+ buffer.resize(prevLen + len);
+ memcpy(buffer.data() + prevLen, data, static_cast<size_t>(len));
+ Q_EMIT bytesWritten(len);
+ Q_EMIT m_remoteEndPoint->readyRead();
+ return len;
+}
+
+} // namespace QtCoreHelper
+
+QT_END_NAMESPACE
+
+#include "qiopipe.moc"
diff --git a/sources/pyside6/PySide6/QtCore/glue/qtcorehelper.cpp b/sources/pyside6/PySide6/QtCore/glue/qtcorehelper.cpp
new file mode 100644
index 000000000..948c0ce5c
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/glue/qtcorehelper.cpp
@@ -0,0 +1,108 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <qtcorehelper.h>
+
+#include <QtCore/qdebug.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace QtCoreHelper {
+
+// Data classes for the generic argument data classes. The argument is freed
+// via QMetaType
+class QGenericArgumentData
+{
+public:
+ explicit QGenericArgumentData(const QMetaType &type, const void *aData) :
+ m_type(type), m_argument(m_type.name(), aData)
+ {
+ }
+
+ ~QGenericArgumentData()
+ {
+ if (m_type.isValid())
+ m_type.destroy(m_argument.data());
+ }
+
+ const QMetaType m_type;
+ const QGenericArgument m_argument;
+};
+
+class QGenericReturnArgumentData
+{
+public:
+ explicit QGenericReturnArgumentData(const QMetaType &type, void *aData) :
+ m_type(type), m_argument(m_type.name(), aData)
+ {
+ }
+
+ ~QGenericReturnArgumentData()
+ {
+ if (m_type.isValid())
+ m_type.destroy(m_argument.data());
+ }
+
+ const QMetaType m_type;
+ const QGenericReturnArgument m_argument;
+};
+
+QGenericArgumentHolder::QGenericArgumentHolder()
+{
+}
+
+QGenericArgumentHolder::QGenericArgumentHolder(const QMetaType &type, const void *aData) :
+ d(std::make_shared<QGenericArgumentData>(type, aData))
+{
+}
+
+QGenericArgumentHolder::QGenericArgumentHolder(const QGenericArgumentHolder &) = default;
+QGenericArgumentHolder::QGenericArgumentHolder(QGenericArgumentHolder &&) = default;
+QGenericArgumentHolder &QGenericArgumentHolder::operator=(const QGenericArgumentHolder &) = default;
+QGenericArgumentHolder &QGenericArgumentHolder::operator=(QGenericArgumentHolder &&) = default;
+QGenericArgumentHolder::~QGenericArgumentHolder() = default;
+
+QGenericArgument QGenericArgumentHolder::toGenericArgument() const
+{
+ return d ? d->m_argument : QGenericArgument{};
+}
+
+QMetaType QGenericArgumentHolder::metaType() const
+{
+ return d ? d->m_type : QMetaType{};
+}
+
+const void *QGenericArgumentHolder::data() const
+{
+ return d ? d->m_argument.data() : nullptr;
+}
+
+QGenericReturnArgumentHolder::QGenericReturnArgumentHolder(const QMetaType &type, void *aData) :
+ d(std::make_shared<QGenericReturnArgumentData>(type, aData))
+{
+}
+
+QGenericReturnArgumentHolder::QGenericReturnArgumentHolder(const QGenericReturnArgumentHolder &) = default;
+QGenericReturnArgumentHolder::QGenericReturnArgumentHolder(QGenericReturnArgumentHolder &&) = default;
+QGenericReturnArgumentHolder &QGenericReturnArgumentHolder::operator=(const QGenericReturnArgumentHolder &) = default;
+QGenericReturnArgumentHolder &QGenericReturnArgumentHolder::operator=(QGenericReturnArgumentHolder &&) = default;
+QGenericReturnArgumentHolder::~QGenericReturnArgumentHolder() = default;
+
+QGenericReturnArgument QGenericReturnArgumentHolder::toGenericReturnArgument() const
+{
+ return d->m_argument;
+}
+
+QMetaType QGenericReturnArgumentHolder::metaType() const
+{
+ return d->m_type;
+}
+
+const void *QGenericReturnArgumentHolder::data() const
+{
+ return d->m_argument.data();
+}
+
+} // namespace QtCoreHelper
+
+QT_END_NAMESPACE
diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core.xml b/sources/pyside6/PySide6/QtCore/typesystem_core.xml
new file mode 100644
index 000000000..885b53874
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/typesystem_core.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtCore"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <?if windows?>
+ <load-typesystem name="QtCore/typesystem_core_win.xml" generate="yes"/>
+ <?endif?>
+ <load-typesystem name="QtCore/typesystem_core_common.xml" generate="yes"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml
new file mode 100644
index 000000000..110f86f25
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/typesystem_core_common.xml
@@ -0,0 +1,3630 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtCore">
+ <load-typesystem name="templates/common.xml" generate="no"/>
+ <load-typesystem name="templates/core_common.xml" generate="no"/>
+
+ <custom-type name="list of QAbstractAnimation"/>
+ <custom-type name="PySideSignalInstance"
+ check-function="PySide::Signal::checkInstanceType"/>
+<!--
+ <function signature="qChecksum(QByteArrayView data, Qt::ChecksumType)"/>
+-->
+ <extra-includes>
+ <include file-name="pysidemetatype.h" location="global"/>
+ <include file-name="pysideutils.h" location="global"/> <!-- QString conversion -->
+ <include file-name="signalmanager.h" location="global"/>
+ <!-- QtCoreHelper::QGenericReturnArgumentHolder -->
+ <include file-name="qtcorehelper.h" location="local"/>
+ </extra-includes>
+
+ <function signature="qFastCos(qreal)" since="4.6"/>
+ <function signature="qFastSin(qreal)" since="4.6"/>
+ <function signature="qFuzzyCompare(double,double)"/>
+ <function signature="qFuzzyIsNull(double)" since="4.6"/>
+ <function signature="qIsFinite(double)"/>
+ <function signature="qIsInf(double)"/>
+ <function signature="qIsNaN(double)"/>
+ <function signature="qIsNull(double)"/>
+ <!-- Qt5: gone <function signature="qRound(qreal)"/> -->
+ <function signature="qtTrId(const char*,int)" since="4.6"/>
+ <function signature="qVersion()">
+ <modify-function>
+ <modify-argument index="return" pyi-type="str"/>
+ </modify-function>
+ </function>
+ <!-- Move PyBuffer overload to front to avoid conversion PyBuffer->QByteArray -->
+ <function signature="qCompress(const uchar*,qsizetype,int)" overload-number="0">
+ <modify-function>
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="qcompress-buffer"/>
+ </modify-function>
+ </function>
+ <function signature="qCompress(const QByteArray&amp;,int)" overload-number="1"/>
+ <!-- Move PyBuffer overload to front to avoid conversion PyBuffer->QByteArray -->
+ <function signature="qUncompress(const uchar*,qsizetype)" overload-number="0">
+ <modify-function>
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="quncompress-buffer"/>
+ </modify-function>
+ </function>
+ <function signature="qUncompress(const QByteArray&amp;)" overload-number="1"/>
+ <function signature="qFormatLogMessage(QtMsgType,const QMessageLogContext&amp;,const QString&amp;)"
+ doc-file="qtlogging"/>
+ <function signature="qSetMessagePattern(const QString&amp;)" doc-file="qtlogging"/>
+
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="include-pyside"/>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qarg_helper"/>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="darwin_permission_plugin"/>
+
+ <add-function signature="qDebug(const char*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="use-stream-for-format-security"/>
+ <modify-argument index="1" pyi-type="str"/>
+ </add-function>
+ <add-function signature="qCritical(const char*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="use-stream-for-format-security"/>
+ <modify-argument index="1" pyi-type="str"/>
+ </add-function>
+ <add-function signature="qFatal(const char*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qfatal"/>
+ <modify-argument index="1" pyi-type="str"/>
+ </add-function>
+ <add-function signature="qWarning(const char*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="use-stream-for-format-security"/>
+ <modify-argument index="1" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="Q_ARG(PyObject *@type@, PyObject *@value@)"
+ return-type="QtCoreHelper::QGenericArgumentHolder">
+ <inject-code file="../glue/qtcore.cpp" snippet="q_arg"/>
+ <inject-documentation format="target" mode="append">
+ This function takes a type (or a type string) and a value of that type
+ and returns an internal object that can be passed to
+ QMetaObject.invokeMethod(). See also Q_RETURN_ARG().
+ </inject-documentation>
+ </add-function>
+ <add-function signature="Q_RETURN_ARG(PyObject *@type@)"
+ return-type="QtCoreHelper::QGenericReturnArgumentHolder">
+ <inject-code file="../glue/qtcore.cpp" snippet="q_return_arg"/>
+ <inject-documentation format="target" mode="append">
+ This macro takes a type (or a type string) a value of which is then
+ returned by QMetaObject::invokeMethod(). See also Q_ARG().
+ </inject-documentation>
+ </add-function>
+
+ <!-- TODO: We do not support void* or const void* as arg -->
+ <rejection class="QMetaObject" function-name="activate"/>
+ <rejection class="QMetaObject" function-name="metacall"/>
+ <rejection class="QMetaObject" function-name="static_metacall"/>
+
+ <rejection class="QAlgorithmsPrivate"/>
+ <rejection class="QJsonPrivate"/>
+ <rejection class="QtGlobalStatic"/>
+ <rejection class="QtMetaTypePrivate"/>
+ <rejection class="QtPrivate"/>
+ <rejection class="QtSharedPointer"/>
+ <rejection class="QtStringBuilder"/>
+
+ <rejection class="q20"/>
+ <rejection class="q23"/>
+ <rejection class="q_has_char8_t"/>
+ <rejection class="QContainerInfo"/>
+ <rejection class="QHashPrivate"/>
+ <rejection class="q_no_char8_t"/>
+ <rejection class="Qt::Literals"/>
+ <rejection class="QtLiterals"/>
+ <rejection class="QtMetaContainerPrivate"/>
+ <rejection class="QtTsan"/>
+ <rejection class="QTypeTraits"/>
+ <rejection class="qxp"/>
+
+ <rejection class="QChildEvent" field-name="c"/>
+ <rejection class="QTimerEvent" field-name="id"/>
+ <rejection class="QEvent" field-name="t"/>
+ <rejection class="*" function-name="tr"/>
+ <!-- From Qt4.6 -->
+ <rejection class="*" field-name="d_ptr"/>
+ <rejection class="QMetaMethod" enum-name="Attributes"/>
+ <rejection class="QMetaMethod" field-name="data"/>
+ <!-- Note: Default parameter values of Disambiguated_t as defined by
+ QT6_DECL_NEW_OVERLOAD_TAIL are not seen by the clang parser since it
+ is relying on code snippets for the values. -->
+ <rejection class="Qt" field-name="Disambiguated"/>
+ <rejection class="" enum-name="QCborNegativeInteger"/>
+
+ <rejection class="*" argument-type="^qfloat16&amp;?$"/>
+ <rejection class="*" argument-type="QTSMFI"/>
+ <rejection class="*" argument-type="QTSMFC"/>
+ <rejection class="*" argument-type="QtPrivate::QSlotObjectBase*"/>
+ <rejection class="*" argument-type="^Q\w+Private( const)?\&amp;$"/>
+ <!-- Note: "QHelpModel(QHelpEnginePrivate*)" is needed -->
+ <rejection class="*" argument-type="^Q[^H]\w+Private( const)?\*$"/>
+ <rejection class="*" argument-type="Qt::Initialization"/>
+
+ <rejection class="*" argument-type="FILE*"/>
+ <rejection class="*" argument-type="std::chrono::milliseconds"/>
+ <rejection class="*" argument-type="^std::nullptr_t&amp;?$"/>
+ <rejection class="*" argument-type="^std::initializer_list&lt;.*$"/>
+
+ <!-- From Qt4.6 ^^^ -->
+
+ <enum-type name="QtMsgType" doc-file="qtlogging"/>
+ <enum-type name="QCborSimpleType" doc-file="qtcborcommon"/>
+ <enum-type name="QCborKnownTags" doc-file="qtcborcommon"/>
+ <enum-type name="QCborTag" doc-file="qtcborcommon"/>
+
+ <primitive-type name="qint8"/>
+ <primitive-type name="qint16"/>
+ <primitive-type name="qint32"/>
+ <primitive-type name="quint8"/>
+ <primitive-type name="quint16"/>
+ <primitive-type name="quint32"/>
+ <primitive-type name="quint64"/>
+ <primitive-type name="qreal"/>
+ <primitive-type name="qint64"/>
+ <primitive-type name="qlonglong" target-lang-api-name="PyLong"/>
+ <primitive-type name="qulonglong" target-lang-api-name="PyLong"/>
+ <primitive-type name="qsizetype" target-lang-api-name="PyLong"/>
+ <primitive-type name="size_t" target-lang-api-name="PyLong"/>
+ <primitive-type name="ushort" target-lang-api-name="PyLong"/>
+ <primitive-type name="uchar"/>
+ <primitive-type name="uint"/>
+ <primitive-type name="ulong"/>
+ <primitive-type name="int8_t"/>
+ <primitive-type name="uint8_t"/>
+ <primitive-type name="int16_t"/>
+ <primitive-type name="uint16_t"/>
+ <primitive-type name="int32_t"/>
+ <primitive-type name="uint32_t"/>
+ <primitive-type name="int64_t"/>
+ <primitive-type name="uint64_t"/>
+ <primitive-type name="intptr_t"/>
+ <primitive-type name="uintptr_t"/>
+
+ <?if windows darwin?>
+ <primitive-type name="Qt::HANDLE" target-lang-api-name="PyObject"/>
+ <?endif?>
+ <?if linux?>
+ <primitive-type name="Qt::HANDLE" target-lang-api-name="PyLong"/>
+ <?endif?>
+
+ <!-- Qt5: add the new pointer-ish types -->
+ <primitive-type name="qintptr" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pylong"/>
+ <target-to-native>
+ <add-conversion type="PyLong">
+ <insert-template name="shiboken_conversion_pylong_to_cpp"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <primitive-type name="quintptr" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pylong-quintptr"/>
+ <target-to-native>
+ <add-conversion type="PyLong" file="../glue/qtcore.cpp" snippet="conversion-pylong-quintptr"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <primitive-type name="qptrdiff" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pylong"/>
+ <target-to-native>
+ <add-conversion type="PyLong">
+ <insert-template name="shiboken_conversion_pylong_to_cpp"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <primitive-type name="QFunctionPointer" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-qfunctionpointer-pylong"/>
+ <target-to-native>
+ <add-conversion type="PyLong" file="../glue/qtcore.cpp" snippet="conversion-pylong-qfunctionpointer"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <primitive-type name="QString" target-lang-api-name="PyUnicode">
+ <include file-name="QString" location="global"/>
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pyunicode"/>
+ <target-to-native>
+ <add-conversion type="PyUnicode" file="../glue/qtcore.cpp" snippet="conversion-pyunicode"/>
+ <add-conversion type="Py_None" file="../glue/qtcore.cpp" snippet="conversion-pynone"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+
+ <primitive-type name="QStringView" target-lang-api-name="PyUnicode" view-on="QString">
+ <include file-name="QStringView" location="global"/>
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pyunicode"/>
+ </conversion-rule>
+ </primitive-type>
+
+ <primitive-type name="QLatin1String" target-lang-api-name="PyUnicode">
+ <include file-name="QtCore/qlatin1stringview.h" location="global"/>
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pyunicode-from-qlatin1string"/>
+ <target-to-native>
+ <add-conversion type="PyString" check="qLatin1StringCheck(%in)"
+ file="../glue/qtcore.cpp" snippet="conversion-pystring-qlatin1string"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+
+ <primitive-type name="QAnyStringView" target-lang-api-name="PyUnicode" view-on="QString">
+ <include file-name="QAnyStringView" location="global"/>
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pyunicode-from-qanystringview"/>
+ </conversion-rule>
+ </primitive-type>
+
+ <primitive-type name="QChar">
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pyunicode-qchar"/>
+ <target-to-native>
+ <add-conversion type="PyString" check="Shiboken::String::checkChar(%in)" file="../glue/qtcore.cpp" snippet="conversion-pystring-char"/>
+ <add-conversion type="PyLong" file="../glue/qtcore.cpp" snippet="conversion-pyint"/>
+ <add-conversion type="Py_None" file="../glue/qtcore.cpp" snippet="conversion-pynone"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+
+ <primitive-type name="QVariant" target-lang-api-name="PyObject">
+ <extra-includes>
+ <include file-name="optional" location="global"/>
+ </extra-includes>
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-qvariant"/>
+ <target-to-native>
+ <add-conversion type="PyBool" file="../glue/qtcore.cpp" snippet="conversion-pybool"/>
+ <add-conversion type="Py_None" file="../glue/qtcore.cpp" snippet="conversion-pynone"/>
+ <add-conversion type="QString" check="Shiboken::String::check(%in)" file="../glue/qtcore.cpp" snippet="conversion-qstring"/>
+ <add-conversion type="QByteArray" file="../glue/qtcore.cpp" snippet="conversion-qbytearray"/>
+ <add-conversion type="PyFloat" check="PyFloat_CheckExact(%in)" file="../glue/qtcore.cpp" snippet="conversion-pyfloat"/>
+ <add-conversion type="PyLong" check="PyLong_CheckExact(%in)" file="../glue/qtcore.cpp" snippet="conversion-qlonglong"/>
+ <add-conversion type="SbkObject" file="../glue/qtcore.cpp" snippet="conversion-sbkobject"/>
+ <add-conversion type="PyDict" check="PyDict_CheckExact(%in)" file="../glue/qtcore.cpp" snippet="conversion-pydict"/>
+ <add-conversion type="PyList" check="PyList_Check(%in)" file="../glue/qtcore.cpp" snippet="conversion-pylist"/>
+ <add-conversion type="PyObject" file="../glue/qtcore.cpp" snippet="conversion-pyobject"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="qvariant-conversion"/>
+ <primitive-type name="QStringList">
+ <include file-name="QStringList" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_cppsequence_to_pylist">
+ <replace from="%INTYPE_0" to="QString"/>
+ </insert-template>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PySequence">
+ <insert-template name="shiboken_conversion_pyiterable_to_cppsequentialcontainer_reserve">
+ <replace from="%OUTTYPE_0" to="QString"/>
+ </insert-template>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+
+ <value-type name="QCborError">
+ <enum-type name="Code"/>
+ <include file-name="qcborcommon.h" location="global"/>
+ </value-type>
+
+ <value-type name="QCborParserError">
+ <include file-name="qcborvalue.h" location="global"/>
+ </value-type>
+
+ <value-type name="QCborValue">
+ <enum-type name="EncodingOption" flags="EncodingOptions"/>
+ <enum-type name="DiagnosticNotationOption" flags="DiagnosticNotationOptions"/>
+ <enum-type name="Type"/>
+ </value-type>
+ <value-type name="QCborArray"/>
+ <value-type name="QCborMap"/>
+
+ <object-type name="QCborStreamReader">
+ <enum-type name="StringResultCode"/>
+ <enum-type name="Type"/>
+ <include file-name="qcborstream.h" location="global"/>
+ <value-type name="StringResult" generate="no"/>
+ <!-- 64bit (qsizetype = long long) -->
+ <modify-function signature="readStringChunk(char*,qsizetype)" remove="all"/>
+ <!-- 32bit (qsizetype = int) -->
+ <modify-function signature="readStringChunk(char*,int)" remove="all"/>
+ </object-type>
+ <typedef-type name="QCborStringResultString" source="QCborStreamReader::StringResult&lt;QString&gt;"/>
+ <typedef-type name="QCborStringResultByteArray" source="QCborStreamReader::StringResult&lt;QByteArray&gt;"/>
+ <object-type name="QCborStreamWriter">
+ <include file-name="qcborstream.h" location="global"/>
+ </object-type>
+
+ <primitive-type name="QJsonObject">
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-qjsonobject"/>
+ <target-to-native>
+ <add-conversion type="PyDict" file="../glue/qtcore.cpp" snippet="conversion-qjsonobject-pydict"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+
+ <value-type name="QKeyCombination">
+ <!-- The following do-nothing function is needed for coercion of constructs like
+ QKeyCombination(Qt.CTRL | Qt.Key_B)
+ -->
+ <add-function signature="QKeyCombination(QKeyCombination)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="keycombination-from-keycombination"/>
+ </add-function>
+ <!-- This is just a copy of KeyModifier to handle Modifier the same -->
+ <add-function signature="QKeyCombination(Qt::Modifier @modifiers@, Qt::Key @key@)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="keycombination-from-modifier"/>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMetaType">
+ <extra-includes>
+ <include file-name="pysidemetatype.h" location="global"/>
+ </extra-includes>
+ <enum-type name="Type" python-type="IntEnum"/>
+ <enum-type name="TypeFlag" flags="TypeFlags"/>
+ <add-function signature="QMetaType(PyTypeObject*)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="metatype-from-type"/>
+ </add-function>
+ <!-- PYSIDE-1735: The class QMetaType.Type must be allowed because int is gone -->
+ <add-function signature="QMetaType(QMetaType::Type)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="metatype-from-metatype-type"/>
+ </add-function>
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="conversion-qmetatype-pytypeobject"/>
+ <target-to-native>
+ <add-conversion type="PyTypeObject" file="../glue/qtcore.cpp" snippet="conversion-pytypeobject-qmetatype"/>
+ </target-to-native>
+ </conversion-rule>
+ </value-type>
+
+ <value-type name="QNativeIpcKey" since="6.6">
+ <enum-type name="Type"/>
+ </value-type>
+
+ <container-type name="QSet" type="set">
+ <include file-name="QSet" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_cppsequence_to_pyset"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PySequence">
+ <insert-template name="shiboken_conversion_pyiterable_to_cppsetcontainer"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+
+ <!-- FIXME: Which one is it going to be? -->
+ <container-type name="QList" type="list"
+ opaque-containers="int:QIntList;QPoint:QPointList;QPointF:QPointFList">
+ <include file-name="QList" location="global"/>
+ <declare-function signature="append(T)" return-type="void"/>
+ <declare-function signature="insert(qsizetype,T)" return-type="void"/>
+ <declare-function signature="prepend(T)" return-type="void"/>
+ <declare-function signature="push_back(T)" return-type="void"/>
+ <declare-function signature="push_front(T)" return-type="void"/>
+ <declare-function signature="removeAll(T)" return-type="void"/>
+ <declare-function signature="removeOne(T)" return-type="void"/>
+ <!-- operator << needs to be declared in inheriting class -->
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_cppsequence_to_pylist"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PySequence">
+ <insert-template name="shiboken_conversion_pyiterable_to_cppsequentialcontainer_reserve"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+
+ <container-type name="QStack" type="stack">
+ <include file-name="QStack" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_cppsequence_to_pylist"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PySequence">
+ <insert-template name="shiboken_conversion_pyiterable_to_cppsequentialcontainer_reserve"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+
+ <container-type name="QQueue" type="queue">
+ <include file-name="QQueue" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_cppsequence_to_pylist"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PySequence">
+ <insert-template name="shiboken_conversion_pyiterable_to_cppsequentialcontainer_reserve"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+
+ <container-type name="QHash" type="hash">
+ <include file-name="QHash" location="global"/>
+ <!-- Include to make enum flags work. -->
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_qmap_to_pydict"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PyDict">
+ <insert-template name="shiboken_conversion_pydict_to_qmap"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+
+ <container-type name="QMultiHash" type="multi-hash">
+ <include file-name="QMultiHash" location="global"/>
+ <!-- Include to make enum flags work. -->
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_qmultihash_to_pydict"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PyDict">
+ <insert-template name="shiboken_conversion_pydict_to_qmultihash"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+
+ <value-type name="QHashSeed" since="6.2"/>
+
+ <container-type name="QMap" type="map">
+ <include file-name="QMap" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_qmap_to_pydict"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PyDict">
+ <insert-template name="shiboken_conversion_pydict_to_qmap"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+ <container-type name="QMultiMap" type="multi-map">
+ <include file-name="QMultiMap" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_qmultimap_to_pydict"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PyDict">
+ <insert-template name="shiboken_conversion_pydict_to_qmultihash"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+
+ <container-type name="QPair" type="pair">
+ <include file-name="QPair" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="shiboken_conversion_cpppair_to_pytuple"/>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PySequence">
+ <insert-template name="shiboken_conversion_pysequence_to_cpppair"/>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </container-type>
+
+ <rejection class="*" function-name="d_func"/>
+ <rejection class="*" function-name="data_ptr"/>
+ <rejection class="^(?!QSharedMemory).*$" function-name="detach"/>
+ <rejection class="*" function-name="isDetached"/>
+ <rejection class="*" field-name="d_ptr"/>
+ <rejection class="*" field-name="d"/>
+ <rejection class="*" field-name="staticMetaObject"/>
+ <!-- not support array in property -->
+ <rejection class="QUuid" field-name="data1"/>
+ <rejection class="QUuid" field-name="data2"/>
+ <rejection class="QUuid" field-name="data3"/>
+ <rejection class="QUuid" field-name="data4"/>
+ <!-- Internal -->
+ <rejection class="QCoreApplication" function-name="compressEvent"/>
+
+ <namespace-type name="Qt">
+ <extra-includes>
+ <include file-name="QtCore/QProperty" location="global"/>
+ </extra-includes>
+ <enum-type name="AlignmentFlag" python-type="IntFlag" flags="Alignment"/>
+ <enum-type name="AnchorPoint" since="4.6"/>
+ <enum-type name="ColorScheme" since="6.5"/>
+ <enum-type name="ApplicationAttribute"/>
+ <enum-type name="ApplicationState" flags="ApplicationStates"/>
+ <enum-type name="ArrowType"/>
+ <enum-type name="AspectRatioMode"/>
+ <enum-type name="Axis"/>
+ <enum-type name="BGMode"/>
+ <enum-type name="BrushStyle"/>
+ <enum-type name="CaseSensitivity"/>
+ <enum-type name="ChecksumType"/>
+ <enum-type name="CheckState"/>
+ <enum-type name="ClipOperation"/>
+ <enum-type name="ConnectionType"/>
+ <enum-type name="ContextMenuPolicy"/>
+ <enum-type name="CoordinateSystem" since="4.6"/>
+ <enum-type name="Corner"/>
+ <enum-type name="CursorShape"/>
+ <enum-type name="DateFormat"/>
+ <enum-type name="DayOfWeek"/>
+ <enum-type name="DockWidgetArea" flags="DockWidgetAreas"/>
+ <enum-type name="DockWidgetAreaSizes"/>
+ <enum-type name="DropAction" flags="DropActions"/>
+ <enum-type name="Edge" flags="Edges"/>
+ <enum-type name="EventPriority"/>
+ <enum-type name="FillRule"/>
+ <enum-type name="FindChildOption" flags="FindChildOptions"/>
+ <enum-type name="FocusPolicy" python-type="IntFlag"/>
+ <enum-type name="FocusReason"/>
+ <enum-type name="GestureFlag" flags="GestureFlags" since="4.6"/>
+ <enum-type name="GestureState" since="4.6"/>
+ <enum-type name="GestureType" python-type="IntEnum" since="4.6"/>
+ <enum-type name="GlobalColor"/>
+ <enum-type name="HighDpiScaleFactorRoundingPolicy"/>
+ <enum-type name="HitTestAccuracy"/>
+ <enum-type name="ImageConversionFlag" flags="ImageConversionFlags"/>
+ <enum-type name="InputMethodHint" flags="InputMethodHints" since="4.6"/>
+ <enum-type name="InputMethodQuery" flags="InputMethodQueries"/>
+ <enum-type name="EnterKeyType"/>
+ <enum-type name="ItemDataRole" python-type="IntEnum"/>
+ <enum-type name="ItemFlag" flags="ItemFlags"/>
+ <enum-type name="ItemSelectionMode"/>
+ <enum-type name="ItemSelectionOperation"/>
+ <enum-type name="Key" python-type="IntEnum"/>
+ <enum-type name="KeyboardModifier" flags="KeyboardModifiers"/>
+ <enum-type name="LayoutDirection"/>
+ <enum-type name="MaskMode"/>
+ <enum-type name="MatchFlag" flags="MatchFlags"/>
+ <enum-type name="Modifier" python-type="Flag"/>
+ <enum-type name="MouseButton" flags="MouseButtons"/>
+ <enum-type name="MouseEventFlag" flags="MouseEventFlags"/>
+ <enum-type name="MouseEventSource"/>
+ <enum-type name="NativeGestureType"/>
+ <enum-type name="NavigationMode" since="4.6"/>
+ <enum-type name="Orientation" flags="Orientations"/>
+ <enum-type name="PenCapStyle"/>
+ <enum-type name="PenJoinStyle"/>
+ <enum-type name="PenStyle"/>
+ <enum-type name="PermissionStatus" since="6.5"/>
+ <enum-type name="ReturnByValueConstant"/>
+ <enum-type name="ScreenOrientation" flags="ScreenOrientations"/>
+ <enum-type name="ScrollBarPolicy"/>
+ <enum-type name="ScrollPhase"/>
+ <enum-type name="ShortcutContext"/>
+ <enum-type name="SizeHint"/>
+ <enum-type name="SizeMode"/>
+ <enum-type name="SortOrder"/>
+ <enum-type name="SplitBehaviorFlags" flags="SplitBehavior"/>
+ <enum-type name="TabFocusBehavior"/>
+ <enum-type name="TextElideMode"/>
+ <enum-type name="TextFlag" python-type="IntFlag"/>
+ <enum-type name="TextFormat"/>
+ <enum-type name="TextInteractionFlag" flags="TextInteractionFlags"/>
+ <enum-type name="TileRule" since="4.6"/>
+ <enum-type name="TimerType"/>
+ <enum-type name="TimeSpec"/>
+ <enum-type name="ToolBarArea" flags="ToolBarAreas"/>
+ <enum-type name="ToolBarAreaSizes"/>
+ <enum-type name="ToolButtonStyle"/>
+ <enum-type name="TouchPointState" flags="TouchPointStates" since="4.6"/>
+ <enum-type name="TransformationMode"/>
+ <enum-type name="UIEffect"/>
+ <enum-type name="WhiteSpaceMode"/>
+ <enum-type name="WidgetAttribute"/>
+ <enum-type name="WindowFrameSection"/>
+ <enum-type name="WindowModality"/>
+ <enum-type name="WindowState" flags="WindowStates"/>
+ <enum-type name="WindowType" python-type="IntFlag" flags="WindowFlags"/>
+ <enum-type name="CursorMoveStyle" since="4.8" revision="4800"/>
+
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp"
+ snippet="qt-modifier"/>
+ </namespace-type>
+
+ <add-function signature="QEnum(PyObject*)" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-qenum"/>
+ </add-function>
+ <add-function signature="QFlag(PyObject*)" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-qflag"/>
+ </add-function>
+
+ <add-function signature="__init_feature__()">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-init-feature"/>
+ </add-function>
+
+ <add-function signature="qAbs(double)" return-type="double">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-qabs"/>
+ </add-function>
+
+ <add-function signature="qAddPostRoutine(PyObject*)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-addpostroutine"/>
+ </add-function>
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qt-qaddpostroutine"/>
+
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qt-version"/>
+
+ <!-- WARNING: There is an issue when adding this code to an external file -->
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qt-module-shutdown"/>
+ <add-function signature="__moduleShutdown()">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="moduleshutdown"/>
+ </add-function>
+
+ <!--signal/slot-->
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qt-pysideinit"/>
+
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="qt-messagehandler"/>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qlatin1string-check"/>
+ <add-function signature="qInstallMessageHandler(PyObject)" return-type="PyObject">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-installmessagehandler"/>
+ </add-function>
+
+ <value-type name="QDeadlineTimer">
+ <enum-type name="ForeverConstant"/>
+ </value-type>
+
+ <value-type name="QElapsedTimer" since="4.7">
+ <enum-type name="ClockType" since="4.7"/>
+ </value-type>
+
+ <object-type name="QAbstractTableModel"
+ polymorphic-id-expression="qobject_cast&lt;QAbstractTableModel*&gt;(%B)">
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ </object-type>
+ <value-type name="QLine" hash-function="PySide::hash">
+ <extra-includes>
+ <include file-name="pysideqhash.h" location="global"/>
+ </extra-includes>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%i, %i, %i, %i"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x1(), %CPPSELF.y1(), %CPPSELF.x2(), %CPPSELF.y2()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="iiii"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x1(), %CPPSELF.y1(), %CPPSELF.x2(), %CPPSELF.y2()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="qline-hash"/>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="iiii"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.x1(), %CPPSELF.y1(), %CPPSELF.x2(), %CPPSELF.y2()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+ <value-type name="QLineF">
+ <enum-type name="IntersectionType"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f, %f, %f"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x1(), %CPPSELF.y1(), %CPPSELF.x2(), %CPPSELF.y2()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="dddd"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x1(), %CPPSELF.y1(), %CPPSELF.x2(), %CPPSELF.y2()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="dddd"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.x1(), %CPPSELF.y1(), %CPPSELF.x2(), %CPPSELF.y2()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <modify-function signature="intersects(const QLineF &amp;,QPointF*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[PySide6.QtCore.QLineF.IntersectionType, PySide6.QtCore.QPointF]">
+ <replace-type modified-type="(intersectType, intersectionPoint)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qlinef-intersect"/>
+ </modify-function>
+ </value-type>
+ <object-type name="QResource">
+ <enum-type name="Compression"/>
+ <modify-function signature="data()const">
+ <inject-documentation format="target">
+ Returns a read only buffer object pointing to the segment of data that this resource represents. If the resource is compressed the data returns is compressed and qUncompress() must be used to access the data. If the resource is a directory None is returned.
+ </inject-documentation>
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="qresource-data"/>
+ </modify-function>
+
+ <modify-function signature="unregisterResource(const uchar*,const QString&amp;)" rename="unregisterResourceData">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="qresource-registerResource"/>
+ </modify-function>
+ <modify-function signature="registerResource(const uchar*,const QString&amp;)" rename="registerResourceData">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="qresource-registerResource"/>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QBasicTimer"/>
+ <value-type name="QByteArrayMatcher"/>
+ <value-type name="QCalendar">
+ <object-type name="SystemId"/> <!-- not default-constructible -->
+ <value-type name="YearMonthDay"/>
+ <enum-type name="System"/>
+ <enum-type identified-by-value="Unspecified"/>
+ </value-type>
+ <value-type name="QDate">
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="core-snippets-p-h"/>
+ <conversion-rule>
+ <target-to-native>
+ <add-conversion type="Py_None" file="../glue/qtcore.cpp" snippet="conversion-pynone"/>
+ <add-conversion type="PyDate" check="PyDate_ImportAndCheck(%in)"
+ file="../glue/qtcore.cpp" snippet="conversion-qdate-pydate"/>
+ </target-to-native>
+ </conversion-rule>
+ <extra-includes>
+ <include file-name="datetime.h" location="global"/>
+ </extra-includes>
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%i, %i, %i"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.year(), %CPPSELF.month(), %CPPSELF.day()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="iii"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.year(), %CPPSELF.month(), %CPPSELF.day()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="toPython()" return-type="PyObject">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qdate-topython"/>
+ </add-function>
+ <modify-function signature="getDate(int*,int*,int*)const" >
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, int, int]">
+ <replace-type modified-type="(year, month, day)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qdate-getdate"/>
+ </modify-function>
+ <modify-function signature="weekNumber(int*)const" >
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, int]">
+ <replace-type modified-type="(week, yearNumber)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qdate-weeknumber"/>
+ </modify-function>
+ </value-type>
+ <value-type name="QDateTime">
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="core-snippets-p-h"/>
+ <enum-type name="YearRange"/>
+ <enum-type name="TransitionResolution" since="6.7"/>
+ <conversion-rule>
+ <target-to-native>
+ <add-conversion type="Py_None" file="../glue/qtcore.cpp" snippet="conversion-pynone"/>
+ <add-conversion type="PyDateTime" check="PyDateTime_ImportAndCheck(%in)"
+ file="../glue/qtcore.cpp" snippet="conversion-qdatetime-pydatetime"/>
+ </target-to-native>
+ </conversion-rule>
+ <extra-includes>
+ <include file-name="datetime.h" location="global"/>
+ </extra-includes>
+ <!-- Somewhat internal constructor used to pickle QDateTime -->
+ <add-function signature="QDateTime(int,int,int,int,int,int,int,int=Qt::LocalTime)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qdatetime-1"/>
+ </add-function>
+ <add-function signature="QDateTime(int,int,int,int,int,int)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qdatetime-2"/>
+ </add-function>
+ <!-- PYSIDE-1735: Qt::TimeSpec is no more compatible with int -->
+ <add-function signature="QDateTime(int,int,int,int,int,int,int,Qt::TimeSpec=Qt::LocalTime)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qdatetime-3"/>
+ </add-function>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%i, %i, %i, %i, %i, %i, %i, %i"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.date().year(), %CPPSELF.date().month(), %CPPSELF.date().day(), %CPPSELF.time().hour(), %CPPSELF.time().minute(), %CPPSELF.time().second(), %CPPSELF.time().msec(), (int)%CPPSELF.timeSpec()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="iiiiiiii"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.date().year(), %CPPSELF.date().month(), %CPPSELF.date().day(), %CPPSELF.time().hour(), %CPPSELF.time().minute(), %CPPSELF.time().second(), %CPPSELF.time().msec(), (int)%CPPSELF.timeSpec()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="toPython()" return-type="PyObject">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qdatetime-topython"/>
+ </add-function>
+ </value-type>
+
+ <value-type name="QDir">
+ <enum-type name="Filter" flags="Filters"/>
+ <enum-type name="SortFlag" flags="SortFlags"/>
+
+ <!-- PYSIDE-1499: Replace QString by pathlib.Path (qdir.h) -->
+ <modify-function signature="QDir(const QString &amp;)">
+ <modify-argument index="1" pyi-type="Optional[PyPathLike]">
+ <replace-type modified-type="PyPathLike"/>
+ <rename to="path"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="QDir(const QString &amp;,const QString &amp;,QFlags&lt;QDir::SortFlag&gt;,QFlags&lt;QDir::Filter&gt;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="setPath(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="addSearchPath(const QString &amp;,const QString &amp;)">
+ <modify-argument index="2"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-2"/>
+ </modify-function>
+ <!-- PYSIDE-1499: End of insertion -->
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="s"/>
+ <replace from="%REDUCE_ARGS" to="qPrintable(%CPPSELF.path())"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QPermission" since="6.5">
+ <configuration condition="QT_CONFIG(permissions)"/>
+ </value-type>
+ <value-type name="QBluetoothPermission" since="6.5">
+ <configuration condition="QT_CONFIG(permissions)"/>
+ <enum-type name="CommunicationMode" flags="CommunicationModes" since="6.6"/>
+ </value-type>
+ <value-type name="QCalendarPermission" since="6.5">
+ <configuration condition="QT_CONFIG(permissions)"/>
+ <enum-type name="AccessMode"/>
+ </value-type>
+ <value-type name="QCameraPermission" since="6.5">
+ <configuration condition="QT_CONFIG(permissions)"/>
+ </value-type>
+ <value-type name="QContactsPermission" since="6.5">
+ <configuration condition="QT_CONFIG(permissions)"/>
+ <enum-type name="AccessMode"/>
+ </value-type>
+ <value-type name="QLocationPermission" since="6.5">
+ <configuration condition="QT_CONFIG(permissions)"/>
+ <enum-type name="Accuracy"/>
+ <enum-type name="Availability"/>
+ </value-type>
+ <value-type name="QMicrophonePermission" since="6.5">
+ <configuration condition="QT_CONFIG(permissions)"/>
+ </value-type>
+
+ <value-type name="QPoint">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%i, %i"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="ii"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="ii"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!--### Functions removed because they return references to Python imutable objects -->
+ <modify-function signature="rx()" remove="all"/>
+ <modify-function signature="ry()" remove="all"/>
+ <!--### -->
+ </value-type>
+ <value-type name="QPointF">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="dd"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="dd"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!--### Functions removed because they return references to Python imutable objects -->
+ <modify-function signature="rx()" remove="all"/>
+ <modify-function signature="ry()" remove="all"/>
+ <!--### -->
+ </value-type>
+ <value-type name="QRect">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%i, %i, %i, %i"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="iiii"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <modify-function signature="getCoords(int*,int*,int*,int*)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument />
+ </modify-argument>
+ <inject-code class="target">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getRect(int*,int*,int*,int*)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument />
+ </modify-argument>
+ <inject-code class="target">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ </value-type>
+ <value-type name="QRectF">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f, %f, %f"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!--
+ FIXME These functions return qreal. Will convert to double (format
+ string) mess things up in other architectures?
+ -->
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="dddd"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <modify-function signature="getCoords(qreal*,qreal*,qreal*,qreal*)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument />
+ </modify-argument>
+ <inject-code class="target">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getRect(qreal*,qreal*,qreal*,qreal*)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument />
+ </modify-argument>
+ <inject-code class="target">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ </value-type>
+ <value-type name="QSize">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%i, %i"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="ii"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="ii"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!--### Functions removed because they return references to Python imutable objects -->
+ <modify-function signature="rheight()" remove="all"/>
+ <modify-function signature="rwidth()" remove="all"/>
+ <!--### -->
+ </value-type>
+ <value-type name="QSizeF">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="dd"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="dd"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.width(), %CPPSELF.height()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!--### Functions removed because they return references to Python imutable objects -->
+ <modify-function signature="rheight()" remove="all"/>
+ <modify-function signature="rwidth()" remove="all"/>
+ <!--### -->
+ </value-type>
+
+ <value-type name="QTime">
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="core-snippets-p-h"/>
+ <conversion-rule>
+ <target-to-native>
+ <add-conversion type="Py_None" file="../glue/qtcore.cpp" snippet="conversion-pynone"/>
+ <add-conversion type="PyTime" check="PyTime_ImportAndCheck(%in)"
+ file="../glue/qtcore.cpp" snippet="conversion-qtime-pytime"/>
+ </target-to-native>
+ </conversion-rule>
+
+ <extra-includes>
+ <include file-name="datetime.h" location="global"/>
+ </extra-includes>
+
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%i, %i, %i, %i"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.hour(), %CPPSELF.minute(), %CPPSELF.second(), %CPPSELF.msec()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="iiii"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.hour(), %CPPSELF.minute(), %CPPSELF.second(), %CPPSELF.msec()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="toPython()" return-type="PyObject">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qtime-topython"/>
+ </add-function>
+ </value-type>
+ <value-type name="QPersistentModelIndex">
+ <extra-includes>
+ <include file-name="QtCore/QList" location="global"/>
+ </extra-includes>
+ <!-- For signal QAbstractItemModel::layoutAboutToBeChanged(QList<QPersistentModelIndex>) -->
+ <inject-code class="target" position="end">
+ qRegisterMetaType&lt;QList&lt;QPersistentModelIndex&gt; &gt;("QList_QPersistentModelIndex");
+ </inject-code>
+ <modify-function signature="internalPointer()const">
+ <modify-argument index="return" pyi-type="Any"/>
+ <inject-code class="target" position="beginning">
+ <insert-template name="return_internal_pointer" />
+ </inject-code>
+ </modify-function>
+ <modify-function signature="operator QModelIndex()const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+
+ <value-type name="QTimeZone">
+ <configuration condition="QT_CONFIG(timezone)"/>
+ <enum-type name="Initialization" since="6.5"/>
+ <enum-type name="TimeType"/>
+ <enum-type name="NameType"/>
+ <value-type name="OffsetData">
+ <configuration condition="QT_CONFIG(timezone)"/>
+ </value-type>
+ </value-type>
+
+ <value-type name="QUuid">
+ <enum-type name="StringFormat"/>
+ <enum-type name="Variant"/>
+ <enum-type name="Version"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="'%s'"/>
+ <replace from="%REPR_ARGS" to="qPrintable(%CPPSELF.toString())"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="s"/>
+ <replace from="%REDUCE_ARGS" to="qPrintable(%CPPSELF.toString())"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMimeType"/>
+ <object-type name="QMimeDatabase">
+ <enum-type name="MatchMode"/>
+ </object-type>
+
+ <value-type name="QLocale">
+ <enum-type name="TagSeparator" since="6.7"/>
+ <enum-type name="Country"/>
+ <enum-type name="DataSizeFormat" flags="DataSizeFormats"/>
+ <enum-type name="FloatingPointPrecisionOption" python-type="IntEnum"/>
+ <enum-type name="FormatType"/>
+ <enum-type name="Language"/>
+ <enum-type name="LanguageCodeType" python-type="IntFlag" flags="LanguageCodeTypes" since="6.3"/>
+ <enum-type name="MeasurementSystem"/>
+ <enum-type name="NumberOption" flags="NumberOptions"/>
+ <enum-type name="Script" since="4.8" revision="4800"/>
+ <enum-type name="CurrencySymbolFormat" since="4.8" revision="4800"/>
+ <enum-type name="QuotationStyle" since="4.8" revision="4800"/>
+ <!--### All those C++ number types have the same representation in Python -->
+ <modify-function signature="toString(qulonglong)const" remove="all"/>
+ <modify-function signature="toString(ushort)const" remove="all"/>
+ <modify-function signature="toString(unsigned int)const" remove="all"/>
+ <modify-function signature="system()" remove="all"/>
+ <!--### -->
+ <extra-includes>
+ <include file-name="QDate" location="global"/>
+ </extra-includes>
+ <add-function signature="system()" return-type="QLocale" static="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qlocale_system"/>
+ <inject-documentation mode="append" format="target">
+ Returns a QLocale object initialized to the system locale.
+
+ The system locale may use system-specific sources for locale data, where available,
+ otherwise falling back on QLocale's built-in database entry for the language, script and
+ territory the system reports.
+
+ For example, on Windows, this locale will use the decimal/grouping characters and
+ date/time formats specified in the system configuration panel.
+
+ .. note:: Qt for Python on macOS will not reflect the user's region and language
+ preferences though QLocale::system(), but will instead reflect the environment
+ variables POSIX uses to specify locale, similar to Python's locale module. If the
+ system locale cannot be determined, which can be due to none of the variables 'LC_ALL',
+ 'LC_CTYPE', 'LANG' or 'LANGUAGE' being set by your environment, then the default POSIX
+ locale or 'C' locale is returned.
+
+ See also c().
+ </inject-documentation>
+ </add-function>
+ <modify-function signature="toTime(QString,QLocale::FormatType)const">
+ <modify-argument index="2">
+ <rename to="format"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="toDate(QString,QLocale::FormatType,int)const">
+ <modify-argument index="2">
+ <rename to="format"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="^toDate(Time)?\(QString,[^,]+,int\)const$">
+ <modify-argument index="3">
+ <replace-default-expression with="1900"/> <!-- private FirstTwoDigitYear -->
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="^toDate(Time)?\(QString,[^,]+,QCalendar,int\)const$">
+ <modify-argument index="4">
+ <replace-default-expression with="1900"/> <!-- private FirstTwoDigitYear -->
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="toUInt(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ <remove-default-expression />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="(int, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toULongLong(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ <remove-default-expression />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="(int, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toDouble(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ <remove-default-expression />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[float, bool]">
+ <replace-type modified-type="(float, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toFloat(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ <remove-default-expression />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[float, bool]">
+ <replace-type modified-type="(float, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toInt(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="(int, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toLongLong(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="(int, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toLong(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="(int, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toShort(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="(int, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toUShort(QString,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[int, bool]">
+ <replace-type modified-type="(int, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <!-- PYSIDE-2133, 2168 remove unsigned overloads of to(Currency)?String() to
+ ensure float overloads are used -->
+ <modify-function signature="^to(Currency)?String\(q?u.*$" remove="all"/>
+ <modify-function signature="^to(Currency)?String\(.*short.*$" remove="all"/>
+ <modify-function signature="^to.*\(.*QStringView.*$" remove="all"/>
+ </value-type>
+ <value-type name="QBitArray">
+ <add-function signature="__len__">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbitarray-len"/>
+ </add-function>
+ <add-function signature="__getitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbitarray-getitem"/>
+ </add-function>
+ <add-function signature="__setitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbitarray-setitem"/>
+ </add-function>
+ </value-type>
+ <object-type name="QLockFile">
+ <enum-type name="LockError"/>
+ <modify-function signature="isLocked()const" allow-thread="yes"/>
+ <modify-function signature="lock()" allow-thread="yes"/>
+ <modify-function signature="removeStaleLockFile()" allow-thread="yes"/>
+ <modify-function signature="tryLock(int)" allow-thread="yes"/>
+ <modify-function signature="unlock()" allow-thread="yes"/>
+ <modify-function signature="getLockInfo(qint64*,QString*,QString*)const">
+ <modify-argument index="return" pyi-type="Tuple[int, str, str]">
+ <replace-type modified-type="(int, str, str)"/>
+ </modify-argument>
+ <modify-argument index="1"><remove-argument/></modify-argument>
+ <modify-argument index="2"><remove-argument/></modify-argument>
+ <modify-argument index="3"><remove-argument/></modify-argument>
+ <inject-code class="target" position="beginning"
+ file="../glue/qtcore.cpp" snippet="qlockfile-getlockinfo"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QMessageAuthenticationCode"/>
+ <object-type name="QSignalBlocker">
+ <add-function signature="__enter__()" return-type="QSignalBlocker">
+ <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/>
+ </add-function>
+ <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qsignalblocker-unblock"/>
+ </add-function>
+ </object-type>
+ <value-type name="QStorageInfo"/>
+ <!-- QReadWriteLock does not have a copy ctor! -->
+ <object-type name="QReadWriteLock">
+ <enum-type name="RecursionMode"/>
+ <modify-function signature="lockForRead()" allow-thread="yes"/>
+ <modify-function signature="tryLockForRead(int)" allow-thread="yes"/>
+ <modify-function signature="lockForWrite()" allow-thread="yes"/>
+ <modify-function signature="tryLockForWrite(int)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QReadLocker">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <modify-function signature="QReadLocker(QReadWriteLock*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="relock()" allow-thread="yes"/>
+ <add-function signature="__enter__()" return-type="QReadLocker">
+ <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/>
+ </add-function>
+ <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="unlock"/>
+ </add-function>
+ </object-type>
+ <object-type name="QWriteLocker">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <modify-function signature="QWriteLocker(QReadWriteLock*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="relock()" allow-thread="yes"/>
+ <add-function signature="__enter__()" return-type="QWriteLocker">
+ <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/>
+ </add-function>
+ <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="unlock"/>
+ </add-function>
+ </object-type>
+ <object-type name="QDirIterator">
+ <enum-type name="IteratorFlag" flags="IteratorFlags"/>
+ </object-type>
+ <object-type name="QThread">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <inject-code file="../glue/qtcore.cpp" class="native" position="beginning" snippet="qthread_pthread_cleanup"/>
+ <enum-type name="Priority"/>
+ <modify-function signature="currentThreadId()" remove="all"/>
+ <modify-function signature="run()" allow-thread="yes">
+ <inject-code file="../glue/qtcore.cpp" class="native" position="beginning"
+ snippet="qthread_pthread_cleanup_install"/>
+ <inject-code file="../glue/qtcore.cpp" class="native" position="end"
+ snippet="qthread_pthread_cleanup_uninstall"/>
+ </modify-function>
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="int">
+ <inject-code file="../glue/qtcore.cpp" snippet="qthread_exec_"/>
+ </add-function>
+ <modify-function signature="msleep(unsigned long)" allow-thread="yes"/>
+ <modify-function signature="sleep(unsigned long)" allow-thread="yes"/>
+ <modify-function signature="usleep(unsigned long)" allow-thread="yes"/>
+ <modify-function signature="wait(QDeadlineTimer)" allow-thread="yes"/>
+ <modify-function signature="wait(unsigned long)" allow-thread="yes"/>
+ <modify-function signature="yieldCurrentThread()" allow-thread="yes"/>
+ <modify-function signature="start(QThread::Priority)" allow-thread="yes">
+ <modify-argument index="1">
+ <rename to="priority"/>
+ </modify-argument>
+ <!-- PYSIDE-535: PyPy 7.3.8 needs this call, which is actually a no-op in Python 3.10 -->
+ <inject-code file="../glue/qtcore.cpp" class="target" position="beginning"
+ snippet="qthread_init_pypy"/>
+ </modify-function>
+ <modify-function signature="exit(int)" allow-thread="yes"/>
+ </object-type>
+
+ <value-type name="QModelRoleData"/>
+
+ <object-type name="QAbstractItemModel">
+ <enum-type name="CheckIndexOption" flags="CheckIndexOptions"/>
+ <enum-type name="LayoutChangeHint"/>
+ <!-- This function was replaced by a added function -->
+ <modify-function signature="createIndex(int,int,const void*)const" remove="all"/>
+ <!-- This function is the same as createIndex(int, int, int)const -->
+ <modify-function signature="createIndex(int,int,quintptr)const">
+ <modify-argument index="3">
+ <replace-default-expression with="0"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="createIndex(int@row@,int@column@,PyObject*@ptr@)const" return-type="QModelIndex">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qabstractitemmodel-createindex"/>
+ <inject-documentation mode="append" format="target">
+ Creates a model index for the given row and column with the internal pointer ptr.
+ When using a QSortFilterProxyModel, its indexes have their own internal pointer.
+ It is not advisable to access this internal pointer outside of the model.
+ Use the data() function instead.
+ This function provides a consistent interface that model subclasses must use to create model indexes.
+
+ .. warning:: Because of some Qt/Python itegration rules, the ptr argument do not get the reference
+ incremented during the QModelIndex life time. So it is necessary to keep the object used
+ on ptr argument alive during the whole process.
+ Do not destroy the object if you are not sure about that.
+ </inject-documentation>
+ </add-function>
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qabstractitemmodel"/>
+ <modify-function signature="mimeData(QList&lt;QModelIndex&gt;)const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="data(const QModelIndex&amp;,int)const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="dataChanged(const QModelIndex&amp;,const QModelIndex&amp;,const QVector&lt;int&gt;&amp;)" allow-thread="yes"/>
+ <modify-function signature="layoutAboutToBeChanged(const QList&lt;QPersistentModelIndex&gt;&amp;,QAbstractItemModel::LayoutChangeHint)" allow-thread="yes"/>
+ <modify-function signature="layoutChanged(const QList&lt;QPersistentModelIndex&gt;&amp;,QAbstractItemModel::LayoutChangeHint)" allow-thread="yes"/>
+ <modify-function signature="beginResetModel()" allow-thread="yes"/>
+ <modify-function signature="endResetModel()" allow-thread="yes"/>
+ </object-type>
+
+ <value-type name="QItemSelection">
+ <include file-name="QList" location="global"/>
+ <!-- Expose operator==, != inherited from QList, which the parser does
+ not see due to the TMP expression of the return type. -->
+ <add-function signature="operator==(const QItemSelection&amp;)" return-type="bool"/>
+ <add-function signature="operator!=(const QItemSelection&amp;)" return-type="bool"/>
+ <!-- For some reason, the empty selection is not seen. Maybe related to the new [default]
+ tag in Qt6?
+ PYSIDE-2756: The return-type attribute is unnecessary -->
+ <declare-function signature="QItemSelection()"/>
+ <!-- The __add__ function creates a result list, instead of using the inherited type.
+ Fixed by adding with the correct type. -->
+ <add-function signature="operator+(QItemSelection)" return-type="QItemSelection">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qitemselection-add"/>
+ </add-function>
+ </value-type>
+
+ <object-type name="QItemSelectionModel">
+ <extra-includes>
+ <include file-name="QItemSelection" location="global"/>
+ </extra-includes>
+ <enum-type name="SelectionFlag" flags="SelectionFlags"/>
+ </object-type>
+
+ <value-type name="QItemSelectionRange">
+ </value-type>
+ <object-type name="QAbstractProxyModel"
+ polymorphic-id-expression="qobject_cast&lt;QAbstractProxyModel*&gt;(%B)">
+ <extra-includes>
+ <include file-name="QItemSelection" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QConcatenateTablesProxyModel"/>
+ <object-type name="QSortFilterProxyModel">
+ <extra-includes>
+ <include file-name="QItemSelection" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <modify-function signature="setSourceModel(QAbstractItemModel*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QIdentityProxyModel"/>
+ <object-type name="QTransposeProxyModel"/>
+ <!-- QObject is created manually -->
+ <object-type name="QObject" parent-management="true">
+ <extra-includes>
+ <include file-name="QThread" location="global"/>
+ <include file-name="QCoreApplication" location="global"/>
+ <include file-name="signalmanager.h" location="local"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="core-snippets-p-h"/>
+ <modify-function signature="metaObject()const">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-metaobject"/>
+ <modify-argument index="return">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <!-- FIXME PYSIDE 7: Remove this (QT6_DECL_NEW_OVERLOAD_TAIL) -->
+ <modify-function signature="^moveToThread\(.*\)" remove="all"/>
+ <declare-function signature="moveToThread(QThread*)" return-type="bool"/>
+ <modify-function signature="deleteLater()">
+ <modify-argument index="this">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <!-- Invalidate-after-use stuff -->
+ <modify-function signature="childEvent(QChildEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="customEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="event(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="eventFilter(QObject*,QEvent*)">
+ <modify-argument index="2" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="timerEvent(QTimerEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <!-- End of Invalidate-after-use fix -->
+ <modify-function signature="parent()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setParent(QObject*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ <modify-argument index="1" pyi-type="Optional[PySide6.QtCore.QObject]"/>
+ </modify-function>
+ <!-- Manual overload order fixes PYSIDE-2627
+
+ The addition of the qobject-connect-4-context overload resulted in an
+ automatic overload ordering that prevented the right overload from
+ ever being called if the callable was a QObject. Set a manual order to
+ fix this. -->
+ <modify-function signature="connect(const QObject*,const char*,const char*,Qt::ConnectionType)const"
+ overload-number="0">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-connect-1"/>
+ </modify-function>
+ <!-- static version -->
+ <modify-function signature="connect(const QObject*,QMetaMethod,const QObject*,QMetaMethod,Qt::ConnectionType)"
+ overload-number="1">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-connect-2"/>
+ </modify-function>
+ <modify-function signature="connect(const QObject*,const char*,const QObject*,const char*,Qt::ConnectionType)"
+ overload-number="2">
+ <modify-argument index="5">
+ <rename to="type"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-connect-3"/>
+ </modify-function>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-connect"/>
+ <add-function signature="connect(const QObject*@sender@,const char*@signal@,PyCallable*@functor@,Qt::ConnectionType@type@=Qt::AutoConnection)"
+ return-type="QMetaObject::Connection" static="yes" overload-number="3">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-connect-4"/>
+ </add-function>
+ <add-function signature="connect(const QObject*@sender@,const char*@signal@,const QObject*@context@,PyCallable*@functor@,Qt::ConnectionType@type@=Qt::AutoConnection)"
+ return-type="QMetaObject::Connection" static="yes" overload-number="4">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-connect-4-context"/>
+ </add-function>
+ <!-- static version -->
+ <add-function signature="connect(const char*@signal@,PyCallable*@functor@,Qt::ConnectionType@type@=Qt::AutoConnection)"
+ return-type="QMetaObject::Connection" overload-number="5">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-connect-5"/>
+ </add-function>
+ <add-function signature="connect(const char*@signal@,const QObject*@receiver@,const char*@method@,Qt::ConnectionType@type@=Qt::AutoConnection)"
+ return-type="QMetaObject::Connection" overload-number="6">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-connect-6"/>
+ </add-function>
+
+ <add-function signature="emit(const char*,...)" return-type="bool">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-emit"/>
+ </add-function>
+ <add-function signature="disconnect(const char*@signal@,PyCallable*@functor@)" return-type="bool">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-disconnect-1"/>
+ </add-function>
+ <add-function signature="disconnect(const QObject*@sender@,const char*@signal@,PyCallable*@functor@)" return-type="bool" static="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-disconnect-2"/>
+ </add-function>
+ <modify-function signature="disconnect(QMetaObject::Connection)">
+ <modify-argument index="1">
+ <rename to="connection"/>
+ </modify-argument>
+ </modify-function>
+
+
+ <add-function signature="findChild(PyTypeObject*@type@,const QString&amp;@name@={},Qt::FindChildOptions@options@=Qt::FindChildrenRecursively)"
+ return-type="PyObject*">
+ <inject-documentation format="target" mode="append">
+ To find the child of a certain QObject, the first argument of this function should be the child's type, and the second the name of the child:
+
+ ::
+
+ ...
+ parent = QWidget()
+ ...
+ # The first argument must be the child type
+ child1 = parent.findChild(QPushButton, "child_button")
+ child2 = parent.findChild(QWidget, "child_widget")
+
+ </inject-documentation>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-findchild-2"/>
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </add-function>
+ <add-function signature="findChildren(PyTypeObject*@type@,const QString&amp;@name@={},Qt::FindChildOptions@options@=Qt::FindChildrenRecursively)"
+ return-type="PySequence*" >
+ <inject-documentation format="target" mode="append">
+ Like the method *findChild*, the first parameter should be the child's type.
+ </inject-documentation>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-findchildren"/>
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </add-function>
+ <add-function signature="findChildren(PyTypeObject*@type@,const QRegularExpression&amp;@pattern@,Qt::FindChildOptions@options@=Qt::FindChildrenRecursively)"
+ return-type="PySequence*" >
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-findchildren"/>
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </add-function>
+
+ <add-function signature="tr(const char *@sourceText@, const char *@disambiguation@=nullptr, int @n@=-1)" return-type="QString" classmethod="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-tr"/>
+ <modify-argument index="1" pyi-type="str"/>
+ <modify-argument index="2" pyi-type="Optional[str]">
+ </modify-argument>
+ </add-function>
+
+ <modify-function signature="destroyed(QObject*)" allow-thread="yes">
+ <modify-argument index="1">
+ <rename to="object"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="sender()const" allow-thread="yes">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qobject-sender"/>
+ </modify-function>
+
+ <!-- This is not supported due the lack of information durring the call with no arguments, this can cause a memory leak -->
+ <modify-function signature="disconnect(const char*,const QObject*,const char*)const">
+ <modify-argument index="1">
+ <remove-default-expression />
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-default-expression />
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-default-expression />
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QAbstractListModel"
+ polymorphic-id-expression="qobject_cast&lt;QAbstractListModel*&gt;(%B)">
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ </object-type>
+ <value-type name="QUrlQuery"/>
+
+ <value-type name="QUrl">
+ <!-- Qt5: lots of changes -->
+ <enum-type name="ComponentFormattingOption" python-type="IntFlag" flags="ComponentFormattingOptions,FormattingOptions"/>
+ <!-- note: above duplication of attribute is not by default XML compliant! -->
+ <enum-type name="UrlFormattingOption" python-type="IntFlag"/>
+ <enum-type name="UserInputResolutionOption" flags="UserInputResolutionOptions"/>
+ <enum-type name="ParsingMode"/>
+ <enum-type name="AceProcessingOption" flags="AceProcessingOptions" since="6.3"/>
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ </extra-includes>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="'%s'"/>
+ <replace from="%REPR_ARGS" to="qPrintable(%CPPSELF.toString())"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="s"/>
+ <replace from="%REDUCE_ARGS" to="qPrintable(%CPPSELF.toString())"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <modify-function signature="fromLocalFile(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ </value-type>
+
+ <value-type name="QRegularExpression">
+ <enum-type name="WildcardConversionOption" flags="WildcardConversionOptions"/>
+ <enum-type name="MatchOption" flags="MatchOptions"/>
+ <enum-type name="MatchType"/>
+ <enum-type name="PatternOption" flags="PatternOptions"/>
+ </value-type>
+ <value-type name="QRegularExpressionMatch"/>
+ <value-type name="QRegularExpressionMatchIterator"/>
+
+ <value-type name="QFileInfo">
+ <extra-includes>
+ <include file-name="QDateTime" location="global"/>
+ <include file-name="QDir" location="global"/>
+ </extra-includes>
+
+ <!-- PYSIDE-1499: Replace QString by pathlib.Path (qfileinfo.h) -->
+ <modify-function signature="QFileInfo(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="QFileInfo(const QDir &amp;,const QString &amp;)">
+ <modify-argument index="2"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-2"/>
+ </modify-function>
+ <modify-function signature="setFile(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <!-- PYSIDE-1499: End of insertion -->
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="s"/>
+ <replace from="%REDUCE_ARGS" to="qPrintable(%CPPSELF.filePath())"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <!-- PYSIDE-1913: Disable isNull() for bool cast; __len__ should be used
+ instead so that b"" yields False. -->
+ <value-type name="QByteArray" isNull="false">
+ <enum-type name="Base64Option" flags="Base64Options"/>
+ <enum-type name="Base64DecodingStatus"/>
+ <value-type name="FromBase64Result"/>
+ <conversion-rule>
+ <target-to-native>
+ <add-conversion type="Py_None" file="../glue/qtcore.cpp" snippet="conversion-pynone"/>
+ <add-conversion type="PyBytes" file="../glue/qtcore.cpp" snippet="conversion-qbytearray-pybytes"/>
+ <add-conversion type="PyByteArray" file="../glue/qtcore.cpp" snippet="conversion-qbytearray-pybytearray"/>
+ <add-conversion type="PyString" check="Shiboken::String::check(%in) &amp;&amp; !PyUnicode_Check(%in)" file="../glue/qtcore.cpp" snippet="conversion-qbytearray-pystring"/>
+ </target-to-native>
+ </conversion-rule>
+
+ <extra-includes>
+ <!-- qt5: this is a pre-defined macro <include file-name="QNoImplicitBoolCast" location="global"/> -->
+ </extra-includes>
+
+ <!-- ### These overloads must be removed accept strings with \x00 in their contents -->
+ <modify-function signature="append(const char*)" remove="all"/>
+ <modify-function signature="prepend(const char*)" remove="all"/>
+ <modify-function signature="operator==(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator==(QByteArray,const char*)" remove="all"/>
+ <modify-function signature="operator>(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator>(QByteArray,const char*)" remove="all"/>
+ <modify-function signature="operator>=(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator>=(QByteArray,const char*)" remove="all"/>
+ <modify-function signature="operator&lt;(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator&lt;=(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator&lt;=(QByteArray,const char*)" remove="all"/>
+ <modify-function signature="operator!=(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator!=(QByteArray,const char*)" remove="all"/>
+ <modify-function signature="operator+=(const char*)" remove="all"/>
+ <modify-function signature="operator+(QByteArray,const char*)" remove="all"/>
+ <modify-function signature="operator+(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator+(QByteArray,const char*)" remove="all"/>
+ <add-function signature="operator+(PyBytes,QByteArray)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorplus-1"/>
+ </add-function>
+ <add-function signature="operator+(PyByteArray, QByteArray)" return-type="QByteArray">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorplus-2"/>
+ </add-function>
+ <add-function signature="operator+(PyByteArray)" return-type="QByteArray">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorplus-3"/>
+ </add-function>
+ <add-function signature="operator+=(PyByteArray)" return-type="QByteArray">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorplusequal"/>
+ </add-function>
+ <add-function signature="operator==(PyUnicode)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorequalequal"/>
+ </add-function>
+ <add-function signature="operator!=(PyUnicode)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatornotequal"/>
+ </add-function>
+ <add-function signature="operator&gt;(PyUnicode)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorgreater"/>
+ </add-function>
+ <add-function signature="operator&gt;=(PyUnicode)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorgreaterequal"/>
+ </add-function>
+ <add-function signature="operator&lt;(PyUnicode)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorlower"/>
+ </add-function>
+ <add-function signature="operator&lt;=(PyUnicode)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qbytearray-operatorlowerequal"/>
+ </add-function>
+ <!-- ### -->
+
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-repr"/>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="N"/>
+ <replace from="%REDUCE_ARGS" to="PyBytes_FromStringAndSize(%CPPSELF.constData(), %CPPSELF.size())"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QByteArray(PyByteArray)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-2"/>
+ </add-function>
+ <add-function signature="QByteArray(PyBytes)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-3"/>
+ </add-function>
+ <!-- buffer protocol -->
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-bufferprotocol"/>
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qbytearray-py3"/>
+
+ <modify-function signature="data()">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-data"/>
+ </modify-function>
+
+ <!-- removed functions -->
+ <!--### Functions removed because they return STL-like iterators -->
+ <modify-function signature="begin()" remove="all"/>
+ <modify-function signature="begin()const" remove="all"/>
+ <modify-function signature="constBegin()const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <modify-function signature="constEnd()const" remove="all"/>
+ <modify-function signature="end()" remove="all"/>
+ <modify-function signature="end()const" remove="all"/>
+ <!--### -->
+
+ <!--### Functions removed because they provide useless overloads from Python point of view -->
+ <modify-function signature="number(uint,int)" remove="all"/>
+ <modify-function signature="number(qulonglong,int)" remove="all"/>
+ <modify-function signature="operator+=(const char*)" remove="all"/>
+ <modify-function signature="operator+(char,QByteArray)" remove="all"/>
+ <modify-function signature="operator==(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator!=(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator&lt;(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator&lt;=(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator>(const char*,QByteArray)" remove="all"/>
+ <modify-function signature="operator>=(const char*,QByteArray)" remove="all"/>
+ <!-- Those types have the same representation in Python, an overload
+ would be useless and cause overflow errors. -->
+ <modify-function signature="setNum(uint,int)" remove="all"/>
+ <modify-function signature="setNum(ushort,int)" remove="all"/>
+ <modify-function signature="setNum(float,char,int)" remove="all"/>
+ <modify-function signature="setNum(short,int)" remove="all"/>
+ <modify-function signature="setNum(long,int)" remove="all"/>
+ <modify-function signature="setNum(ulong,int)" remove="all"/>
+ <modify-function signature="setNum(qulonglong,int)" remove="all"/>
+ <modify-function signature="number(uint,int)" remove="all"/>
+ <modify-function signature="number(long,int)" remove="all"/>
+ <modify-function signature="number(ulong,int)" remove="all"/>
+ <modify-function signature="number(qulonglong,int)" remove="all"/>
+
+ <!--### -->
+
+ <modify-function signature="operator const char*()const" remove="all"/>
+ <modify-function signature="operator const void*()const" remove="all"/>
+
+ <!--### STL compatibility functions not supported by PySide -->
+ <modify-function signature="push_back(char)" remove="all"/>
+ <modify-function signature="push_back(const QByteArray&amp;)" remove="all"/>
+ <modify-function signature="push_back(const char*)" remove="all"/>
+ <modify-function signature="push_front(char)" remove="all"/>
+ <modify-function signature="push_front(const QByteArray&amp;)" remove="all"/>
+ <modify-function signature="push_front(const char*)" remove="all"/>
+ <!--### -->
+
+ <modify-function signature="toLong(bool*,int)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*,arg"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toLongLong(bool*,int)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*,arg"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toShort(bool*,int)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*,arg"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toUInt(bool*,int)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*,arg"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toULong(bool*,int)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*,arg"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toULongLong(bool*,int)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*,arg"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toInt(bool*,int)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*,arg"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toUShort(bool*,int)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*,arg"/>
+ </inject-code>
+ </modify-function>
+ <!-- QByteArray(const char *) do the job of this constructor -->
+ <modify-function signature="toDouble(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="toFloat(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+ <add-function signature="__str__" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-str"/>
+ </add-function>
+ <add-function signature="__len__">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-len"/>
+ </add-function>
+ <add-function signature="__getitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-getitem"/>
+ </add-function>
+ <add-function signature="__mgetitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-mgetitem"/>
+ </add-function>
+ <add-function signature="__setitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-setitem"/>
+ </add-function>
+ <add-function signature="__msetitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qbytearray-msetitem"/>
+ </add-function>
+ </value-type>
+ <primitive-type name="QByteArrayView" view-on="QByteArray">
+ <conversion-rule>
+ <native-to-target file="../glue/qtcore.cpp" snippet="return-pybytes"/>
+ </conversion-rule>
+ </primitive-type>
+
+ <value-type name="QTextBoundaryFinder">
+ <enum-type name="BoundaryReason" flags="BoundaryReasons"/>
+ <enum-type name="BoundaryType"/>
+ <!-- There's no QChar in PySide -->
+ <modify-function signature="QTextBoundaryFinder(QTextBoundaryFinder::BoundaryType,const QChar*,qsizetype,unsigned char*,qsizetype)" remove="all"/>
+ </value-type>
+ <object-type name="QXmlStreamEntityResolver"/>
+
+ <object-type name="QAbstractEventDispatcher">
+ <modify-function signature="processEvents(QFlags&lt;QEventLoop::ProcessEventsFlag>)" allow-thread="yes"/>
+ <!-- Qt5: had to add this recursive object def. This was crucial to get rid of "pure virtual" -->
+ <value-type name="TimerInfo"/>
+ </object-type>
+
+ <object-type name="QAbstractNativeEventFilter">
+ <!-- see QWidget::nativeEvent(), QWindow::nativeEvent() -->
+ <modify-function signature="nativeEventFilter(const QByteArray&amp;,void*,qintptr*)">
+ <modify-argument index="3">
+ <remove-argument/>
+ <conversion-rule class="native">
+ <insert-template name="return_native_eventfilter_conversion_variables"/>
+ </conversion-rule>
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ <conversion-rule class="native">
+ <insert-template name="return_native_eventfilter_conversion"/>
+ </conversion-rule>
+ </modify-argument>
+ <inject-code position="end">
+ <insert-template name="return_native_eventfilter"/>
+ </inject-code>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QEventLoop">
+ <enum-type name="ProcessEventsFlag" flags="ProcessEventsFlags"/>
+ <modify-function signature="exec(QFlags&lt;QEventLoop::ProcessEventsFlag>)" allow-thread="yes"/>
+ <add-function signature="exec_(QFlags&lt;QEventLoop::ProcessEventsFlag> @flags@ = QEventLoop::AllEvents)" return-type="int">
+ <inject-code file="../glue/qtcore.cpp" snippet="exec_arg1"/>
+ </add-function>
+ <modify-function signature="processEvents(QFlags&lt;QEventLoop::ProcessEventsFlag>)" allow-thread="yes"/>
+ <modify-function signature="processEvents(QFlags&lt;QEventLoop::ProcessEventsFlag>,int)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QFileDevice">
+ <enum-type name="FileError"/>
+ <enum-type name="FileTime"/>
+ <enum-type name="MemoryMapFlag" flags="MemoryMapFlags"/>
+ <enum-type name="Permission" flags="Permissions"/>
+ <enum-type name="FileHandleFlag" flags="FileHandleFlags"/>
+ <extra-includes>
+ <!-- Qt5: private <include file-name="QAbstractFileEngine" location="global"/> -->
+ </extra-includes>
+ <modify-function signature="unmap(uchar*)">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="qfiledevice-unmap"/>
+ </modify-function>
+ <modify-function signature="map(qint64,qint64,QFlags&lt;QFileDevice::MemoryMapFlag&gt;)">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="qfiledevice-map"/>
+ </modify-function>
+ <modify-function signature="flush()" allow-thread="yes"/>
+ </object-type>
+
+ <object-type name="QFile">
+ <!-- PYSIDE-1499: Replace QString by pathlib.Path (qfile.h) -->
+ <modify-function signature="QFile(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="QFile(const QString &amp;,QObject *)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="setFileName(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="rename(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="link(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="copy(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="permissions(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="setPermissions(const QString &amp;,QFlags&lt;QFileDevice::Permission&gt;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <!-- PYSIDE-1499: End of insertion -->
+
+ <modify-function signature="open(QFlags&lt;QIODeviceBase::OpenModeFlag&gt;)" allow-thread="yes"/>
+ <modify-function signature="open(int,QFlags&lt;QIODeviceBase::OpenModeFlag&gt;,QFlags&lt;QFileDevice::FileHandleFlag&gt;)" allow-thread="yes"/>
+ <modify-function signature="copy(const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="copy(const QString&amp;,const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="link(const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="link(const QString&amp;,const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="remove()" allow-thread="yes"/>
+ <modify-function signature="remove(const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="rename(const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="rename(const QString&amp;,const QString&amp;)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QSaveFile"/>
+ <object-type name="QFileSelector"/>
+
+ <object-type name="QIODevice">
+ <modify-function signature="open(QFlags&lt;QIODeviceBase::OpenModeFlag>)" allow-thread="yes"/>
+ <modify-function signature="close()" allow-thread="yes"/>
+ <modify-function signature="seek(qint64)" allow-thread="yes"/>
+ <modify-function signature="readAll()" allow-thread="yes"/>
+ <modify-function signature="peek(qint64)" allow-thread="yes"/>
+ <modify-function signature="write(const QByteArray&amp;)" allow-thread="yes"/>
+ <modify-function signature="waitForReadyRead(int)" allow-thread="yes"/>
+ <modify-function signature="waitForBytesWritten(int)" allow-thread="yes"/>
+ <modify-function signature="peek(char*,qint64)" remove="all"/>
+ <add-function signature="peek(PyBuffer@buffer@,qint64@maxlen@)" return-type="qint64">
+ <modify-argument index="1" pyi-type="bytearray"/>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qiodevice-bufferedread"/>
+ </add-function>
+ <modify-function signature="read(char*,qint64)" remove="all"/>
+ <add-function signature="read(PyBuffer@buffer@,qint64@maxlen@)" return-type="qint64">
+ <modify-argument index="1" pyi-type="bytearray"/>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qiodevice-bufferedread"/>
+ </add-function>
+ <modify-function signature="readLine(char*,qint64)" remove="all"/>
+ <add-function signature="readLine(PyBuffer@buffer@,qint64@maxlen@)" return-type="qint64">
+ <modify-argument index="1" pyi-type="bytearray"/>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qiodevice-bufferedread"/>
+ </add-function>
+ <!-- ### write(str) do the job -->
+ <modify-function signature="write(const char*,qint64)" remove="all"/>
+ <modify-function signature="write(const char*)" remove="all"/>
+ <modify-function signature="getChar(char*)">
+ <modify-argument index="1">
+ <remove-argument />
+ <remove-default-expression />
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_char*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="readData(char*,qint64)">
+ <inject-code class="target" file="../glue/qtcore.cpp" snippet="qiodevice-readData"/>
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <inject-code class="native" position="end" file="../glue/qtcore.cpp" snippet="return-readData"/>
+ </modify-function>
+ <modify-function signature="readLineData(char*,qint64)">
+ <inject-code class="target" file="../glue/qtcore.cpp" snippet="qiodevice-readData"/>
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <inject-code class="native" position="end" file="../glue/qtcore.cpp" snippet="return-readData"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QIODeviceBase">
+ <enum-type name="OpenModeFlag" flags="OpenMode"/>
+ </object-type>
+ <object-type name="QCryptographicHash">
+ <enum-type name="Algorithm"/>
+ <modify-function signature="addData(const char*,qsizetype)">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="qcryptographichash-adddata"/>
+ </modify-function>
+ </object-type>
+ <value-type name="QOperatingSystemVersionBase" since="6.3">
+ <enum-type name="OSType"/>
+ </value-type>
+ <value-type name="QOperatingSystemVersionUnexported" since="6.3" generate="false"/>
+ <value-type name="QOperatingSystemVersion">
+ <modify-function signature="QOperatingSystemVersion(const QOperatingSystemVersionBase&amp;)" remove="all"/>
+ </value-type>
+ <object-type name="QLibrary">
+ <enum-type name="LoadHint" flags="LoadHints"/>
+ </object-type>
+ <object-type name="QLibraryInfo">
+ <enum-type name="LibraryPath"/>
+ <modify-function signature="build()">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qlibraryinfo_build"/>
+ </modify-function>
+ </object-type>
+ <namespace-type name="QtCoreHelper" visible="no">
+ <object-type name="QMutexLocker" copyable="no">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <!-- PYSIDE-1271: Creating locking capable objects inside sections that
+ contain allow-thread, require the classes to also allow having threads.
+ The lack of the option here, was generating a deadlock when running a
+ QMutexLocker inside a QThread::run.
+ The reason of having this change is due to the new way of handling the GIL
+ in the Qt calls on the whole PySide6 module, that started on 5.14.2-->
+ <modify-function signature="QMutexLocker(QMutex*)" allow-thread="yes">
+ <modify-argument index="1">
+ <reference-count action="set" variable-name="mutex()const0"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QMutexLocker(QRecursiveMutex*)" allow-thread="yes">
+ <modify-argument index="1">
+ <reference-count action="set" variable-name="recursiveMutex()const0"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="relock()" allow-thread="yes"/>
+ <modify-function signature="mutex()const">
+ <modify-argument index="return">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="recursiveMutex()const">
+ <modify-argument index="return">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="__enter__()" return-type="QtCoreHelper::QMutexLocker">
+ <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/>
+ </add-function>
+ <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="unlock"/>
+ </add-function>
+ </object-type>
+ <object-type name="QIOPipe"/>
+ <value-type name="QGenericArgumentHolder"/>
+ <value-type name="QGenericReturnArgumentHolder"/>
+ </namespace-type>
+
+ <!-- Qt5 addition -->
+ <object-type name="QBasicMutex">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <modify-function signature="lock()" allow-thread="yes"/>
+ <modify-function signature="tryLock()" allow-thread="yes"/>
+ </object-type>
+
+ <object-type name="QMutex">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <modify-function signature="tryLock(int)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QRecursiveMutex">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <modify-function signature="lock()" allow-thread="yes"/>
+ <modify-function signature="tryLock(int)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QRandomGenerator">
+ <modify-function signature="global()" rename="global_"/>
+ <modify-function signature="operator()()" remove="all"/>
+ <modify-function signature="generate(quint32*,quint32*)" remove="all"/>
+ </object-type>
+ <object-type name="QRandomGenerator64">
+ <modify-function signature="global()" rename="global_"/>
+ <modify-function signature="operator()()" remove="all"/>
+ </object-type>
+ <object-type name="QSemaphore">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <modify-function signature="acquire(int)" allow-thread="yes"/>
+ <modify-function signature="tryAcquire(int,int)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QSemaphoreReleaser">
+ <configuration condition="QT_CONFIG(thread)"/>
+ </object-type>
+
+ <value-type name="QSocketDescriptor">
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="qsocketdescriptor"/>
+ </value-type>
+ <object-type name="QSocketNotifier">
+ <enum-type name="Type"/>
+ <add-function signature="QSocketNotifier(PyObject*, QSocketNotifier::Type, QObject*@parent@=nullptr)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qsocketnotifier"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QTemporaryFile">
+ <extra-includes>
+ <!-- Qt5: private <include file-name="QAbstractFileEngine" location="global"/> -->
+ </extra-includes>
+ <modify-function signature="createNativeFile(QFile&amp;)" allow-thread="yes"/>
+ <modify-function signature="createNativeFile(const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="open()" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QTemporaryDir"/>
+ <object-type name="QMimeData">
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QUrl" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QTimeLine">
+ <enum-type name="Direction"/>
+ <enum-type name="State"/>
+ </object-type>
+ <object-type name="QTranslator">
+ <modify-function signature="load(const uchar*,int,QString)" allow-thread="yes">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <inject-code file="../glue/qtcore.cpp" snippet="qtranslator-load"/>
+ </modify-function>
+ <modify-function signature="translate(const char*,const char*, const char*,int)const">
+ <modify-argument index="1" pyi-type="str"/>
+ <modify-argument index="2" pyi-type="str"/>
+ <modify-argument index="3" pyi-type="Optional[str]"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QWaitCondition">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <modify-function signature="wait(QMutex*,QDeadlineTimer)" allow-thread="yes"/>
+ <modify-function signature="wait(QMutex*,unsigned long)" allow-thread="yes"/>
+ <modify-function signature="wait(QReadWriteLock*,QDeadlineTimer)" allow-thread="yes"/>
+ <modify-function signature="wait(QReadWriteLock*,unsigned long)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QFileSystemWatcher">
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QBuffer">
+ <!-- ### setData(QByteArray) do the job -->
+ <modify-function signature="setData(const char*,qsizetype)" remove="all"/>
+ <!-- Disambiguate from Qt3DRender/qbuffer.h -->
+ <include file-name="QtCore/qbuffer.h" location="global"/>
+ </object-type>
+ <object-type name="QTimer">
+ <extra-includes>
+ <include file-name="pysidestaticstrings.h" location="global"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qtimer-singleshot-functorclass"/>
+ <modify-function signature="singleShot(int,const QObject*,const char*)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qtimer-singleshot-direct-mapping"/>
+ </modify-function>
+ <add-function signature="singleShot(int@msec@,PyCallable*@functor@)" static="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qtimer-singleshot-functor"/>
+ </add-function>
+ <add-function signature="singleShot(int@msec@,const QObject*@context@,PyCallable*@functor@)" static="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qtimer-singleshot-functor-context"/>
+ </add-function>
+ </object-type>
+ <object-type name="QProcess">
+ <configuration condition="QT_CONFIG(process)"/>
+ <enum-type name="ExitStatus"/>
+ <enum-type name="InputChannelMode"/>
+ <enum-type name="ProcessChannel"/>
+ <enum-type name="ProcessChannelMode"/>
+ <enum-type name="ProcessError"/>
+ <enum-type name="ProcessState"/>
+
+ <?if !windows?>
+ <enum-type name="UnixProcessFlag" flags="UnixProcessFlags" since="6.6"/>
+ <value-type name="UnixProcessParameters" since="6.6"/>
+ <?endif?>
+
+ <modify-function signature="waitForStarted(int)" allow-thread="yes"/>
+ <modify-function signature="waitForBytesWritten(int)" allow-thread="yes"/>
+ <modify-function signature="waitForFinished(int)" allow-thread="yes"/>
+ <modify-function signature="readAllStandardOutput()" allow-thread="yes"/>
+ <modify-function signature="readAllStandardError()" allow-thread="yes"/>
+ <modify-function signature="execute(QString,QStringList)" allow-thread="yes"/>
+ <modify-function signature="startDetached(QString,QStringList,QString,qint64*)">
+ <modify-argument index="4">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, int]">
+ <replace-type modified-type="(retval, pid)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qprocess-startdetached"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QSignalMapper"/>
+
+ <object-type name="QCollatorSortKey"/>
+ <object-type name="QCollator"/>
+
+ <object-type name="QCommandLineOption">
+ <enum-type name="Flag" flags="Flags"/>
+ </object-type>
+ <object-type name="QCommandLineParser">
+ <enum-type name="OptionsAfterPositionalArgumentsMode"/>
+ <enum-type name="SingleDashWordOptionMode"/>
+ </object-type>
+
+ <object-type name="QCoreApplication">
+ <!--Qt5: gone <enum-type name="Encoding"/> -->
+ <enum-type identified-by-value="ApplicationFlags" since="4.8" revision="4800"/>
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QTranslator" location="global"/>
+ <include file-name="pysidecleanup.h" location="global"/>
+ <include file-name="pysideqapp.h" location="global"/>
+ </extra-includes>
+ <add-function signature="QCoreApplication(QStringList@args@)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qcoreapplication-1"/>
+ <inject-documentation format="target" mode="append">
+ Constructs a Qt kernel application. Kernel applications are applications
+ without a graphical user interface. These type of applications are used
+ at the console or as server processes.
+
+ The *args* argument is processed by the application, and made available
+ in a more convenient form by the :meth:`~PySide6.QtCore.QCoreApplication.arguments()`
+ method.
+ </inject-documentation>
+ </add-function>
+ <add-function signature="QCoreApplication()">
+ <inject-code file="../glue/qtcore.cpp" snippet="qcoreapplication-2"/>
+ </add-function>
+ <!-- Addition for qApp.
+ To be fixed: This function deletes a little too much ATM that is missing later
+ when creating a new qApp. -->
+ <add-function signature="shutdown()">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="moduleshutdown"/>
+ </add-function>
+
+ <!-- blocking functions -->
+ <modify-function signature="processEvents(QFlags&lt;QEventLoop::ProcessEventsFlag&gt;,int)" allow-thread="yes"/>
+ <modify-function signature="processEvents(QFlags&lt;QEventLoop::ProcessEventsFlag&gt;)" allow-thread="yes"/>
+ <modify-function signature="sendEvent(QObject*,QEvent*)" allow-thread="yes"/>
+ <modify-function signature="sendPostedEvents(QObject*,int)" allow-thread="yes"/>
+ <modify-function signature="instance()">
+ <modify-argument index="return" pyi-type="Optional[PySide6.QtCore.QCoreApplication]"/>
+ <inject-code class="target" file="../glue/qtcore.cpp" snippet="qcoreapplication-instance"/>
+ </modify-function>
+
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="int">
+ <inject-code file="../glue/qtcore.cpp" snippet="exec_"/>
+ </add-function>
+ <modify-function signature="notify(QObject*,QEvent*)" allow-thread="yes">
+ <modify-argument index="2" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="QCoreApplication(int &amp;,char **,int)" access="private"/>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="qcoreapplication-init"/>
+ <modify-function signature="postEvent(QObject*,QEvent*,int)">
+ <modify-argument index="2">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="translate(const char*,const char*,const char *,int)">
+ <modify-argument index="1" pyi-type="str"/>
+ <modify-argument index="2" pyi-type="str"/>
+ <modify-argument index="3" pyi-type="Optional[str]"/>
+ </modify-function>
+ <?if !no_QPermission?>
+ <declare-function signature="checkPermission(const QBluetoothPermission &amp; @permission@)" return-type="Qt::PermissionStatus" since="6.5" />
+ <declare-function signature="checkPermission(const QCalendarPermission &amp; @permission@)" return-type="Qt::PermissionStatus" since="6.5" />
+ <declare-function signature="checkPermission(const QCameraPermission &amp; @permission@)" return-type="Qt::PermissionStatus" since="6.5" />
+ <declare-function signature="checkPermission(const QContactsPermission &amp; @permission@)" return-type="Qt::PermissionStatus" since="6.5" />
+ <declare-function signature="checkPermission(const QLocationPermission &amp; @permission@)" return-type="Qt::PermissionStatus" since="6.5" />
+ <declare-function signature="checkPermission(const QMicrophonePermission &amp; @permission@)" return-type="Qt::PermissionStatus" since="6.5" />
+ <add-function signature="requestPermission(const QBluetoothPermission &amp; @permission@, const QObject* @context@, PyCallable* @functor@)" since="6.5">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qcoreapplication-requestpermission"/>
+ </add-function>
+ <add-function signature="requestPermission(const QCalendarPermission &amp; @permission@, const QObject* @context@, PyCallable* @functor@)" since="6.5">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qcoreapplication-requestpermission"/>
+ </add-function>
+ <add-function signature="requestPermission(const QCameraPermission &amp; @permission@, const QObject* @context@, PyCallable* @functor@)" since="6.5">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qcoreapplication-requestpermission"/>
+ </add-function>
+ <add-function signature="requestPermission(const QContactsPermission &amp; @permission@, const QObject* @context@, PyCallable* @functor@)" since="6.5">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qcoreapplication-requestpermission"/>
+ </add-function>
+ <add-function signature="requestPermission(const QLocationPermission &amp; @permission@, const QObject* @context@, PyCallable* @functor@)" since="6.5">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qcoreapplication-requestpermission"/>
+ </add-function>
+ <add-function signature="requestPermission(const QMicrophonePermission &amp; @permission@, const QObject* @context@, PyCallable* @functor@)" since="6.5">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qcoreapplication-requestpermission"/>
+ </add-function>
+ <?endif?>
+ </object-type>
+ <object-type name="QSettings">
+ <enum-type name="Format"/>
+ <enum-type name="Scope"/>
+ <enum-type name="Status"/>
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="settings-value-helpers"/>
+ <!-- PYSIDE-1010:
+ We remove the original implementation of value() to include the optional parameter -->
+ <modify-function signature="value(QAnyStringView,const QVariant&amp;)const" remove="all"/>
+ <add-function signature="value(const QString&amp;, const QVariant&amp; @defaultValue@ = {}, PyObject* @type@ = nullptr)" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qsettings-value"/>
+ <inject-documentation mode="append" format="target">
+ Custom overload that adds an optional named parameter to the function ``value()``
+ to automatically cast the type that is being returned by the function.
+
+ An example of this situation could be an ini file that contains
+ the value of a one-element list::
+
+ settings.setValue('var', ['a'])
+
+ The the ini file will be::
+
+ [General]
+ var=a # we cannot know that this is a list!
+
+ Once we read it, we could specify if we want
+ the default behavior, a str, or to cast the output
+ to a list.
+
+ settings.value('var') # Will get "a"
+ settings.value('var', type=list) # Will get ["a"]
+ </inject-documentation>
+ </add-function>
+ </object-type>
+ <object-type name="QEvent" polymorphic-id-expression="%1-&gt;type() == QEvent::None"
+ qt-register-metatype="base">
+ <enum-type name="Type" python-type="IntEnum"/>
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtcore.cpp" snippet="repr-qevent"/>
+ </add-function>
+ </object-type>
+ <object-type name="QChildEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::ChildAdded || %B-&gt;type() == QEvent::ChildPolished || %B-&gt;type() == QEvent::ChildRemoved">
+ <modify-function signature="child()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QTimerEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::Timer"/>
+ <object-type name="QDynamicPropertyChangeEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::DynamicPropertyChange"/>
+
+
+ <object-type name="QDataStream" stream="yes">
+ <enum-type name="FloatingPointPrecision" since="4.6"/>
+ <enum-type name="Status"/>
+ <enum-type name="Version" python-type="IntEnum"/>
+ <enum-type name="ByteOrder"/>
+ <extra-includes>
+ <include file-name="QtCore/QtCore" location="global"/>
+ </extra-includes>
+
+ <!-- ### Replaced by write<TYPE> methods -->
+ <modify-function signature="operator&gt;&gt;(qint8&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(bool&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(quint8&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(qint16&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(quint16&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(qint32&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(quint32&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(qint64&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(quint64&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(float&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(double&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(char*&amp;)" remove="all"/>
+ <!-- ### -->
+
+ <!-- ### Replaced by read<TYPE> methods -->
+ <modify-function signature="operator&lt;&lt;(qint8)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(bool)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(quint8)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(qint16)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(quint16)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(qint32)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(quint32)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(qint64)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(quint64)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(float)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(double)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(const char*)" remove="all"/>
+ <!-- ### -->
+ <add-function signature="operator&lt;&lt;(const QString&amp;)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeQString(const QString&amp;)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="readQString()" return-type="QString">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="writeQChar(const QChar&amp;)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="readQChar()" return-type="QChar">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="writeQStringList(const QStringList&amp;)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="readQStringList()" return-type="QStringList">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="writeQVariant(const QVariant&amp;)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="readQVariant()" return-type="QVariant">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <modify-function signature="readRawData(char*,qint64)">
+ <modify-argument index="return" pyi-type="bytes"/>
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <inject-code class="target" file="../glue/qtcore.cpp" snippet="qdatastream-readrawdata"/>
+ </modify-function>
+ <add-function signature="writeRawData(PyBuffer)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtcore.cpp" snippet="qdatastream-writerawdata-pybuffer"/>
+ </add-function>
+ <modify-function signature="writeRawData(const char*,qint64)">
+ <modify-argument index="1" pyi-type="str"/>
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <inject-code class="target" file="../glue/qtcore.cpp" snippet="qdatastream-writerawdata"/>
+ </modify-function>
+
+ <!-- Extra functions for primitive type handling -->
+ <add-function signature="readBool()" return-type="bool">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readInt8()" return-type="qint8">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readUInt8()" return-type="quint8">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readUInt16()" return-type="quint16">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readInt16()" return-type="qint16">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readInt32()" return-type="qint32">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readUInt32()" return-type="quint32">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readInt64()" return-type="qint64">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readUInt64()" return-type="quint64">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readFloat()" return-type="float">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readDouble()" return-type="qreal">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+ <add-function signature="readString()" return-type="QString">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-read-method"/>
+ </add-function>
+
+ <add-function signature="writeBool(bool)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeInt8(qint8)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeUInt8(quint8)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeUInt16(quint16)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeInt16(qint16)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeInt32(qint32)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeUInt32(quint32)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeInt64(qint64)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeUInt64(quint64)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeFloat(float)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeDouble(qreal)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <add-function signature="writeString(QString)">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="stream-write-method"/>
+ </add-function>
+ <modify-function signature="readBytes(char*&amp;,qint64&amp;)">
+ <modify-argument index="return">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qdatastream-read-bytes"/>
+ </modify-function>
+ <modify-function signature="readBytes(char*&amp;,uint&amp;)" remove="all"/>
+
+ <modify-function signature="writeBytes(const char*,qint64)">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ <conversion-rule class="native">
+ <insert-template name="pybuffer_const_char"/>
+ </conversion-rule>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ <conversion-rule class="native">
+ <insert-template name="uint_remove"/>
+ </conversion-rule>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <value-type name="QTextStreamManipulator" default-constructor="QTextStreamManipulator(0, 0)">
+ <!-- Since exec() here doesn't need an allow-threads, we don't modify the original -->
+ <add-function signature="exec_(QTextStream &amp;)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qtextstreammanipulator-exec"/>
+ </add-function>
+ </value-type>
+ <object-type name="QTextStream" stream="yes">
+ <enum-type name="FieldAlignment"/>
+ <enum-type name="NumberFlag" flags="NumberFlags"/>
+ <enum-type name="RealNumberNotation"/>
+ <enum-type name="Status"/>
+ <!-- Removed because it expect QString to be mutable -->
+ <modify-function signature="QTextStream(QString*,QFlags&lt;QIODeviceBase::OpenModeFlag&gt;)" remove="all"/>
+ <!-- Qt5.5: Removed because it expect QString to be mutable -->
+ <modify-function signature="readLineInto(QString*,qint64)"/>
+ <!-- Removed because we use the non-const version -->
+ <modify-function signature="QTextStream(const QByteArray&amp;,QFlags&lt;QIODeviceBase::OpenModeFlag&gt;)" remove="all"/>
+
+ <!-- Removed because it expect QString to be mutable -->
+ <modify-function signature="setString(QString*,QFlags&lt;QIODeviceBase::OpenModeFlag&gt;)" remove="all"/>
+
+ <modify-function signature="operator&lt;&lt;(const void*)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(float)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(qlonglong)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(qulonglong)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(short)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(int)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(unsigned int)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(unsigned short)" remove="all"/>
+ <modify-function signature="operator&lt;&lt;(const char*)" remove="all"/>
+
+ <modify-function signature="operator&gt;&gt;(char*)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(char&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(float&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(double&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(qlonglong&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(qulonglong&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(long&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(int&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(short&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(unsigned long&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(unsigned int&amp;)" remove="all"/>
+ <modify-function signature="operator&gt;&gt;(unsigned short&amp;)" remove="all"/>
+ <!-- Removed because it expect QChar to be mutable -->
+ <modify-function signature="operator&gt;&gt;(QChar&amp;)" remove="all"/>
+ <!-- Removed because it expect QString to be mutable -->
+ <modify-function signature="operator&gt;&gt;(QString&amp;)" remove="all"/>
+
+ <modify-function signature="string()const">
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="return-qstring-ref"/>
+ </modify-function>
+
+ <modify-function signature="flush()" allow-thread="yes"/>
+ <modify-function signature="read(qint64)" allow-thread="yes"/>
+ <modify-function signature="readLine(qint64)" allow-thread="yes"/>
+ <modify-function signature="readAll()" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QStandardPaths">
+ <enum-type name="StandardLocation"/>
+ <enum-type name="LocateOption" flags="LocateOptions"/>
+ </object-type>
+ <object-type name="QSystemSemaphore">
+ <configuration condition="#ifndef QT_NO_SYSTEMSEMAPHORE"/>
+ <enum-type name="AccessMode"/>
+ <enum-type name="SystemSemaphoreError"/>
+ </object-type>
+
+ <object-type name="QThreadPool">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <modify-function signature="clear()" allow-thread="yes"/>
+ <modify-function signature="activeThreadCount()const" allow-thread="yes"/>
+ <modify-function signature="releaseThread()" allow-thread="yes"/>
+ <modify-function signature="reserveThread()" allow-thread="yes"/>
+ <modify-function signature="setMaxThreadCount(int)" allow-thread="yes"/>
+ <modify-function signature="waitForDone(int)" allow-thread="yes"/>
+ <modify-function signature="start(QRunnable*,int)" allow-thread="yes">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="start(PyCallable,int @priority@=0)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtcore.cpp"
+ snippet="std-function-void-lambda"/>
+ <inject-code class="target" position="beginning"
+ file="../glue/qtcore.cpp"
+ snippet="qthreadpool-start"/>
+ </add-function>
+ <modify-function signature="tryStart(QRunnable*)" allow-thread="yes">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="tryStart(PyCallable)" return-type="bool">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtcore.cpp"
+ snippet="std-function-void-lambda"/>
+ <inject-code class="target" position="beginning"
+ file="../glue/qtcore.cpp"
+ snippet="qthreadpool-trystart"/>
+ </add-function>
+ <modify-function signature="tryTake(QRunnable*)" allow-thread="yes"/>
+
+ <modify-function signature="globalInstance()" >
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="releaseownership"/>
+ </modify-function>
+ </object-type>
+ <value-type name="QXmlStreamAttribute"/>
+ <value-type name="QXmlStreamAttributes">
+ <modify-function signature="push_back(QXmlStreamAttribute)" remove="all"/>
+ <modify-function signature="pop_back()" remove="all"/>
+ <modify-function signature="push_front(QXmlStreamAttribute)" remove="all"/>
+ <modify-function signature="pop_front()" remove="all"/>
+ <modify-function signature="toList()const" remove="all"/>
+ <!-- Remove methods from QList -->
+ <modify-function signature="fromList(const QList&lt;QXmlStreamAttribute&gt; &amp;)" remove="all"/>
+ <modify-function signature="operator+=(QVector&lt;QXmlStreamAttribute&gt;)" remove="all"/>
+ <!-- Expose operator==, != inherited from QList, which the parser does
+ not see due to the TMP expression of the return type. -->
+ <add-function signature="operator==(const QXmlStreamAttributes&amp;)" return-type="bool"/>
+ <add-function signature="operator!=(const QXmlStreamAttributes&amp;)" return-type="bool"/>
+ </value-type>
+ <value-type name="QXmlStreamNamespaceDeclaration"/>
+ <value-type name="QXmlStreamNotationDeclaration"/>
+ <value-type name="QXmlStreamEntityDeclaration"/>
+ <object-type name="QXmlStreamReader">
+ <enum-type name="Error"/>
+ <enum-type name="TokenType"/>
+ <enum-type name="ReadElementTextBehaviour" since="4.6"/>
+ </object-type>
+ <object-type name="QXmlStreamWriter">
+ <!-- Removed because it expect QString to be mutable -->
+ <modify-function signature="QXmlStreamWriter(QString*)" remove="all"/>
+ </object-type>
+ <value-type name="QModelIndex">
+ <modify-function signature="internalPointer()const">
+ <modify-argument index="return" pyi-type="Any"/>
+ <inject-code class="target" position="beginning">
+ <insert-template name="return_internal_pointer" />
+ </inject-code>
+ </modify-function>
+ <modify-function signature="model()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+
+ <object-type name="QFutureInterfaceBase">
+ <configuration condition="QT_CONFIG(future)"/>
+ <enum-type name="State"/>
+ <enum-type name="CancelMode" since="6.3"/>
+ </object-type>
+ <value-type name="QFuture" generate="no">
+ <include file-name="QtCore/qfuture.h" location="global"/>
+ <configuration condition="QT_CONFIG(future)"/>
+ <modify-function signature="waitForFinished()" allow-thread="yes"/>
+ </value-type>
+ <object-type name="QFutureWatcherBase" generate="no">
+ <configuration condition="QT_CONFIG(future)"/>
+ <modify-function signature="futureInterface()" remove="all"/>
+ <modify-function signature="futureInterface() const" remove="all"/>
+ </object-type>
+ <object-type name="QFutureWatcher" generate="no">
+ <include file-name="QtCore/qfuturewatcher.h" location="global"/>
+ <configuration condition="QT_CONFIG(future)"/>
+ </object-type>
+
+ <!--// FIXME PYSIDE 7: Remove in favor of QtCoreHelper::QGenericArgumentHolder for
+ QMetaObject.invokeMethod? It was left as is in case someone has some hack
+ with a void pointer for this, but it does not really make sense (PYSIDE-1898). -->
+ <value-type name="QGenericArgument">
+ <include file-name="qobjectdefs.h" location="global"/>
+ </value-type>
+
+ <value-type name="QGenericReturnArgument">
+ <include file-name="qobjectdefs.h" location="global"/>
+ </value-type>
+
+ <object-type name="QMessageLogContext"/>
+
+ <value-type name="QMetaMethod">
+ <extra-includes>
+ <include file-name="pysidesignal.h" location="global"/>
+ <include file-name="glue/core_snippets_p.h" location="local"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetamethod-invoke-helpers"/>
+ <enum-type name="Access"/>
+ <enum-type name="MethodType"/>
+ <add-function signature="fromSignal(PySideSignalInstance@signal@)"
+ return-type="QMetaMethod" static="true">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetamethod-from-signal"/>
+ <inject-documentation format="target" mode="append">
+ Returns the meta-method that corresponds to the given signal, or an invalid QMetaMethod
+ if signal is not a signal of the class.
+ </inject-documentation>
+ </add-function>
+ <add-function signature="invoke(QObject*@object@,Qt::ConnectionType@type@,
+ QtCoreHelper::QGenericReturnArgumentHolder@ret@,
+ QtCoreHelper::QGenericArgumentHolder@val0@={},
+ QtCoreHelper::QGenericArgumentHolder@val1@={},
+ QtCoreHelper::QGenericArgumentHolder@val2@={},
+ QtCoreHelper::QGenericArgumentHolder@val3@={},
+ QtCoreHelper::QGenericArgumentHolder@val4@={},
+ QtCoreHelper::QGenericArgumentHolder@val5@={},
+ QtCoreHelper::QGenericArgumentHolder@val6@={},
+ QtCoreHelper::QGenericArgumentHolder@val7@={},
+ QtCoreHelper::QGenericArgumentHolder@val8@={},
+ QtCoreHelper::QGenericArgumentHolder@val9@={})"
+ return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetamethod-invoke-conn-type-return-arg"/>
+ </add-function>
+ <add-function signature="invoke(QObject*@object@,
+ QtCoreHelper::QGenericReturnArgumentHolder@ret@,
+ QtCoreHelper::QGenericArgumentHolder@val0@={},
+ QtCoreHelper::QGenericArgumentHolder@val1@={},
+ QtCoreHelper::QGenericArgumentHolder@val2@={},
+ QtCoreHelper::QGenericArgumentHolder@val3@={},
+ QtCoreHelper::QGenericArgumentHolder@val4@={},
+ QtCoreHelper::QGenericArgumentHolder@val5@={},
+ QtCoreHelper::QGenericArgumentHolder@val6@={},
+ QtCoreHelper::QGenericArgumentHolder@val7@={},
+ QtCoreHelper::QGenericArgumentHolder@val8@={},
+ QtCoreHelper::QGenericArgumentHolder@val9@={})"
+ return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetamethod-invoke-return-arg"/>
+ </add-function>
+ <add-function signature="invoke(QObject*@object@,Qt::ConnectionType@type@,
+ QtCoreHelper::QGenericArgumentHolder@val0@={},
+ QtCoreHelper::QGenericArgumentHolder@val1@={},
+ QtCoreHelper::QGenericArgumentHolder@val2@={},
+ QtCoreHelper::QGenericArgumentHolder@val3@={},
+ QtCoreHelper::QGenericArgumentHolder@val4@={},
+ QtCoreHelper::QGenericArgumentHolder@val5@={},
+ QtCoreHelper::QGenericArgumentHolder@val6@={},
+ QtCoreHelper::QGenericArgumentHolder@val7@={},
+ QtCoreHelper::QGenericArgumentHolder@val8@={},
+ QtCoreHelper::QGenericArgumentHolder@val9@={})"
+ return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetamethod-invoke-conn-type"/>
+ </add-function>
+ <add-function signature="invoke(QObject*@object@,
+ QtCoreHelper::QGenericArgumentHolder@val0@={},
+ QtCoreHelper::QGenericArgumentHolder@val1@={},
+ QtCoreHelper::QGenericArgumentHolder@val2@={},
+ QtCoreHelper::QGenericArgumentHolder@val3@={},
+ QtCoreHelper::QGenericArgumentHolder@val4@={},
+ QtCoreHelper::QGenericArgumentHolder@val5@={},
+ QtCoreHelper::QGenericArgumentHolder@val6@={},
+ QtCoreHelper::QGenericArgumentHolder@val7@={},
+ QtCoreHelper::QGenericArgumentHolder@val8@={},
+ QtCoreHelper::QGenericArgumentHolder@val9@={})"
+ return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetamethod-invoke"/>
+ </add-function>
+ <!-- This isn't part of Qt public API -->
+ <modify-function signature="attributes()const" remove="all"/>
+ <modify-function signature="getParameterTypes(int*)const" remove="all"/>
+ <modify-field name="mobj" remove="yes"/>
+ </value-type>
+ <object-type name="QMetaObject">
+ <enum-type name="Call"/>
+ <include file-name="qobjectdefs.h" location="global"/>
+ <extra-includes>
+ <include file-name="dynamicqmetaobject.h" location="global"/>
+ <include file-name="pysidemetatype.h" location="global"/>
+ <include file-name="glue/core_snippets_p.h" location="local"/>
+ <include file-name="pysideutils.h" location="global"/> <!-- QString conversion -->
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetaobject-invokemethod-helpers"/>
+ <!-- This isn't part of Qt public API -->
+ <modify-function signature="connect(const QObject*,int,const QObject*,int,int,int*)" remove="all"/>
+ <value-type name="Connection" operator-bool="true">
+ <include file-name="qobjectdefs.h" location="global"/>
+ <!-- Declare operator bool, as the class uses some RestrictedBool trick -->
+ <declare-function signature="operator bool() const" return-type="bool"/>
+ </value-type>
+ <modify-function signature="^invokeMethod\(" allow-thread="yes"/>
+ <add-function signature="invokeMethod(QObject*@object@,const char *@member@,Qt::ConnectionType@type@,
+ QtCoreHelper::QGenericArgumentHolder@val0@={},
+ QtCoreHelper::QGenericArgumentHolder@val1@={},
+ QtCoreHelper::QGenericArgumentHolder@val2@={},
+ QtCoreHelper::QGenericArgumentHolder@val3@={},
+ QtCoreHelper::QGenericArgumentHolder@val4@={},
+ QtCoreHelper::QGenericArgumentHolder@val5@={},
+ QtCoreHelper::QGenericArgumentHolder@val6@={},
+ QtCoreHelper::QGenericArgumentHolder@val7@={},
+ QtCoreHelper::QGenericArgumentHolder@val8@={},
+ QtCoreHelper::QGenericArgumentHolder@val9@={})"
+ static="yes" return-type="bool">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetaobject-invokemethod-conn-type-arg"/>
+ </add-function>
+ <add-function signature="invokeMethod(QObject*@object@,const char *@member@,
+ QtCoreHelper::QGenericArgumentHolder@val0@={},
+ QtCoreHelper::QGenericArgumentHolder@val1@={},
+ QtCoreHelper::QGenericArgumentHolder@val2@={},
+ QtCoreHelper::QGenericArgumentHolder@val3@={},
+ QtCoreHelper::QGenericArgumentHolder@val4@={},
+ QtCoreHelper::QGenericArgumentHolder@val5@={},
+ QtCoreHelper::QGenericArgumentHolder@val6@={},
+ QtCoreHelper::QGenericArgumentHolder@val7@={},
+ QtCoreHelper::QGenericArgumentHolder@val8@={},
+ QtCoreHelper::QGenericArgumentHolder@val9@={})"
+ static="yes" return-type="bool">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetaobject-invokemethod-arg"/>
+ </add-function>
+ <add-function signature="invokeMethod(QObject*@object@,const char *@member@,Qt::ConnectionType@type@,
+ QtCoreHelper::QGenericReturnArgumentHolder@ret@,
+ QtCoreHelper::QGenericArgumentHolder@val0@={},
+ QtCoreHelper::QGenericArgumentHolder@val1@={},
+ QtCoreHelper::QGenericArgumentHolder@val2@={},
+ QtCoreHelper::QGenericArgumentHolder@val3@={},
+ QtCoreHelper::QGenericArgumentHolder@val4@={},
+ QtCoreHelper::QGenericArgumentHolder@val5@={},
+ QtCoreHelper::QGenericArgumentHolder@val6@={},
+ QtCoreHelper::QGenericArgumentHolder@val7@={},
+ QtCoreHelper::QGenericArgumentHolder@val8@={},
+ QtCoreHelper::QGenericArgumentHolder@val9@={})"
+ static="yes" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetaobject-invokemethod-conn-type-return-arg"/>
+ </add-function>
+ <add-function signature="invokeMethod(QObject*@object@,const char *@member@,
+ QtCoreHelper::QGenericReturnArgumentHolder@ret@,
+ QtCoreHelper::QGenericArgumentHolder@val0@={},
+ QtCoreHelper::QGenericArgumentHolder@val1@={},
+ QtCoreHelper::QGenericArgumentHolder@val2@={},
+ QtCoreHelper::QGenericArgumentHolder@val3@={},
+ QtCoreHelper::QGenericArgumentHolder@val4@={},
+ QtCoreHelper::QGenericArgumentHolder@val5@={},
+ QtCoreHelper::QGenericArgumentHolder@val6@={},
+ QtCoreHelper::QGenericArgumentHolder@val7@={},
+ QtCoreHelper::QGenericArgumentHolder@val8@={},
+ QtCoreHelper::QGenericArgumentHolder@val9@={})"
+ static="yes" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp"
+ snippet="qmetaobject-invokemethod-return-arg"/>
+ </add-function>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qmetaobject-repr"/>
+ </add-function>
+ <modify-function signature="indexOfClassInfo(const char *)">
+ <modify-argument index="1" pyi-type="str"/>
+ </modify-function>
+ <modify-function signature="indexOfConstructor(const char *)">
+ <modify-argument index="1" pyi-type="str"/>
+ </modify-function>
+ <modify-function signature="indexOfEnumerator(const char *)">
+ <modify-argument index="1" pyi-type="str"/>
+ </modify-function>
+ <modify-function signature="indexOfMethod(const char *)">
+ <modify-argument index="1" pyi-type="str"/>
+ </modify-function>
+ <modify-function signature="indexOfProperty(const char *)">
+ <modify-argument index="1" pyi-type="str"/>
+ </modify-function>
+ <modify-function signature="indexOfSignal(const char *)">
+ <modify-argument index="1" pyi-type="str"/>
+ </modify-function>
+ <modify-function signature="indexOfSlot(const char *)">
+ <modify-argument index="1" pyi-type="str"/>
+ </modify-function>
+ </object-type>
+ <value-type name="QMetaProperty" >
+ <!-- This isn't part of Qt public API -->
+ <modify-function signature="enclosingMetaObject()const" remove="all"/>
+ <modify-function signature="write(QObject*,const QVariant &amp;)const">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qmetaproperty_write_enum"/>
+ </modify-function>
+ </value-type>
+ <value-type name="QMetaClassInfo">
+ <!-- This isn't part of Qt public API -->
+ <modify-function signature="enclosingMetaObject()const" remove="all"/>
+ </value-type>
+
+ <value-type name="QMetaEnum">
+ <modify-function signature="keyToValue(const char*,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="keysToValue(const char*,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <!-- This isn't part of Qt public API -->
+ <modify-function signature="enclosingMetaObject()const" remove="all"/>
+ </value-type>
+
+ <!-- From Qt4.6 -->
+ <object-type name="QAbstractAnimation" since="4.6">
+ <enum-type name="DeletionPolicy"/>
+ <enum-type name="Direction"/>
+ <enum-type name="State"/>
+ </object-type>
+
+ <object-type name="QAnimationGroup" since="4.6">
+ <modify-function signature="addAnimation(QAbstractAnimation*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="insertAnimation(int,QAbstractAnimation*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="removeAnimation(QAbstractAnimation*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="takeAnimation(int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="clear()" >
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qanimationgroup-clear"/>
+ </modify-function>
+ </object-type>
+
+ <!-- We will use inject code to implement the function below -->
+ <rejection class="QEasingCurve" function-name="setCustomType"/>
+ <rejection class="QEasingCurve" function-name="customType"/>
+ <value-type name="QEasingCurve" since="4.6">
+ <extra-includes>
+ <include file-name="pysideweakref.h" location="global"/>
+ <include file-name="glue/qeasingcurve_glue.h" location="local"/>
+ </extra-includes>
+ <inject-code file="../glue/qtcore.cpp" snippet="qeasingcurve"/>
+ <enum-type name="Type"/>
+ <add-function signature="setCustomType(PyObject*)">
+ <inject-code file="../glue/qtcore.cpp" snippet="qeasingcurve-setcustomtype"/>
+ </add-function>
+ <add-function signature="customType()" return-type="PyObject">
+ <inject-code file="../glue/qtcore.cpp" snippet="qeasingcurve-customtype"/>
+ </add-function>
+ </value-type>
+
+ <value-type name="QJsonArray">
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ </extra-includes>
+ </value-type>
+
+ <value-type name="QJsonDocument">
+ <enum-type name="JsonFormat"/>
+ </value-type>
+
+ <rejection class="QJsonDocument" field-name="BinaryFormatTag"/>
+
+ <value-type name="QJsonParseError">
+ <enum-type name="ParseError"/>
+ </value-type>
+
+ <value-type name="QJsonValue">
+ <enum-type name="Type"/>
+ <extra-includes>
+ <include file-name="QVariant" location="global"/>
+ <include file-name="QJsonArray" location="global"/>
+ <include file-name="QJsonObject" location="global"/>
+ </extra-includes>
+ </value-type>
+
+ <value-type name="QMargins" since="4.6"/>
+ <value-type name="QMarginsF"/>
+
+ <object-type name="QParallelAnimationGroup" since="4.6"/>
+
+ <object-type name="QPauseAnimation" since="4.6"/>
+
+ <value-type name="QProcessEnvironment" since="4.6">
+ <configuration condition="QT_CONFIG(processenvironment)"/>
+ <enum-type name="Initialization" since="6.3"/>
+ </value-type>
+
+ <object-type name="QPropertyAnimation" since="4.6"/>
+
+ <object-type name="QSequentialAnimationGroup" since="4.6"/>
+
+ <object-type name="QVariantAnimation" since="4.6"/>
+
+ <value-type name="QVersionNumber">
+ <modify-function signature="fromString(QAnyStringView,qsizetype*)">
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+
+ <!-- From Qt4.6 ^^^ -->
+
+ <add-function signature="SIGNAL(const char*)" return-type="str">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-signal"/>
+ <modify-argument index="1" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="SLOT(const char*)" return-type="str">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-slot"/>
+ <modify-argument index="1" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="QT_TR_NOOP(PyObject)" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="return_argument"><replace from="#" to="1"/></insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QT_TR_NOOP_UTF8(PyObject)" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="return_argument"><replace from="#" to="1"/></insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QT_TRANSLATE_NOOP(PyObject,PyObject)" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="return_argument"><replace from="#" to="2"/></insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QT_TRANSLATE_NOOP3(PyObject,PyObject,PyObject)" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="return_argument"><replace from="#" to="2"/></insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QT_TRANSLATE_NOOP_UTF8(PyObject)" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="return_argument"><replace from="#" to="1"/></insert-template>
+ </inject-code>
+ </add-function>
+
+ <inject-code class="native" position="beginning" file="../glue/qtcore.cpp" snippet="qt-registerresourcedata"/>
+ <add-function signature="qRegisterResourceData(int,PyBytes,PyBytes,PyBytes)" return-type="bool">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-qregisterresourcedata"/>
+ </add-function>
+ <add-function signature="qUnregisterResourceData(int,PyBytes,PyBytes,PyBytes)" return-type="bool">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qt-qunregisterresourcedata"/>
+ </add-function>
+
+ <object-type name="QFactoryInterface"/>
+ <object-type name="QRunnable">
+ <configuration condition="QT_CONFIG(thread)"/>
+ <add-function signature="create(PyObject* @functionToRun@)" static="yes" return-type="QRunnable*">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qrunnable_create"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QPluginLoader"/>
+ <object-type name="QStringListModel"/>
+
+ <object-type name="QSharedMemory">
+ <configuration condition="#ifndef QT_NO_SHAREDMEMORY"/>
+ <enum-type name="AccessMode"/>
+ <enum-type name="SharedMemoryError"/>
+ <modify-function signature="data()">
+ <inject-code class="target" position="end"
+ file="../glue/qtcore.cpp" snippet="qsharedmemory_data_readwrite"/>
+ </modify-function>
+ <modify-function signature="constData()const">
+ <inject-code class="target" position="end"
+ file="../glue/qtcore.cpp" snippet="qsharedmemory_data_readonly"/>
+ </modify-function>
+ <modify-function signature="data()const" remove="all"/>
+ </object-type>
+
+ <object-type name="QStringConverterBase">
+ <enum-type name="Flag" flags="Flags"/>
+ <object-type name="State"/>
+ </object-type>
+ <object-type name="QStringConverter">
+ <enum-type name="Encoding"/>
+ </object-type>
+ <object-type name="QStringEncoder">
+ <modify-function signature="appendToBuffer(char*,QStringView)" remove="all"/>
+ </object-type>
+ <object-type name="QStringDecoder"/>
+
+ <object-type name="QSysInfo">
+ <enum-type name="Endian"/>
+ <enum-type name="Sizes"/>
+ </object-type>
+
+ <object-type name="QLoggingCategory"/>
+
+ <add-function signature="qCDebug(PyObject *, const char *)">
+ <extra-includes>
+ <include file-name="qloggingcategory.h" location="global" />
+ </extra-includes>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qloggingcategory_to_cpp">
+ qCDebug((*category), "%s", %2);
+ </inject-code>
+ </add-function>
+
+ <add-function signature="qCCritical(PyObject *, const char *)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qloggingcategory_to_cpp">
+ qCCritical((*category), "%s", %2);
+ </inject-code>
+ </add-function>
+
+ <add-function signature="qCInfo(PyObject *, const char *)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qloggingcategory_to_cpp">
+ qCInfo((*category), "%s", %2);
+ </inject-code>
+ </add-function>
+
+ <add-function signature="qCWarning(PyObject *, const char *)">
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qloggingcategory_to_cpp">
+ qCWarning((*category), "%s", %2);
+ </inject-code>
+ </add-function>
+
+ <suppress-warning text="^.*enum 'Qt::Initialization' does not have a type entry.*$"/>
+ <suppress-warning text="^.*Enum 'QRandomGenerator::System'.*does not have a type entry.*$"/>
+
+ <suppress-warning text="^Anonymous enum.*does not have a type entry.*$"/>
+ <suppress-warning text="Visibility of function '*' modified in class '*'"/>
+ <suppress-warning text="Shadowing: *"/>
+ <suppress-warning text="^namespace '.*' does not have a type entry.*$"/>
+ <!-- QCborStreamReader: Suppress warnings about 32/64bit signatures not found depending on qsizetype -->
+ <suppress-warning text="^signature 'readStringChunk\(char.*in 'QCborStreamReader' not found.*$"/>
+
+ <!-- TODO: this need be removed -->
+ <suppress-warning text="^skipping.*function '.*', unmatched return type '.*$"/>
+ <suppress-warning text="^skipping.*function '.*', unmatched type '.*$"/>
+ <suppress-warning text="skipping protected field 'QStringConverter::iface' with unmatched type 'QStringConverter::Interface'"/>
+ <suppress-warning text="^skipping public field 'Qt::.*' with unmatched type 'Qt::.*ordering'$"/>
+ <suppress-warning text="skipping public field 'Qt::Uninitialized' with unmatched type 'Qt::Initialization'"/>
+ <suppress-warning text="skipping public field 'State::clearFn' with unmatched type 'void'"/>
+ <suppress-warning text="template baseclass 'QListSpecialMethods&lt;T&gt;' of 'QList' is not known"/>
+ <suppress-warning text="^.*inherits from a non polymorphic type.*QIODeviceBase.*type discovery based on RTTI is impossible.*$"/>
+ <suppress-warning text="Base class 'QOperatingSystemVersionUnexported' of class 'QOperatingSystemVersion' not found in the type system for setting up inheritance."/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtCore/typesystem_core_win.xml b/sources/pyside6/PySide6/QtCore/typesystem_core_win.xml
new file mode 100644
index 000000000..e2984afd9
--- /dev/null
+++ b/sources/pyside6/PySide6/QtCore/typesystem_core_win.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtCore">
+ <extra-includes>
+ <include file-name="QtCore/qt_windows.h" location="global"/>
+ </extra-includes>
+ <primitive-type name="HWND">
+ <!-- Qt5: Add this include there to insert ti in the global qtcore header (needed by qprocess_wrapper) -->
+ <include file-name="wtypes.h" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ return PyCapsule_New(%in, nullptr, nullptr);
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PyNone">
+ %out = 0;
+ </add-conversion>
+ <add-conversion check="checkPyCapsuleOrPyCObject(%in)" type="PyObject">
+ %out = (%OUTTYPE)PyCapsule_GetPointer(%in, nullptr);
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <inject-code class="native" position="beginning">
+ <insert-template name="checkPyCapsuleOrPyCObject_func"/>
+ </inject-code>
+
+ <object-type name="QWinEventNotifier"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtDBus/CMakeLists.txt b/sources/pyside6/PySide6/QtDBus/CMakeLists.txt
new file mode 100644
index 000000000..5ee8dc67c
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDBus/CMakeLists.txt
@@ -0,0 +1,54 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtDBus)
+
+set(QtDBus_SRC
+ ${QtDBus_GEN_DIR}/qdbus_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusabstractadaptor_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusabstractinterface_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusabstractinterfacebase_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusargument_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusconnection_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusconnectioninterface_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbuscontext_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbuserror_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusinterface_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusmessage_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusobjectpath_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbuspendingcall_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbuspendingcallwatcher_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qtdbushelper_qdbusreply_wrapper.cpp
+ #${QtDBus_GEN_DIR}/qdbuspendingreply_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusserver_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusservicewatcher_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbussignature_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusunixfiledescriptor_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusvariant_wrapper.cpp
+ ${QtDBus_GEN_DIR}/qdbusvirtualobject_wrapper.cpp
+# module is always needed
+ ${QtDBus_GEN_DIR}/qtdbus_module_wrapper.cpp
+)
+
+configure_file("${QtDBus_SOURCE_DIR}/QtDBus_global.post.h.in"
+ "${QtDBus_BINARY_DIR}/QtDBus_global.post.h" @ONLY)
+
+set(QtDBus_include_dirs ${QtDBus_SOURCE_DIR}
+ ${QtDBus_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}DBus_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtDBus_libraries pyside6 ${Qt${QT_MAJOR_VERSION}DBus_LIBRARIES})
+
+set(QtDBus_deps QtCore)
+
+create_pyside_module(NAME QtDBus
+ INCLUDE_DIRS QtDBus_include_dirs
+ LIBRARIES QtDBus_libraries
+ DEPS QtDBus_deps
+ TYPESYSTEM_PATH QtDBus_SOURCE_DIR
+ SOURCES QtDBus_SRC)
+
+install(FILES ${pyside6_SOURCE_DIR}/qtdbushelper.h DESTINATION include/PySide6/QtDBus)
diff --git a/sources/pyside6/PySide6/QtDBus/QtDBus_global.post.h.in b/sources/pyside6/PySide6/QtDBus/QtDBus_global.post.h.in
new file mode 100644
index 000000000..299d6bdb1
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDBus/QtDBus_global.post.h.in
@@ -0,0 +1 @@
+#include <qtdbushelper.h>
diff --git a/sources/pyside6/PySide6/QtDBus/typesystem_dbus.xml b/sources/pyside6/PySide6/QtDBus/typesystem_dbus.xml
new file mode 100644
index 000000000..ebed22257
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDBus/typesystem_dbus.xml
@@ -0,0 +1,115 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtDBus"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+
+ <namespace-type name="QDBus">
+ <enum-type name="CallMode"/>
+ </namespace-type>
+
+ <object-type name="QDBusAbstractAdaptor"/>
+ <object-type name="QDBusAbstractInterfaceBase"/>
+ <object-type name="QDBusAbstractInterface">
+ <!-- Those are template argument lists (see also callWithArgumentList() -->
+ <declare-function signature="call(const QString&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(const QString&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(const QString&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(const QString&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(QDBus::CallMode,const QString&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(QDBus::CallMode,const QString&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(QDBus::CallMode,const QString&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(QDBus::CallMode,const QString&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(QDBus::CallMode,const QString&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(QDBus::CallMode,const QString&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(QDBus::CallMode,const QString&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ <declare-function signature="call(QDBus::CallMode,const QString&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;,const QVariant&amp;)"
+ return-type="QDBusMessage"/>
+ </object-type>
+ <value-type name="QDBusArgument">
+ <enum-type name="ElementType"/>
+ </value-type>
+ <value-type name="QDBusConnection">
+ <enum-type name="BusType"/>
+ <enum-type name="ConnectionCapability" flags="ConnectionCapabilities"/>
+ <enum-type name="RegisterOption" flags="RegisterOptions"/>
+ <enum-type name="UnregisterMode"/>
+ <enum-type name="VirtualObjectRegisterOption" flags="VirtualObjectRegisterOptions"/>
+ <modify-function signature="interface()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <!-- PYSIDE-2547, hangs -->
+ <modify-function signature="^connect\(.*\)$" allow-thread="yes"/>
+ </value-type>
+ <object-type name="QDBusConnectionInterface">
+ <enum-type name="RegisterServiceReply"/>
+ <enum-type name="ServiceQueueOptions"/>
+ <enum-type name="ServiceReplacementOptions"/>
+ <!-- Original functions are rejected since they return ::QDBusReply<T> -->
+ <declare-function signature="registeredServiceNames()const"
+ return-type="QtDBusHelper::QDBusReply"/>
+ <declare-function signature="registerService(const QString&amp;,QDBusConnectionInterface::ServiceQueueOptions,QDBusConnectionInterface::ServiceReplacementOptions)"
+ return-type="QtDBusHelper::QDBusReply"/>
+ <declare-function signature="activatableServiceNames()const"
+ return-type="QtDBusHelper::QDBusReply"/>
+ <declare-function signature="serviceOwner(const QString&amp;)const"
+ return-type="QtDBusHelper::QDBusReply"/>
+ <declare-function signature="isServiceRegistered(const QString&amp;)const"
+ return-type="QtDBusHelper::QDBusReply"/>
+ <declare-function signature="unregisterService(const QString&amp;)"
+ return-type="QtDBusHelper::QDBusReply"/>
+ <declare-function signature="servicePid(const QString&amp;)const"
+ return-type="QtDBusHelper::QDBusReply"/>
+ <declare-function signature="serviceUid(const QString&amp;)const"
+ return-type="QtDBusHelper::QDBusReply"/>
+ <declare-function signature="startService(const QString&amp;)"
+ return-type="QtDBusHelper::QDBusReply"/>
+ </object-type>
+ <value-type name="QDBusContext"/>
+ <value-type name="QDBusError">
+ <enum-type name="ErrorType"/>
+ </value-type>
+ <object-type name="QDBusInterface" qt-metaobject="no">
+ <inject-documentation format="target" mode="append">
+ DBus signals can be captured with string-based connections
+ (see :ref:`signals-and-slots-strings`).
+ </inject-documentation>
+ </object-type>
+ <value-type name="QDBusMessage">
+ <enum-type name="MessageType"/>
+ </value-type>
+ <value-type name="QDBusObjectPath"/>
+ <object-type name="QDBusPendingCall"/>
+ <object-type name="QDBusPendingCallWatcher"/>
+
+ <namespace-type name="QtDBusHelper" visible="no">
+ <object-type name="QDBusReply"/>
+ </namespace-type>
+
+ <object-type name="QDBusServer"/>
+ <object-type name="QDBusServiceWatcher">
+ <enum-type name="WatchModeFlag" flags="WatchMode"/>
+ </object-type>
+ <object-type name="QDBusSignature"/>
+ <object-type name="QDBusUnixFileDescriptor"/>
+ <value-type name="QDBusVariant"/>
+ <object-type name="QDBusVirtualObject"/>
+ <suppress-warning text='^.*Unable to translate type "QDBusReply&lt;.*$'/>
+ <suppress-warning text='^.*QDBusPendingCallWatcher inherits from a non polymorphic type.*$'/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtDataVisualization/CMakeLists.txt b/sources/pyside6/PySide6/QtDataVisualization/CMakeLists.txt
new file mode 100644
index 000000000..1276b424f
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDataVisualization/CMakeLists.txt
@@ -0,0 +1,71 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtDataVisualization)
+
+list(APPEND QtDataVisualization_src "${QtDataVisualization_SOURCE_DIR}/qtdatavisualization_helper.cpp")
+
+set(QtDataVisualization_SRC
+${QtDataVisualization_GEN_DIR}/qabstract3daxis_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qcategory3daxis_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qlogvalue3daxisformatter_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qvalue3daxis_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qvalue3daxisformatter_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qabstract3dseries_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qabstractdataproxy_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qbar3dseries_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qbardataitem_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qbardataproxy_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qcustom3ditem_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qcustom3dlabel_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qcustom3dvolume_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qheightmapsurfacedataproxy_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qitemmodelbardataproxy_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qitemmodelscatterdataproxy_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qitemmodelsurfacedataproxy_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qscatter3dseries_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qscatterdataitem_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qscatterdataproxy_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qsurface3dseries_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qsurfacedataitem_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qsurfacedataproxy_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dbars_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dcamera_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dlight_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dobject_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dscatter_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dscene_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dsurface_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qabstract3dgraph_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dinputhandler_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qabstract3dinputhandler_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/qtouch3dinputhandler_wrapper.cpp
+${QtDataVisualization_GEN_DIR}/q3dtheme_wrapper.cpp
+# module is always needed
+${QtDataVisualization_GEN_DIR}/qtdatavisualization_module_wrapper.cpp
+)
+
+set(QtDataVisualization_include_dirs ${QtDataVisualization_SOURCE_DIR}
+ ${QtDataVisualization_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}DataVisualization_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR})
+
+set(QtDataVisualization_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}DataVisualization_LIBRARIES})
+
+set(QtDataVisualization_deps QtCore QtGui)
+
+create_pyside_module(NAME QtDataVisualization
+ INCLUDE_DIRS QtDataVisualization_include_dirs
+ LIBRARIES QtDataVisualization_libraries
+ DEPS QtDataVisualization_deps
+ TYPESYSTEM_PATH QtDataVisualization_SOURCE_DIR
+ SOURCES QtDataVisualization_SRC
+ STATIC_SOURCES QtDataVisualization_src)
+
+install(FILES ${pyside6_SOURCE_DIR}/qtdatavisualization_helper.h
+ DESTINATION include/PySide6/QtDataVisualization)
diff --git a/sources/pyside6/PySide6/QtDataVisualization/qtdatavisualization_helper.cpp b/sources/pyside6/PySide6/QtDataVisualization/qtdatavisualization_helper.cpp
new file mode 100644
index 000000000..8ad31a77a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDataVisualization/qtdatavisualization_helper.cpp
@@ -0,0 +1,97 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qtdatavisualization_helper.h"
+
+#include <sbknumpyview.h>
+
+#include <QtCore/QDebug>
+
+namespace QtDataVisualizationHelper {
+
+template <class T>
+static void populateArray(double xStart, double deltaX, double zStart, double deltaZ,
+ qsizetype xSize, qsizetype zSize, qsizetype zStrideBytes,
+ const T *data, QSurfaceDataArray *result)
+{
+ result->reserve(zSize);
+ const qsizetype zStride = zStrideBytes / sizeof(T);
+ double z = zStart;
+ for (qsizetype zi = 0; zi < zSize; ++zi) {
+ auto *row = new QSurfaceDataRow;
+ row->reserve(xSize);
+ result->append(row);
+
+ double x = xStart;
+ auto *rowDataEnd = data + xSize;
+ for (auto *d = data; d < rowDataEnd; ++d) {
+ row->append(QSurfaceDataItem(QVector3D(x, *d, z)));
+ x += deltaX;
+ }
+
+ data += zStride;
+ z += deltaZ;
+ }
+}
+
+QSurfaceDataArray *surfaceDataFromNp(double xStart, double deltaX, double zStart, double deltaZ,
+ PyObject *pyData)
+{
+ static const char funcName[] = "QSurfaceDataProxy.resetArrayNp";
+
+ auto *result = new QSurfaceDataArray;
+
+ auto view = Shiboken::Numpy::View::fromPyObject(pyData);
+ if (!view) {
+ PyErr_Format(PyExc_TypeError, "Invalid array passed to %s", funcName);
+ return result;
+ }
+ if (view.ndim != 2) {
+ PyErr_Format(PyExc_TypeError, "%s expects a 2 dimensional array (%d)", view.ndim);
+ return result;
+ }
+
+ const qsizetype zSize = view.dimensions[0];
+ const qsizetype xSize = view.dimensions[1];
+ if (zSize == 0 || xSize == 0)
+ return result;
+
+ switch (view.type) {
+ case Shiboken::Numpy::View::Int16:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const int16_t *>(view.data), result);
+ break;
+ case Shiboken::Numpy::View::Unsigned16:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const uint16_t *>(view.data), result);
+ break;
+ case Shiboken::Numpy::View::Int:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const int *>(view.data), result);
+ break;
+ case Shiboken::Numpy::View::Unsigned:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const unsigned *>(view.data), result);
+ break;
+ case Shiboken::Numpy::View::Int64:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const int64_t *>(view.data), result);
+ break;
+ case Shiboken::Numpy::View::Unsigned64:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const uint64_t *>(view.data), result);
+ break;
+ case Shiboken::Numpy::View::Float:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const float *>(view.data), result);
+ break;
+ case Shiboken::Numpy::View::Double:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const double *>(view.data), result);
+
+ break;
+ }
+ return result;
+}
+
+} // namespace QtDataVisualizationHelper
diff --git a/sources/pyside6/PySide6/QtDataVisualization/typesystem_datavisualization.xml b/sources/pyside6/PySide6/QtDataVisualization/typesystem_datavisualization.xml
new file mode 100644
index 000000000..70014e3dc
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDataVisualization/typesystem_datavisualization.xml
@@ -0,0 +1,476 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtDataVisualization"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+
+ <extra-includes>
+ <include file-name="qtdatavisualization_helper.h" location="global"/>
+ </extra-includes>
+
+ <load-typesystem name="templates/datavisualization_common.xml" generate="no" />
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no" />
+
+ <function signature="qDefaultSurfaceFormat(bool)"/>
+
+ <primitive-type name="QBarDataArray">
+ <include file-name="qbardataproxy.h" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="cppqlistofptrtoqlists_to_py_conversion">
+ <replace from="%INTYPE_0" to="QBarDataItem"/>
+ </insert-template>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PySequence">
+ <insert-template name="py_to_cppqlistofptrtoqlists_conversion">
+ <replace from="%OUTTYPE_0" to="QBarDataItem"/>
+ </insert-template>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <primitive-type name="QSurfaceDataArray">
+ <include file-name="qsurfacedataproxy.h" location="global"/>
+ <conversion-rule>
+ <native-to-target>
+ <insert-template name="cppqlistofptrtoqlists_to_py_conversion">
+ <replace from="%INTYPE_0" to="QSurfaceDataItem"/>
+ </insert-template>
+ </native-to-target>
+ <target-to-native>
+ <add-conversion type="PySequence">
+ <insert-template name="py_to_cppqlistofptrtoqlists_conversion">
+ <replace from="%OUTTYPE_0" to="QSurfaceDataItem"/>
+ </insert-template>
+ </add-conversion>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+
+ <object-type name="QAbstract3DAxis">
+ <enum-type name="AxisOrientation"/>
+ <enum-type name="AxisType"/>
+ </object-type>
+ <object-type name="QCategory3DAxis"/>
+ <object-type name="QLogValue3DAxisFormatter"/>
+ <object-type name="QValue3DAxis">
+ <modify-function signature="setFormatter(QValue3DAxisFormatter *)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QValue3DAxisFormatter">
+ <inject-code class="native" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="qvalue3daxisformatter-friend"/>
+ <modify-function signature="createNewInstance() const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="populateCopy(QValue3DAxisFormatter&amp;)const">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <!-- PYSIDE-2025: gridPositions(), labelPositions(), labelStrings() return
+ non-const-references to lists for modifications. Add setters for them. -->
+ <add-function signature="setGridPositions(const QList&lt;float&gt;&amp;@grid_positions@)">
+ <inject-documentation format="target" mode="append">
+ Sets the normalized grid line positions to ``grid_positions``.
+ </inject-documentation>
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="qvalue3daxisformatter-setgridpositions"/>
+ </add-function>
+ <add-function signature="setLabelPositions(const QList&lt;float&gt;&amp;@label_positions@)">
+ <inject-documentation format="target" mode="append">
+ Sets the normalized label positions to ``label_positions``.
+ </inject-documentation>
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="qvalue3daxisformatter-setlabelpositions"/>
+ </add-function>
+ <add-function signature="setLabelStrings(const QStringList&amp;@label_strings@)">
+ <inject-documentation format="target" mode="append">
+ Sets the label strings to ``label_strings``.
+ </inject-documentation>
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="qvalue3daxisformatter-setlabelstrings"/>
+ </add-function>
+ </object-type>
+ <object-type name="QAbstract3DSeries">
+ <enum-type name="Mesh"/>
+ <enum-type name="SeriesType"/>
+ </object-type>
+ <object-type name="QAbstractDataProxy">
+ <enum-type name="DataType"/>
+ </object-type>
+ <object-type name="QBar3DSeries">
+ <modify-function signature="setDataProxy(QBarDataProxy*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <value-type name="QBarDataItem"/>
+ <object-type name="QBarDataProxy">
+ <modify-function signature="resetArray(QBarDataArray*)" remove="all"/>
+ <add-function signature="resetArray(const QBarDataArray&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-resetarray"/>
+ </add-function>
+ <modify-function signature="resetArray(QBarDataArray*,const QStringList&amp;,const QStringList&amp;)"
+ remove="all"/>
+ <add-function signature="resetArray(const QBarDataArray&amp;,const QStringList&amp;,const QStringList&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-resetarray2"/>
+ </add-function>
+ <modify-function signature="resetArray(QBarDataArray*,const QStringList&amp;,const QStringList&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <!-- PYSIDE-1438: Replace all add/set/insertRow() taking a 'QList*' by overloads
+ taking 'const QList &' since an allocated list needs to be passed. -->
+ <modify-function signature="addRow(QList&lt;QBarDataItem&gt;*)" remove="all"/>
+ <add-function signature="addRow(const QList&lt;QBarDataItem&gt;&amp;)" return-type="int">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-addrow"/>
+ </add-function>
+ <modify-function signature="addRow(QList&lt;QBarDataItem&gt;*,const QString&amp;)" remove="all"/>
+ <add-function signature="addRow(const QList&lt;QBarDataItem&gt;&amp;,const QString&amp;)"
+ return-type="int">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-addrow-string"/>
+ </add-function>
+
+ <modify-function signature="insertRow(int,QList&lt;QBarDataItem&gt;*)" remove="all"/>
+ <add-function signature="insertRow(int,const QList&lt;QBarDataItem&gt;&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-insertrow"/>
+ </add-function>
+ <modify-function signature="insertRow(int,QList&lt;QBarDataItem&gt;*,const QString&amp;)" remove="all"/>
+ <add-function signature="insertRow(int,const QList&lt;QBarDataItem&gt;&amp;, const QString&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-insertrow-string"/>
+ </add-function>
+
+ <modify-function signature="setRow(int,QList&lt;QBarDataItem&gt;*)" remove="all"/>
+ <add-function signature="setRow(int,const QList&lt;QBarDataItem&gt;&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-setrow"/>
+ </add-function>
+ <modify-function signature="setRow(int,QList&lt;QBarDataItem&gt;*,const QString&amp;)" remove="all"/>
+ <add-function signature="setRow(int,const QList&lt;QBarDataItem&gt;&amp;,const QString&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-setrow-string"/>
+ </add-function>
+
+ <modify-function signature="addRows(const QBarDataArray&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addRows(const QBarDataArray&amp;, const QStringList&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRows(int, const QBarDataArray&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRows(int, const QBarDataArray&amp;, const QStringList&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setRows(int, const QBarDataArray&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setRows(int, const QBarDataArray&amp;, const QStringList&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QCustom3DItem"/>
+ <object-type name="QCustom3DLabel"/>
+ <object-type name="QCustom3DVolume">
+ <modify-function signature="setTextureData(QList&lt;uchar&gt;*)" remove="all"/>
+ <add-function signature="setTextureData(const QList&lt;uchar&gt;&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="qcustom3dvolume-settexturedata"/>
+ </add-function>
+ </object-type>
+ <object-type name="QHeightMapSurfaceDataProxy"/>
+ <object-type name="QItemModelBarDataProxy">
+ <enum-type name="MultiMatchBehavior"/>
+ </object-type>
+ <object-type name="QItemModelScatterDataProxy"/>
+ <object-type name="QItemModelSurfaceDataProxy">
+ <enum-type name="MultiMatchBehavior"/>
+ </object-type>
+ <object-type name="QScatter3DSeries">
+ <modify-function signature="setDataProxy(QScatterDataProxy*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <value-type name="QScatterDataItem"/>
+ <object-type name="QScatterDataProxy">
+ <modify-function signature="resetArray(QList&lt;QScatterDataItem&gt;*)"
+ remove="all"/>
+ <add-function signature="resetArray(QList&lt;QScatterDataItem&gt;*)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="scatterdataproxy-resetarray"/>
+ </add-function>
+ <modify-function signature="addItem(const QScatterDataItem&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addItems(const QList&lt;QScatterDataItem&gt;&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertItem(int, const QScatterDataItem&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertItems(int, const QList&lt;QScatterDataItem&gt;&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItem(int, const QScatterDataItem&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItems(int, const QList&lt;QScatterDataItem&gt;&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QSurface3DSeries">
+ <enum-type name="DrawFlag" flags="DrawFlags"/>
+ <modify-function signature="QSurface3DSeries(QSurfaceDataProxy*,QObject*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setDataProxy(QSurfaceDataProxy*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <value-type name="QSurfaceDataItem"/>
+ <object-type name="QSurfaceDataProxy">
+ <inject-code class="native" position="beginning">
+ #include &lt;sbknumpycheck.h&gt;
+ #include &lt;qtdatavisualization_helper.h&gt;
+ </inject-code>
+ <!-- PYSIDE-1438: Replace all add/set/insertRow() taking a 'QList*' by overloads
+ taking 'const QList &' since an allocated list needs to be passed. -->
+ <modify-function signature="addRow(QList&lt;QSurfaceDataItem&gt;*)" remove="all"/>
+ <add-function signature="addRow(const QList&lt;QSurfaceDataItem&gt;&amp;)" return-type="int">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-addrow"/>
+ </add-function>
+
+ <modify-function signature="insertRow(int,QList&lt;QSurfaceDataItem&gt;*)" remove="all"/>
+ <add-function signature="insertRow(int,const QList&lt;QSurfaceDataItem&gt;&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-insertrow"/>
+ </add-function>
+
+ <modify-function signature="setRow(int,QList&lt;QSurfaceDataItem&gt;*)" remove="all"/>
+ <add-function signature="setRow(int,const QList&lt;QSurfaceDataItem&gt;&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-setrow"/>
+ </add-function>
+
+ <modify-function signature="resetArray(QSurfaceDataArray*)" remove="all"/>
+ <add-function signature="resetArray(const QSurfaceDataArray&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="dataproxy-resetarray"/>
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </add-function>
+
+ <add-function signature="resetArrayNp(double@x@,double@deltaX@,double@z@,double@deltaZ@,PyArrayObject*@data@)">
+ <inject-code file="../glue/qtdatavisualization.cpp"
+ snippet="qsurfacedataproxy-resetarraynp"/>
+ <inject-documentation format="target" mode="append">
+ Populates the data from a 2 dimensional numpy array containing the y
+ values for a range starting a ``x``, ``z`` with steps of ``deltaX``,
+ ``deltaZ``, respectively.
+ </inject-documentation>
+ </add-function>
+
+ </object-type>
+ <object-type name="Q3DBars">
+ <modify-function signature="addAxis(QAbstract3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseAxis(QAbstract3DAxis*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="setColumnAxis(QCategory3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setRowAxis(QCategory3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="Q3DCamera">
+ <enum-type name="CameraPreset"/>
+ </object-type>
+ <object-type name="Q3DLight"/>
+ <object-type name="Q3DObject"/>
+ <object-type name="Q3DScatter">
+ <modify-function signature="addAxis(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseAxis(QValue3DAxis*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="setAxisX(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisY(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisZ(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="Q3DScene"/>
+ <object-type name="Q3DSurface">
+ <modify-function signature="addAxis(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseAxis(QValue3DAxis*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="setAxisX(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisY(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisZ(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QAbstract3DGraph">
+ <enum-type name="ElementType"/>
+ <enum-type name="OptimizationHint" flags="OptimizationHints"/>
+ <enum-type name="SelectionFlag" flags="SelectionFlags"/>
+ <enum-type name="ShadowQuality"/>
+ <modify-function signature="addCustomItem(QCustom3DItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addInputHandler(QAbstract3DInputHandler*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addTheme(Q3DTheme*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseCustomItem(QCustom3DItem*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="releaseInputHandler(QAbstract3DInputHandler*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="releaseTheme(Q3DTheme*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="setActiveInputHandler(QAbstract3DInputHandler*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setActiveTheme(Q3DTheme*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="Q3DInputHandler"/>
+ <object-type name="QAbstract3DInputHandler">
+ <enum-type name="InputView"/>
+ </object-type>
+ <object-type name="QTouch3DInputHandler"/>
+ <object-type name="Q3DTheme">
+ <enum-type name="ColorStyle"/>
+ <enum-type name="Theme"/>
+ </object-type>
+ <extra-includes>
+ <include file-name="qutils.h" location="global"/>
+ </extra-includes>
+
+ <!-- QtQml/QtNetwork are pulled in via QtDataVisualizationDepends. -->
+ <suppress-warning text="^Scoped enum 'Q(Ocsp)|(Dtls)|(Qml).*' does not have a type entry.*$"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtDesigner/CMakeLists.txt b/sources/pyside6/PySide6/QtDesigner/CMakeLists.txt
new file mode 100644
index 000000000..e91532b87
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDesigner/CMakeLists.txt
@@ -0,0 +1,70 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtDesigner)
+
+qt_wrap_cpp(QtDesigner_static_src "${pyside6_SOURCE_DIR}/qpydesignerextensions.h")
+list(APPEND QtDesigner_static_src "${QtDesigner_SOURCE_DIR}/qpydesignercustomwidgetcollection.cpp")
+
+set(QtDesigner_SRC
+${QtDesigner_GEN_DIR}/qabstractextensionfactory_wrapper.cpp
+${QtDesigner_GEN_DIR}/qabstractextensionmanager_wrapper.cpp
+${QtDesigner_GEN_DIR}/qabstractformbuilder_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesigneractioneditorinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignercontainerextension_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignercustomwidgetcollectioninterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignercustomwidgetinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerdnditeminterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerdynamicpropertysheetextension_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerformeditorinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerformwindowcursorinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerformwindowinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerformwindowmanagerinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerformwindowtoolinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignermembersheetextension_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerobjectinspectorinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerpropertyeditorinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerpropertysheetextension_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignertaskmenuextension_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerwidgetboxinterface_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerwidgetboxinterface_category_wrapper.cpp
+${QtDesigner_GEN_DIR}/qdesignerwidgetboxinterface_widget_wrapper.cpp
+${QtDesigner_GEN_DIR}/qextensionmanager_wrapper.cpp
+${QtDesigner_GEN_DIR}/qextensionfactory_wrapper.cpp
+${QtDesigner_GEN_DIR}/qformbuilder_wrapper.cpp
+${QtDesigner_GEN_DIR}/qpydesignercustomwidgetcollection_wrapper.cpp
+${QtDesigner_GEN_DIR}/qpydesignercontainerextension_wrapper.cpp
+${QtDesigner_GEN_DIR}/qpydesignermembersheetextension_wrapper.cpp
+${QtDesigner_GEN_DIR}/qpydesignerpropertysheetextension_wrapper.cpp
+${QtDesigner_GEN_DIR}/qpydesignertaskmenuextension_wrapper.cpp
+
+# module is always needed
+${QtDesigner_GEN_DIR}/qtdesigner_module_wrapper.cpp
+)
+
+configure_file("${QtDesigner_SOURCE_DIR}/QtDesigner_global.pre.h.in"
+ "${QtDesigner_BINARY_DIR}/QtDesigner_global.pre.h" @ONLY)
+configure_file("${QtDesigner_SOURCE_DIR}/QtDesigner_global.post.h.in"
+ "${QtDesigner_BINARY_DIR}/QtDesigner_global.post.h" @ONLY)
+
+set(QtDesigner_include_dirs ${QtDesigner_SOURCE_DIR}
+ ${QtDesigner_BINARY_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR})
+
+set(QtDesigner_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Designer_LIBRARIES})
+
+set(QtDesigner_deps QtWidgets)
+
+create_pyside_module(NAME QtDesigner
+ INCLUDE_DIRS QtDesigner_include_dirs
+ LIBRARIES QtDesigner_libraries
+ DEPS QtDesigner_deps
+ TYPESYSTEM_PATH QtDesigner_SOURCE_DIR
+ SOURCES QtDesigner_SRC
+ STATIC_SOURCES QtDesigner_static_src
+ TYPESYSTEM_NAME ${QtDesigner_BINARY_DIR}/typesystem_designer.xml)
+
+install(FILES ${pyside6_SOURCE_DIR}/qpydesignerextensions.h DESTINATION include/PySide6/QtDesigner)
diff --git a/sources/pyside6/PySide6/QtDesigner/QtDesigner_global.post.h.in b/sources/pyside6/PySide6/QtDesigner/QtDesigner_global.post.h.in
new file mode 100644
index 000000000..e5537a6cf
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDesigner/QtDesigner_global.post.h.in
@@ -0,0 +1 @@
+#include <qpydesignerextensions.h>
diff --git a/sources/pyside6/PySide6/QtDesigner/QtDesigner_global.pre.h.in b/sources/pyside6/PySide6/QtDesigner/QtDesigner_global.pre.h.in
new file mode 100644
index 000000000..195acbaa7
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDesigner/QtDesigner_global.pre.h.in
@@ -0,0 +1,3 @@
+// Not included by the module header
+#include <QtDesigner/QExtensionFactory>
+#include <QtDesigner/QExtensionManager>
diff --git a/sources/pyside6/PySide6/QtDesigner/qpydesignercustomwidgetcollection.cpp b/sources/pyside6/PySide6/QtDesigner/qpydesignercustomwidgetcollection.cpp
new file mode 100644
index 000000000..31f8ec152
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDesigner/qpydesignercustomwidgetcollection.cpp
@@ -0,0 +1,223 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <qpydesignerextensions.h>
+
+#include <QtCore/QCoreApplication>
+#include <QtCore/QVariant>
+
+#include <shiboken.h>
+#include <bindingmanager.h>
+
+QT_BEGIN_NAMESPACE
+
+static QString pyStringToQString(PyObject *s)
+{
+ const char *utf8 = _PepUnicode_AsString(s);
+ return utf8 ? QString::fromUtf8(utf8) : QString();
+}
+
+// Return a string from keyword argument dict
+static QString kwdString(PyObject *kwds, PyObject *key)
+{
+ QString result;
+ if (PyDict_Contains(kwds, key)) {
+ if (auto value = PyDict_GetItem(kwds, key))
+ result = pyStringToQString(value);
+ }
+ return result;
+}
+
+// Return a bool from keyword argument dict
+static bool kwdBool(PyObject *kwds, PyObject *key)
+{
+ bool result = false;
+ if (PyDict_Contains(kwds, key)) {
+ if (auto value = PyDict_GetItem(kwds, key))
+ result = PyObject_IsTrue(value);
+ }
+ return result;
+}
+
+// PyDesignerCustomWidget: A custom widget registered by type
+// (similar to what is done by QUiLoader.registerCustomWidget()).
+class PyDesignerCustomWidget : public QDesignerCustomWidgetInterface
+{
+public:
+ explicit PyDesignerCustomWidget(PyObject *pyTypeObject) :
+ m_pyTypeObject(pyTypeObject) {}
+
+ QString name() const override;
+ QString group() const override { return m_group; }
+ QString toolTip() const override { return m_toolTip; }
+ QString whatsThis() const override { return toolTip(); }
+ QString includeFile() const override { return m_includeFile; }
+ QIcon icon() const override { return m_icon; }
+ bool isContainer() const override { return m_container; }
+
+ QWidget *createWidget(QWidget *parent) override;
+
+ bool isInitialized() const override { return m_core != nullptr; }
+ void initialize(QDesignerFormEditorInterface *core) override;
+
+ QString domXml() const override { return m_domXml; }
+
+ void setGroup(const QString &group) { m_group = group; }
+ void setToolTip(const QString &toolTip) { m_toolTip = toolTip; }
+ void setIncludeFile(const QString &includeFile) { m_includeFile = includeFile; }
+ void setIcon(const QIcon &icon) { m_icon = icon; }
+ void setDomXml(const QString &domXml) { m_domXml = domXml; }
+ void setContainer(bool container) { m_container = container; }
+
+private:
+ const char *utf8Name() const;
+
+ QDesignerFormEditorInterface *m_core = nullptr;
+ QString m_group;
+ QString m_toolTip;
+ QString m_includeFile;
+ QIcon m_icon;
+ QString m_domXml;
+ PyObject *m_pyTypeObject = nullptr;
+ bool m_container = false;
+};
+
+const char *PyDesignerCustomWidget::utf8Name() const
+{
+ return reinterpret_cast<PyTypeObject *>(m_pyTypeObject)->tp_name;
+}
+
+QString PyDesignerCustomWidget::name() const
+{
+ return QString::fromUtf8(utf8Name());
+}
+
+QWidget *PyDesignerCustomWidget::createWidget(QWidget *parent)
+{
+ // This is a copy of the similar function used for QUiLoader
+ // (see sources/pyside6/plugins/uitools/customwidget.cpp)
+ // Create a python instance and return cpp object
+ PyObject *pyParent = nullptr;
+ bool unknownParent = false;
+ if (parent) {
+ pyParent = reinterpret_cast<PyObject *>(Shiboken::BindingManager::instance().retrieveWrapper(parent));
+ if (pyParent) {
+ Py_INCREF(pyParent);
+ } else {
+ static Shiboken::Conversions::SpecificConverter converter("QWidget*");
+ pyParent = converter.toPython(&parent);
+ unknownParent = true;
+ }
+ } else {
+ Py_INCREF(Py_None);
+ pyParent = Py_None;
+ }
+
+ Shiboken::AutoDecRef pyArgs(PyTuple_New(1));
+ PyTuple_SET_ITEM(pyArgs, 0, pyParent); // tuple will keep pyParent reference
+
+ // Call python constructor
+ auto result = reinterpret_cast<SbkObject *>(PyObject_CallObject(m_pyTypeObject, pyArgs));
+ if (!result) {
+ qWarning("Unable to create a Python custom widget of type \"%s\".", utf8Name());
+ PyErr_Print();
+ return nullptr;
+ }
+
+ if (unknownParent) // if parent does not exist in python, transfer the ownership to cpp
+ Shiboken::Object::releaseOwnership(result);
+ else
+ Shiboken::Object::setParent(pyParent, reinterpret_cast<PyObject *>(result));
+
+ return reinterpret_cast<QWidget *>(Shiboken::Object::cppPointer(result, Py_TYPE(result)));
+}
+
+void PyDesignerCustomWidget::initialize(QDesignerFormEditorInterface *core)
+{
+ m_core = core;
+}
+
+// QPyDesignerCustomWidgetCollection: A QDesignerCustomWidgetCollectionInterface
+// implementation that is instantiated as a singleton and stored as a dynamic
+// property of QCoreApplication. The PySide Designer plugin retrieves it from
+// there. Provides static convenience functions for registering types
+// or adding QDesignerCustomWidgetInterface instances.
+
+static QPyDesignerCustomWidgetCollection *collectionInstance = nullptr;
+
+static const char propertyName[] = "__qt_PySideCustomWidgetCollection";
+
+static void cleanup()
+{
+ delete collectionInstance;
+ collectionInstance = nullptr;
+}
+
+QPyDesignerCustomWidgetCollection::QPyDesignerCustomWidgetCollection() = default;
+
+QPyDesignerCustomWidgetCollection::~QPyDesignerCustomWidgetCollection()
+{
+ qDeleteAll(m_customWidgets);
+}
+
+QList<QDesignerCustomWidgetInterface *> QPyDesignerCustomWidgetCollection::customWidgets() const
+{
+ return m_customWidgets;
+}
+
+QPyDesignerCustomWidgetCollection *QPyDesignerCustomWidgetCollection::instance()
+{
+ if (collectionInstance == nullptr) {
+ collectionInstance = new QPyDesignerCustomWidgetCollection();
+ if (auto coreApp = QCoreApplication::instance()) {
+ QDesignerCustomWidgetCollectionInterface *c = collectionInstance;
+ coreApp->setProperty(propertyName, QVariant::fromValue<void *>(c));
+ qAddPostRoutine(cleanup);
+ } else {
+ qWarning("%s: Cannot find QCoreApplication instance.", Q_FUNC_INFO);
+ }
+ }
+ return collectionInstance;
+}
+
+// Register a custom widget by type and optional keyword arguments providing
+// the parameters of QDesignerCustomWidgetInterface.
+bool QPyDesignerCustomWidgetCollection::_registerCustomWidgetHelper(PyObject *typeArg, PyObject *kwds)
+{
+ if (!PyType_Check(typeArg)) {
+ PyErr_SetString(PyExc_TypeError, "registerCustomWidget() requires a type argument.");
+ return false;
+ }
+
+ auto pyCustomWidget = new PyDesignerCustomWidget(typeArg);
+
+ static PyObject *xmlKey = Shiboken::String::createStaticString("xml");
+ pyCustomWidget->setDomXml(kwdString(kwds, xmlKey));
+ static PyObject *toolTipKey = Shiboken::String::createStaticString("tool_tip");
+ pyCustomWidget->setToolTip(kwdString(kwds, toolTipKey));
+ static PyObject *groupKey = Shiboken::String::createStaticString("group");
+ pyCustomWidget->setGroup(kwdString(kwds, groupKey));
+ static PyObject *moduleKey = Shiboken::String::createStaticString("module");
+ pyCustomWidget->setIncludeFile(kwdString(kwds, moduleKey));
+ static PyObject *containerKey = Shiboken::String::createStaticString("container");
+ pyCustomWidget->setContainer(kwdBool(kwds, containerKey));
+ static PyObject *iconKey = Shiboken::String::createStaticString("icon");
+ const QString iconPath = kwdString(kwds, iconKey);
+ if (!iconPath.isEmpty()) {
+ QIcon icon(iconPath);
+ if (icon.availableSizes().isEmpty())
+ qWarning("%s: Cannot load icon from '%s'.", __FUNCTION__, qPrintable(iconPath));
+ else
+ pyCustomWidget->setIcon(icon);
+ }
+
+ addCustomWidget(pyCustomWidget);
+ return true;
+}
+
+void QPyDesignerCustomWidgetCollection::addCustomWidget(QDesignerCustomWidgetInterface *c)
+{
+ instance()->m_customWidgets.append(c);
+}
+
+QT_END_NAMESPACE
diff --git a/sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml b/sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml
new file mode 100644
index 000000000..7d37cbddf
--- /dev/null
+++ b/sources/pyside6/PySide6/QtDesigner/typesystem_designer.xml
@@ -0,0 +1,103 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtDesigner"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+ <rejection class="qdesigner_internal"/>
+
+ <object-type name="QAbstractExtensionFactory"/>
+ <object-type name="QAbstractExtensionManager"/>
+ <object-type name="QAbstractFormBuilder"/>
+ <object-type name="QDesignerActionEditorInterface"/>
+ <object-type name="QDesignerContainerExtension"/>
+ <object-type name="QDesignerCustomWidgetCollectionInterface"/>
+ <object-type name="QDesignerCustomWidgetInterface">
+ <modify-function signature="createWidget(QWidget*)">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <!-- QDesignerDnDItemInterface has abstract functions dealing with the
+ unexposed DomUI classes, we cannot generate a wrapper. -->
+ <object-type name="QDesignerDnDItemInterface" disable-wrapper="yes">
+ <enum-type name="DropType"/>
+ </object-type>
+ <object-type name="QDesignerDynamicPropertySheetExtension"/>
+ <object-type name="QDesignerFormEditorInterface"/>
+ <object-type name="QDesignerFormWindowCursorInterface">
+ <enum-type name="MoveMode"/>
+ <enum-type name="MoveOperation"/>
+ </object-type>
+ <!-- QDesignerFormWindowInterface has abstract functions dealing with private
+ class QtResourceSet, so, we cannot generate a wrapper. -->
+ <object-type name="QDesignerFormWindowInterface" disable-wrapper="yes">
+ <enum-type name="FeatureFlag" flags="Feature"/>
+ <enum-type name="ResourceFileSaveMode"/>
+ </object-type>
+ <object-type name="QDesignerFormWindowManagerInterface">
+ <enum-type name="Action"/>
+ <enum-type name="ActionGroup"/>
+ </object-type>
+ <object-type name="QDesignerFormWindowToolInterface"/>
+ <object-type name="QDesignerMemberSheetExtension"/>
+ <object-type name="QDesignerObjectInspectorInterface"/>
+ <object-type name="QDesignerPropertyEditorInterface"/>
+ <object-type name="QDesignerPropertySheetExtension"/>
+ <object-type name="QDesignerTaskMenuExtension"/>
+ <object-type name="QDesignerWidgetBoxInterface">
+ <value-type name="Category">
+ <enum-type name="Type"/>
+ </value-type>
+ <value-type name="Widget">
+ <enum-type name="Type"/>
+ </value-type>
+ </object-type>
+ <object-type name="QExtensionManager"/>
+ <object-type name="QExtensionFactory"/>
+ <object-type name="QFormBuilder"/>
+ <object-type name="QPyDesignerCustomWidgetCollection" disable-wrapper="yes">
+ <extra-includes>
+ <include file-name="qpydesignerextensions.h" location="global"/>
+ </extra-includes>
+ <modify-function signature="addCustomWidget(QDesignerCustomWidgetInterface*)">
+ <modify-argument index="1">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <!-- Force VARARGS/keyword arguments by giving a default parameters -->
+ <add-function signature='registerCustomWidget(PyObject*@customWidgetType@,const QString&amp; @xml@ = {}, const QString&amp; @tool_tip@ = {}, const QString&amp; @group@ = {}, const QString&amp; @module@ = {}, bool @container@ = false, const QString&amp; @icon@ = {})'
+ return-type='void' static='true'>
+ <inject-code class="target" position="beginning" file="../glue/qtdesigner.cpp" snippet="qtdesigner-registercustomwidget"/>
+ </add-function>
+ </object-type>
+ <object-type name="QPyDesignerContainerExtension">
+ <extra-includes>
+ <include file-name="qpydesignerextensions.h" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QPyDesignerMemberSheetExtension">
+ <extra-includes>
+ <include file-name="qpydesignerextensions.h" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QPyDesignerPropertySheetExtension">
+ <extra-includes>
+ <include file-name="qpydesignerextensions.h" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QPyDesignerTaskMenuExtension">
+ <extra-includes>
+ <include file-name="qpydesignerextensions.h" location="global"/>
+ </extra-includes>
+ </object-type>
+
+ <!-- Suppress all QString */int * out parameters -->
+ <suppress-warning text="^There's no user provided way.*handle the primitive type.*$"/>
+ <suppress-warning text="^.*skipping abstract function.*QtResourceSet.*$"/>
+ <suppress-warning text="^.*skipping abstract function.*DomUI.*$"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtGraphs/CMakeLists.txt b/sources/pyside6/PySide6/QtGraphs/CMakeLists.txt
new file mode 100644
index 000000000..59cef220b
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGraphs/CMakeLists.txt
@@ -0,0 +1,100 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtGraphs)
+
+set(QtGraphs_DROPPED_ENTRIES)
+
+list(APPEND QtGraphs_src "${QtGraphs_SOURCE_DIR}/qtgraphs_helper.cpp")
+
+set(QtGraphs_SRC
+# 3D
+${QtGraphs_GEN_DIR}/qabstract3daxis_wrapper.cpp
+${QtGraphs_GEN_DIR}/qcategory3daxis_wrapper.cpp
+${QtGraphs_GEN_DIR}/qlogvalue3daxisformatter_wrapper.cpp
+${QtGraphs_GEN_DIR}/qvalue3daxis_wrapper.cpp
+${QtGraphs_GEN_DIR}/qvalue3daxisformatter_wrapper.cpp
+${QtGraphs_GEN_DIR}/qabstract3dseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qabstractdataproxy_wrapper.cpp
+${QtGraphs_GEN_DIR}/qbar3dseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qbardataitem_wrapper.cpp
+${QtGraphs_GEN_DIR}/qbardataproxy_wrapper.cpp
+${QtGraphs_GEN_DIR}/qcustom3ditem_wrapper.cpp
+${QtGraphs_GEN_DIR}/qcustom3dlabel_wrapper.cpp
+${QtGraphs_GEN_DIR}/qcustom3dvolume_wrapper.cpp
+${QtGraphs_GEN_DIR}/qheightmapsurfacedataproxy_wrapper.cpp
+${QtGraphs_GEN_DIR}/qitemmodelbardataproxy_wrapper.cpp
+${QtGraphs_GEN_DIR}/qitemmodelscatterdataproxy_wrapper.cpp
+${QtGraphs_GEN_DIR}/qitemmodelsurfacedataproxy_wrapper.cpp
+${QtGraphs_GEN_DIR}/qscatter3dseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qscatterdataitem_wrapper.cpp
+${QtGraphs_GEN_DIR}/qscatterdataproxy_wrapper.cpp
+${QtGraphs_GEN_DIR}/qsurface3dseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qsurfacedataitem_wrapper.cpp
+${QtGraphs_GEN_DIR}/qsurfacedataproxy_wrapper.cpp
+${QtGraphs_GEN_DIR}/q3dbars_wrapper.cpp
+${QtGraphs_GEN_DIR}/q3dscatter_wrapper.cpp
+${QtGraphs_GEN_DIR}/q3dscene_wrapper.cpp
+${QtGraphs_GEN_DIR}/q3dsurface_wrapper.cpp
+${QtGraphs_GEN_DIR}/qabstract3dgraph_wrapper.cpp
+${QtGraphs_GEN_DIR}/q3dinputhandler_wrapper.cpp
+${QtGraphs_GEN_DIR}/qabstract3dinputhandler_wrapper.cpp
+${QtGraphs_GEN_DIR}/qtouch3dinputhandler_wrapper.cpp
+${QtGraphs_GEN_DIR}/q3dtheme_wrapper.cpp
+# 2D
+${QtGraphs_GEN_DIR}/qbarcategoryaxis_wrapper.cpp
+${QtGraphs_GEN_DIR}/qabstractaxis_wrapper.cpp
+${QtGraphs_GEN_DIR}/qvalueaxis_wrapper.cpp
+${QtGraphs_GEN_DIR}/qabstractbarseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qbarseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qbarset_wrapper.cpp
+${QtGraphs_GEN_DIR}/qlineseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qabstractseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qscatterseries_wrapper.cpp
+${QtGraphs_GEN_DIR}/qgraphtheme_wrapper.cpp
+${QtGraphs_GEN_DIR}/qseriestheme_wrapper.cpp
+${QtGraphs_GEN_DIR}/qxyseries_wrapper.cpp
+# module is always needed
+${QtGraphs_GEN_DIR}/qtgraphs_module_wrapper.cpp
+)
+
+set(QtGraphs_include_dirs ${QtGraphs_SOURCE_DIR}
+ ${QtGraphs_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}QtNetwork_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Quick_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}QuickWidgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Graphs_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Quick3D_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtQml_GEN_DIR}
+ ${QtQuick_GEN_DIR}
+ ${QtQuickWidgets_GEN_DIR}
+ ${QtQuick3D_GEN_DIR})
+
+set(QtGraphs_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Graphs_LIBRARIES})
+
+set(QtGraphs_deps QtCore QtNetwork QtGui QtWidgets QtQml QtQuick QtQuickWidgets QtQuick3D)
+
+check_qt_opengl("Graphs" QtGraphs_include_dirs QtGraphs_deps
+ QtGraphs_DROPPED_ENTRIES)
+
+create_pyside_module(NAME QtGraphs
+ INCLUDE_DIRS QtGraphs_include_dirs
+ LIBRARIES QtGraphs_libraries
+ DEPS QtGraphs_deps
+ TYPESYSTEM_PATH QtGraphs_SOURCE_DIR
+ SOURCES QtGraphs_SRC
+ STATIC_SOURCES QtGraphs_src
+ DROPPED_ENTRIES QtGraphs_DROPPED_ENTRIES)
+
+install(FILES ${pyside6_SOURCE_DIR}/qtgraphs_helper.h
+ DESTINATION include/PySide6/QtGraphs)
diff --git a/sources/pyside6/PySide6/QtGraphs/qtgraphs_helper.cpp b/sources/pyside6/PySide6/QtGraphs/qtgraphs_helper.cpp
new file mode 100644
index 000000000..19fe4f818
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGraphs/qtgraphs_helper.cpp
@@ -0,0 +1,97 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qtgraphs_helper.h"
+
+#include <sbknumpyview.h>
+
+#include <QtCore/QDebug>
+
+namespace QtGraphsHelper {
+
+template <class T>
+static void populateArray(double xStart, double deltaX, double zStart, double deltaZ,
+ qsizetype xSize, qsizetype zSize, qsizetype zStrideBytes,
+ const T *data, QSurfaceDataArray *result)
+{
+ result->reserve(zSize);
+ const qsizetype zStride = zStrideBytes / sizeof(T);
+ double z = zStart;
+ for (qsizetype zi = 0; zi < zSize; ++zi) {
+ QSurfaceDataRow row;
+ row.reserve(xSize);
+
+ double x = xStart;
+ auto *rowDataEnd = data + xSize;
+ for (auto *d = data; d < rowDataEnd; ++d) {
+ row.append(QSurfaceDataItem(QVector3D(x, *d, z)));
+ x += deltaX;
+ }
+ result->append(row);
+
+ data += zStride;
+ z += deltaZ;
+ }
+}
+
+QSurfaceDataArray surfaceDataFromNp(double xStart, double deltaX, double zStart, double deltaZ,
+ PyObject *pyData)
+{
+ static const char funcName[] = "QSurfaceDataProxy.resetArrayNp";
+
+ QSurfaceDataArray result;
+
+ auto view = Shiboken::Numpy::View::fromPyObject(pyData);
+ if (!view) {
+ PyErr_Format(PyExc_TypeError, "Invalid array passed to %s", funcName);
+ return result;
+ }
+ if (view.ndim != 2) {
+ PyErr_Format(PyExc_TypeError, "%s expects a 2 dimensional array (%d)", view.ndim);
+ return result;
+ }
+
+ const qsizetype zSize = view.dimensions[0];
+ const qsizetype xSize = view.dimensions[1];
+ if (zSize == 0 || xSize == 0)
+ return result;
+
+ switch (view.type) {
+ case Shiboken::Numpy::View::Int16:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const int16_t *>(view.data), &result);
+ break;
+ case Shiboken::Numpy::View::Unsigned16:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const uint16_t *>(view.data), &result);
+ break;
+ case Shiboken::Numpy::View::Int:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const int *>(view.data), &result);
+ break;
+ case Shiboken::Numpy::View::Unsigned:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const unsigned *>(view.data), &result);
+ break;
+ case Shiboken::Numpy::View::Int64:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const int64_t *>(view.data), &result);
+ break;
+ case Shiboken::Numpy::View::Unsigned64:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const uint64_t *>(view.data), &result);
+ break;
+ case Shiboken::Numpy::View::Float:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const float *>(view.data), &result);
+ break;
+ case Shiboken::Numpy::View::Double:
+ populateArray(xStart, deltaX, zStart, deltaZ, xSize, zSize, view.stride[0],
+ reinterpret_cast<const double *>(view.data), &result);
+
+ break;
+ }
+ return result;
+}
+
+} // namespace QtGraphsHelper
diff --git a/sources/pyside6/PySide6/QtGraphs/typesystem_graphs.xml b/sources/pyside6/PySide6/QtGraphs/typesystem_graphs.xml
new file mode 100644
index 000000000..43e4458be
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGraphs/typesystem_graphs.xml
@@ -0,0 +1,303 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtGraphs"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+
+ <extra-includes>
+ <include file-name="qtgraphs_helper.h" location="global"/>
+ </extra-includes>
+
+ <load-typesystem name="templates/datavisualization_common.xml" generate="no" />
+ <load-typesystem name="QtQuickWidgets/typesystem_quickwidgets.xml" generate="no" />
+
+ <function signature="qDefaultSurfaceFormat(bool)"/>
+
+
+ <object-type name="QAbstract3DAxis">
+ <enum-type name="AxisOrientation"/>
+ <enum-type name="AxisType"/>
+ </object-type>
+ <object-type name="QCategory3DAxis"/>
+ <object-type name="QLogValue3DAxisFormatter"/>
+ <object-type name="QValue3DAxis">
+ <modify-function signature="setFormatter(QValue3DAxisFormatter *)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QValue3DAxisFormatter">
+ <modify-function signature="createNewInstance() const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QAbstract3DSeries">
+ <enum-type name="Mesh"/>
+ <enum-type name="SeriesType"/>
+ </object-type>
+ <object-type name="QAbstractDataProxy">
+ <enum-type name="DataType"/>
+ </object-type>
+ <object-type name="QBar3DSeries">
+ <modify-function signature="setDataProxy(QBarDataProxy*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <value-type name="QBarDataItem"/>
+ <object-type name="QBarDataProxy">
+ </object-type>
+ <object-type name="QCustom3DItem"/>
+ <object-type name="QCustom3DLabel"/>
+ <object-type name="QCustom3DVolume">
+ <modify-function signature="setTextureData(QList&lt;uchar&gt;*)" remove="all"/>
+ <add-function signature="setTextureData(const QList&lt;uchar&gt;&amp;)">
+ <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp"
+ snippet="qcustom3dvolume-settexturedata"/>
+ </add-function>
+ </object-type>
+ <object-type name="QHeightMapSurfaceDataProxy"/>
+ <object-type name="QItemModelBarDataProxy">
+ <enum-type name="MultiMatchBehavior"/>
+ </object-type>
+ <object-type name="QItemModelScatterDataProxy"/>
+ <object-type name="QItemModelSurfaceDataProxy">
+ <enum-type name="MultiMatchBehavior"/>
+ </object-type>
+ <object-type name="QScatter3DSeries">
+ <modify-function signature="setDataProxy(QScatterDataProxy*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <value-type name="QScatterDataItem"/>
+ <object-type name="QScatterDataProxy">
+ </object-type>
+ <object-type name="QSurface3DSeries">
+ <enum-type name="DrawFlag" flags="DrawFlags"/>
+ <modify-function signature="QSurface3DSeries(QSurfaceDataProxy*,QObject*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setDataProxy(QSurfaceDataProxy*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <value-type name="QSurfaceDataItem"/>
+ <object-type name="QSurfaceDataProxy">
+ <inject-code class="native" position="beginning">
+ #include &lt;sbknumpycheck.h&gt;
+ #include &lt;qtgraphs_helper.h&gt;
+ </inject-code>
+ <add-function signature="resetArrayNp(double@x@,double@deltaX@,double@z@,double@deltaZ@,PyArrayObject*@data@)">
+ <inject-code file="../glue/qtgraphs.cpp"
+ snippet="graphs-qsurfacedataproxy-resetarraynp"/>
+ <inject-documentation format="target" mode="append">
+ Populates the data from a 2 dimensional numpy array containing the y
+ values for a range starting a ``x``, ``z`` with steps of ``deltaX``,
+ ``deltaZ``, respectively.
+ </inject-documentation>
+ </add-function>
+
+ </object-type>
+ <object-type name="Q3DBars">
+ <modify-function signature="addAxis(QAbstract3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseAxis(QAbstract3DAxis*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="setColumnAxis(QCategory3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setRowAxis(QCategory3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="Q3DScatter">
+ <modify-function signature="addAxis(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseAxis(QValue3DAxis*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="setAxisX(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisY(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisZ(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="Q3DScene"/>
+ <object-type name="Q3DSurface">
+ <modify-function signature="addAxis(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseAxis(QValue3DAxis*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="setAxisX(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisY(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAxisZ(QValue3DAxis*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QAbstract3DGraph">
+ <enum-type name="ElementType"/>
+ <enum-type name="OptimizationHint" flags="OptimizationHints"/>
+ <enum-type name="RenderingMode"/>
+ <enum-type name="SelectionFlag" flags="SelectionFlags"/>
+ <enum-type name="ShadowQuality"/>
+ <enum-type name="CameraPreset" since="6.7"/>
+ <modify-function signature="addCustomItem(QCustom3DItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addInputHandler(QAbstract3DInputHandler*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addTheme(Q3DTheme*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseCustomItem(QCustom3DItem*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="releaseInputHandler(QAbstract3DInputHandler*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="releaseTheme(Q3DTheme*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtdatavisualization.cpp" snippet="releaseownership"/>
+ </modify-function>
+ <modify-function signature="setActiveInputHandler(QAbstract3DInputHandler*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setActiveTheme(Q3DTheme*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="Q3DInputHandler"/>
+ <object-type name="QAbstract3DInputHandler">
+ <enum-type name="InputView"/>
+ </object-type>
+ <object-type name="QTouch3DInputHandler"/>
+ <object-type name="Q3DTheme">
+ <enum-type name="ColorStyle"/>
+ <enum-type name="Theme"/>
+ </object-type>
+
+ <!-- 2D -->
+ <object-type name="QBarCategoryAxis"/>
+ <object-type name="QAbstractAxis">
+ <enum-type name="AxisType"/>
+ </object-type>
+ <object-type name="QValueAxis"/>
+ <object-type name="QAbstractBarSeries">
+ <enum-type name="LabelsPosition"/>
+ <modify-function signature="append(QBarSet*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="append(QList&lt;QBarSet*&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insert(int,QBarSet*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="take(QBarSet*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QBarSeries"/>
+ <object-type name="QBarSet"/>
+ <object-type name="QLineSeries"/>
+ <object-type name="QAbstractSeries">
+ <enum-type name="SeriesType"/>
+ </object-type>
+ <object-type name="QScatterSeries"/>
+ <object-type name="QGraphTheme">
+ <enum-type name="ColorTheme"/>
+ </object-type>
+ <object-type name="QSeriesTheme">
+ <enum-type name="SeriesColorTheme"/>
+ </object-type>
+ <object-type name="QXYSeries">
+ </object-type>
+
+ <extra-includes>
+ <include file-name="qutils.h" location="global"/>
+ </extra-includes>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtGui/CMakeLists.txt b/sources/pyside6/PySide6/QtGui/CMakeLists.txt
new file mode 100644
index 000000000..c868b6c88
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGui/CMakeLists.txt
@@ -0,0 +1,355 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtGui)
+
+qt_wrap_cpp(QPYTEXTOBJECT_MOC "${pyside6_SOURCE_DIR}/qpytextobject.h")
+
+set(QtGui_DROPPED_ENTRIES)
+
+# Exclude sources that have clashing static helper functions named "iterator_..."
+set(QtGui_SRC_UNITY_EXCLUDED_SRC
+ ${QtGui_GEN_DIR}/qtextframe_iterator_wrapper.cpp
+ ${QtGui_GEN_DIR}/qtextblock_iterator_wrapper.cpp
+ ${QtGui_GEN_DIR}/qshaderversion_wrapper.cpp
+)
+
+set_property(SOURCE ${QtGui_SRC_UNITY_EXCLUDED_SRC}
+ PROPERTY SKIP_UNITY_BUILD_INCLUSION ON)
+
+set(QtGui_SRC_RHI
+${QtGui_GEN_DIR}/qrhi_wrapper.cpp
+${QtGui_GEN_DIR}/qrhibuffer_wrapper.cpp
+${QtGui_GEN_DIR}/qrhicolorattachment_wrapper.cpp
+${QtGui_GEN_DIR}/qrhicommandbuffer_wrapper.cpp
+${QtGui_GEN_DIR}/qrhicomputepipeline_wrapper.cpp
+${QtGui_GEN_DIR}/qrhidepthstencilclearvalue_wrapper.cpp
+${QtGui_GEN_DIR}/qrhidriverinfo_wrapper.cpp
+${QtGui_GEN_DIR}/qrhigraphicspipeline_targetblend_wrapper.cpp
+${QtGui_GEN_DIR}/qrhigraphicspipeline_wrapper.cpp
+${QtGui_GEN_DIR}/qrhigraphicspipeline_stencilopstate_wrapper.cpp
+${QtGui_GEN_DIR}/qrhiinitparams_wrapper.cpp
+${QtGui_GEN_DIR}/qrhinativehandles_wrapper.cpp
+${QtGui_GEN_DIR}/qrhinullinitparams_wrapper.cpp
+${QtGui_GEN_DIR}/qrhireadbackdescription_wrapper.cpp
+${QtGui_GEN_DIR}/qrhireadbackresult_wrapper.cpp
+${QtGui_GEN_DIR}/qrhirenderbuffer_wrapper.cpp
+${QtGui_GEN_DIR}/qrhirenderpassdescriptor_wrapper.cpp
+${QtGui_GEN_DIR}/qrhirendertarget_wrapper.cpp
+${QtGui_GEN_DIR}/qrhiresource_wrapper.cpp
+${QtGui_GEN_DIR}/qrhiresourceupdatebatch_wrapper.cpp
+${QtGui_GEN_DIR}/qrhisampler_wrapper.cpp
+${QtGui_GEN_DIR}/qrhiscissor_wrapper.cpp
+${QtGui_GEN_DIR}/qrhishaderresourcebinding_textureandsampler_wrapper.cpp
+${QtGui_GEN_DIR}/qrhishaderresourcebinding_data_storagebufferdata_wrapper.cpp
+${QtGui_GEN_DIR}/qrhishaderresourcebinding_data_storageimagedata_wrapper.cpp
+${QtGui_GEN_DIR}/qrhishaderresourcebinding_data_wrapper.cpp
+${QtGui_GEN_DIR}/qrhishaderresourcebinding_wrapper.cpp
+${QtGui_GEN_DIR}/qrhishaderresourcebindings_wrapper.cpp
+${QtGui_GEN_DIR}/qrhishaderstage_wrapper.cpp
+${QtGui_GEN_DIR}/qrhistats_wrapper.cpp
+${QtGui_GEN_DIR}/qrhiswapchain_wrapper.cpp
+${QtGui_GEN_DIR}/qrhiswapchainrendertarget_wrapper.cpp
+${QtGui_GEN_DIR}/qrhitexture_wrapper.cpp
+${QtGui_GEN_DIR}/qrhitexturecopydescription_wrapper.cpp
+${QtGui_GEN_DIR}/qrhitexturerendertarget_wrapper.cpp
+${QtGui_GEN_DIR}/qrhitexturerendertargetdescription_wrapper.cpp
+${QtGui_GEN_DIR}/qrhitexturesubresourceuploaddescription_wrapper.cpp
+${QtGui_GEN_DIR}/qrhitextureuploaddescription_wrapper.cpp
+${QtGui_GEN_DIR}/qrhitextureuploadentry_wrapper.cpp
+${QtGui_GEN_DIR}/qrhivertexinputattribute_wrapper.cpp
+${QtGui_GEN_DIR}/qrhivertexinputbinding_wrapper.cpp
+${QtGui_GEN_DIR}/qrhivertexinputlayout_wrapper.cpp
+${QtGui_GEN_DIR}/qrhiviewport_wrapper.cpp
+${QtGui_GEN_DIR}/qshader_wrapper.cpp
+${QtGui_GEN_DIR}/qshadercode_wrapper.cpp
+${QtGui_GEN_DIR}/qshaderkey_wrapper.cpp
+)
+
+if (ENABLE_WIN)
+ list(APPEND QtGui_SRC_RHI
+ ${QtGui_GEN_DIR}/qrhid3d11initparams_wrapper.cpp
+ ${QtGui_GEN_DIR}/qrhid3d11nativehandles_wrapper.cpp
+ ${QtGui_GEN_DIR}/qrhid3d12initparams_wrapper.cpp
+ ${QtGui_GEN_DIR}/qrhid3d12nativehandles_wrapper.cpp)
+elseif (ENABLE_MAC)
+ list(APPEND QtGui_SRC_RHI
+ ${QtGui_GEN_DIR}/qrhimetalinitparams_wrapper.cpp)
+endif()
+
+set(QtGui_SRC
+${QtGui_SRC_UNITY_EXCLUDED_SRC}
+${QtGui_GEN_DIR}/qabstractfileiconprovider_wrapper.cpp
+${QtGui_GEN_DIR}/qabstracttextdocumentlayout_paintcontext_wrapper.cpp
+${QtGui_GEN_DIR}/qabstracttextdocumentlayout_selection_wrapper.cpp
+${QtGui_GEN_DIR}/qabstracttextdocumentlayout_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessible_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibleactioninterface_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibleeditabletextinterface_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibleevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibleobject_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibleselectioninterface_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessiblestatechangeevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibletablecellinterface_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibletablemodelchangeevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibletextcursorevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibletextinsertevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibletextinterface_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibletextremoveevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibletextselectionevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibletextupdateevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessiblevaluechangeevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessiblevalueinterface_wrapper.cpp
+${QtGui_GEN_DIR}/qaction_wrapper.cpp
+${QtGui_GEN_DIR}/qactionevent_wrapper.cpp
+${QtGui_GEN_DIR}/qactiongroup_wrapper.cpp
+${QtGui_GEN_DIR}/qbackingstore_wrapper.cpp
+${QtGui_GEN_DIR}/qbitmap_wrapper.cpp
+${QtGui_GEN_DIR}/qbrush_wrapper.cpp
+${QtGui_GEN_DIR}/qchildwindowevent_wrapper.cpp
+${QtGui_GEN_DIR}/qclipboard_wrapper.cpp
+${QtGui_GEN_DIR}/qcloseevent_wrapper.cpp
+${QtGui_GEN_DIR}/qcolor_wrapper.cpp
+${QtGui_GEN_DIR}/qcolorspace_wrapper.cpp
+${QtGui_GEN_DIR}/qcolorconstants_wrapper.cpp
+${QtGui_GEN_DIR}/qcolorconstants_svg_wrapper.cpp
+${QtGui_GEN_DIR}/qcolortransform_wrapper.cpp
+${QtGui_GEN_DIR}/qconicalgradient_wrapper.cpp
+${QtGui_GEN_DIR}/qcontextmenuevent_wrapper.cpp
+${QtGui_GEN_DIR}/qcursor_wrapper.cpp
+${QtGui_GEN_DIR}/qdesktopservices_wrapper.cpp
+${QtGui_GEN_DIR}/qdoublevalidator_wrapper.cpp
+${QtGui_GEN_DIR}/qdrag_wrapper.cpp
+${QtGui_GEN_DIR}/qdragenterevent_wrapper.cpp
+${QtGui_GEN_DIR}/qdragleaveevent_wrapper.cpp
+${QtGui_GEN_DIR}/qdragmoveevent_wrapper.cpp
+${QtGui_GEN_DIR}/qdropevent_wrapper.cpp
+${QtGui_GEN_DIR}/qenterevent_wrapper.cpp
+${QtGui_GEN_DIR}/qeventpoint_wrapper.cpp
+${QtGui_GEN_DIR}/qexposeevent_wrapper.cpp
+${QtGui_GEN_DIR}/qfileopenevent_wrapper.cpp
+${QtGui_GEN_DIR}/qfocusevent_wrapper.cpp
+${QtGui_GEN_DIR}/qfont_wrapper.cpp
+${QtGui_GEN_DIR}/qfont_tag_wrapper.cpp
+${QtGui_GEN_DIR}/qfontdatabase_wrapper.cpp
+${QtGui_GEN_DIR}/qfontinfo_wrapper.cpp
+${QtGui_GEN_DIR}/qfontmetrics_wrapper.cpp
+${QtGui_GEN_DIR}/qfontmetricsf_wrapper.cpp
+${QtGui_GEN_DIR}/qglyphrun_wrapper.cpp
+${QtGui_GEN_DIR}/qgradient_wrapper.cpp
+${QtGui_GEN_DIR}/qguiapplication_wrapper.cpp
+${QtGui_GEN_DIR}/qhelpevent_wrapper.cpp
+${QtGui_GEN_DIR}/qhideevent_wrapper.cpp
+${QtGui_GEN_DIR}/qhoverevent_wrapper.cpp
+${QtGui_GEN_DIR}/qicon_wrapper.cpp
+${QtGui_GEN_DIR}/qicondragevent_wrapper.cpp
+${QtGui_GEN_DIR}/qiconengine_scaledpixmapargument_wrapper.cpp
+${QtGui_GEN_DIR}/qiconengine_wrapper.cpp
+${QtGui_GEN_DIR}/qimage_wrapper.cpp
+${QtGui_GEN_DIR}/qimageiohandler_wrapper.cpp
+${QtGui_GEN_DIR}/qimagereader_wrapper.cpp
+${QtGui_GEN_DIR}/qimagewriter_wrapper.cpp
+${QtGui_GEN_DIR}/qinputdevice_wrapper.cpp
+${QtGui_GEN_DIR}/qinputevent_wrapper.cpp
+${QtGui_GEN_DIR}/qinputmethod_wrapper.cpp
+${QtGui_GEN_DIR}/qinputmethodevent_attribute_wrapper.cpp
+${QtGui_GEN_DIR}/qinputmethodevent_wrapper.cpp
+${QtGui_GEN_DIR}/qinputmethodqueryevent_wrapper.cpp
+${QtGui_GEN_DIR}/qintvalidator_wrapper.cpp
+${QtGui_GEN_DIR}/qkeyevent_wrapper.cpp
+${QtGui_GEN_DIR}/qkeysequence_wrapper.cpp
+${QtGui_GEN_DIR}/qlineargradient_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix2x2_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix2x3_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix2x4_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix3x2_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix3x3_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix3x4_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix4x2_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix4x3_wrapper.cpp
+${QtGui_GEN_DIR}/qmatrix4x4_wrapper.cpp
+${QtGui_GEN_DIR}/qmouseevent_wrapper.cpp
+${QtGui_GEN_DIR}/qmoveevent_wrapper.cpp
+${QtGui_GEN_DIR}/qmovie_wrapper.cpp
+${QtGui_GEN_DIR}/qnativegestureevent_wrapper.cpp
+${QtGui_GEN_DIR}/qnativeinterface_wrapper.cpp
+${QtGui_GEN_DIR}/qoffscreensurface_wrapper.cpp
+${QtGui_GEN_DIR}/qpagedpaintdevice_wrapper.cpp
+${QtGui_GEN_DIR}/qpagelayout_wrapper.cpp
+${QtGui_GEN_DIR}/qpageranges_wrapper.cpp
+${QtGui_GEN_DIR}/qpageranges_range_wrapper.cpp
+${QtGui_GEN_DIR}/qpagesize_wrapper.cpp
+${QtGui_GEN_DIR}/qpaintdevice_wrapper.cpp
+${QtGui_GEN_DIR}/qpaintdevicewindow_wrapper.cpp
+${QtGui_GEN_DIR}/qpaintengine_wrapper.cpp
+${QtGui_GEN_DIR}/qpaintenginestate_wrapper.cpp
+${QtGui_GEN_DIR}/qpainter_pixmapfragment_wrapper.cpp
+${QtGui_GEN_DIR}/qpainter_wrapper.cpp
+${QtGui_GEN_DIR}/qpainterpath_element_wrapper.cpp
+${QtGui_GEN_DIR}/qpainterpath_wrapper.cpp
+${QtGui_GEN_DIR}/qpainterpathstroker_wrapper.cpp
+${QtGui_GEN_DIR}/qpaintevent_wrapper.cpp
+${QtGui_GEN_DIR}/qpalette_wrapper.cpp
+${QtGui_GEN_DIR}/qpdfwriter_wrapper.cpp
+${QtGui_GEN_DIR}/qpen_wrapper.cpp
+${QtGui_GEN_DIR}/qpicture_wrapper.cpp
+${QtGui_GEN_DIR}/qpixmap_wrapper.cpp
+${QtGui_GEN_DIR}/qpixmapcache_key_wrapper.cpp
+${QtGui_GEN_DIR}/qpixmapcache_wrapper.cpp
+${QtGui_GEN_DIR}/qpixelformat_wrapper.cpp
+${QtGui_GEN_DIR}/qplatformsurfaceevent_wrapper.cpp
+${QtGui_GEN_DIR}/qpointerevent_wrapper.cpp
+${QtGui_GEN_DIR}/qpointingdevice_wrapper.cpp
+${QtGui_GEN_DIR}/qpointingdeviceuniqueid_wrapper.cpp
+${QtGui_GEN_DIR}/qpolygon_wrapper.cpp
+${QtGui_GEN_DIR}/qpolygonf_wrapper.cpp
+${QtGui_GEN_DIR}/qpytextobject_wrapper.cpp
+${QtGui_GEN_DIR}/qquaternion_wrapper.cpp
+${QtGui_GEN_DIR}/qradialgradient_wrapper.cpp
+${QtGui_GEN_DIR}/qregularexpressionvalidator_wrapper.cpp
+${QtGui_GEN_DIR}/qrgba64_wrapper.cpp
+${QtGui_GEN_DIR}/qregion_wrapper.cpp
+${QtGui_GEN_DIR}/qresizeevent_wrapper.cpp
+${QtGui_GEN_DIR}/qsessionmanager_wrapper.cpp
+${QtGui_GEN_DIR}/qshortcutevent_wrapper.cpp
+${QtGui_GEN_DIR}/qshowevent_wrapper.cpp
+${QtGui_GEN_DIR}/qsinglepointevent_wrapper.cpp
+${QtGui_GEN_DIR}/qstandarditem_wrapper.cpp
+${QtGui_GEN_DIR}/qstandarditemmodel_wrapper.cpp
+${QtGui_GEN_DIR}/qstatustipevent_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessible_state_wrapper.cpp
+${QtGui_GEN_DIR}/qaccessibleinterface_wrapper.cpp
+${QtGui_GEN_DIR}/qscreen_wrapper.cpp
+${QtGui_GEN_DIR}/qshortcut_wrapper.cpp
+${QtGui_GEN_DIR}/qrasterwindow_wrapper.cpp
+${QtGui_GEN_DIR}/qrawfont_wrapper.cpp
+${QtGui_SRC_RHI}
+${QtGui_GEN_DIR}/qscrollevent_wrapper.cpp
+${QtGui_GEN_DIR}/qscrollprepareevent_wrapper.cpp
+${QtGui_GEN_DIR}/qstatictext_wrapper.cpp
+${QtGui_GEN_DIR}/qstylehints_wrapper.cpp
+${QtGui_GEN_DIR}/qsurface_wrapper.cpp
+${QtGui_GEN_DIR}/qsurfaceformat_wrapper.cpp
+${QtGui_GEN_DIR}/qsyntaxhighlighter_wrapper.cpp
+${QtGui_GEN_DIR}/qtabletevent_wrapper.cpp
+${QtGui_GEN_DIR}/qtextblock_wrapper.cpp
+${QtGui_GEN_DIR}/qtextblockformat_wrapper.cpp
+${QtGui_GEN_DIR}/qtextblockgroup_wrapper.cpp
+${QtGui_GEN_DIR}/qtextblockuserdata_wrapper.cpp
+${QtGui_GEN_DIR}/qtextcharformat_wrapper.cpp
+${QtGui_GEN_DIR}/qtextcursor_wrapper.cpp
+${QtGui_GEN_DIR}/qtextdocument_wrapper.cpp
+${QtGui_GEN_DIR}/qtextdocumentfragment_wrapper.cpp
+${QtGui_GEN_DIR}/qtextdocumentwriter_wrapper.cpp
+${QtGui_GEN_DIR}/qtextformat_wrapper.cpp
+${QtGui_GEN_DIR}/qtextfragment_wrapper.cpp
+${QtGui_GEN_DIR}/qtextframe_wrapper.cpp
+${QtGui_GEN_DIR}/qtextframeformat_wrapper.cpp
+${QtGui_GEN_DIR}/qtextimageformat_wrapper.cpp
+${QtGui_GEN_DIR}/qtextinlineobject_wrapper.cpp
+${QtGui_GEN_DIR}/qtextitem_wrapper.cpp
+${QtGui_GEN_DIR}/qtextlayout_formatrange_wrapper.cpp
+${QtGui_GEN_DIR}/qtextlayout_wrapper.cpp
+${QtGui_GEN_DIR}/qtextlength_wrapper.cpp
+${QtGui_GEN_DIR}/qtextline_wrapper.cpp
+${QtGui_GEN_DIR}/qtextlist_wrapper.cpp
+${QtGui_GEN_DIR}/qtextlistformat_wrapper.cpp
+${QtGui_GEN_DIR}/qtextobject_wrapper.cpp
+${QtGui_GEN_DIR}/qtextobjectinterface_wrapper.cpp
+${QtGui_GEN_DIR}/qtextoption_tab_wrapper.cpp
+${QtGui_GEN_DIR}/qtextoption_wrapper.cpp
+${QtGui_GEN_DIR}/qtexttable_wrapper.cpp
+${QtGui_GEN_DIR}/qtexttablecell_wrapper.cpp
+${QtGui_GEN_DIR}/qtexttablecellformat_wrapper.cpp
+${QtGui_GEN_DIR}/qtexttableformat_wrapper.cpp
+${QtGui_GEN_DIR}/qtguihelper_qoverridecursorguard_wrapper.cpp
+${QtGui_GEN_DIR}/qtoolbarchangeevent_wrapper.cpp
+${QtGui_GEN_DIR}/qtouchevent_wrapper.cpp
+${QtGui_GEN_DIR}/qtransform_wrapper.cpp
+${QtGui_GEN_DIR}/qt_wrapper.cpp
+${QtGui_GEN_DIR}/qundocommand_wrapper.cpp
+${QtGui_GEN_DIR}/qundogroup_wrapper.cpp
+${QtGui_GEN_DIR}/qundostack_wrapper.cpp
+${QtGui_GEN_DIR}/qvalidator_wrapper.cpp
+${QtGui_GEN_DIR}/qvector2d_wrapper.cpp
+${QtGui_GEN_DIR}/qvector3d_wrapper.cpp
+${QtGui_GEN_DIR}/qvector4d_wrapper.cpp
+${QtGui_GEN_DIR}/qwhatsthisclickedevent_wrapper.cpp
+${QtGui_GEN_DIR}/qwheelevent_wrapper.cpp
+${QtGui_GEN_DIR}/qwindow_wrapper.cpp
+${QtGui_GEN_DIR}/qwindowstatechangeevent_wrapper.cpp
+# module is always needed
+${QtGui_GEN_DIR}/qtgui_module_wrapper.cpp
+)
+
+get_property(QtGui_enabled_features TARGET Qt${QT_MAJOR_VERSION}::Gui
+ PROPERTY QT_ENABLED_PUBLIC_FEATURES)
+
+if("xcb" IN_LIST QtGui_enabled_features)
+ list(APPEND QtGui_SRC
+ ${QtGui_GEN_DIR}/qnativeinterface_qx11application_wrapper.cpp)
+elseif(WIN32)
+ list(APPEND QtGui_SRC
+ ${QtGui_GEN_DIR}/qnativeinterface_qwindowsscreen_wrapper.cpp)
+endif()
+
+if("opengl" IN_LIST QtGui_enabled_features OR "opengles2" IN_LIST QtGui_enabled_features
+ OR "opengles3" IN_LIST QtGui_enabled_features)
+ list(APPEND QtGui_SRC
+ ${QtGui_GEN_DIR}/qopenglcontextgroup_wrapper.cpp
+ ${QtGui_GEN_DIR}/qopenglextrafunctions_wrapper.cpp
+ ${QtGui_GEN_DIR}/qopenglfunctions_wrapper.cpp
+ ${QtGui_GEN_DIR}/qopenglcontext_wrapper.cpp
+ ${QtGui_GEN_DIR}/qrhigles2initparams_wrapper.cpp
+ ${QtGui_GEN_DIR}/qrhigles2nativehandles_wrapper.cpp)
+else()
+ list(APPEND QtGui_DROPPED_ENTRIES
+ QOpenGLContext QOpenGLContextGroup QOpenGLPaintDevice
+ QOpenGLExtraFunctions QOpenGLFunctions
+ QRhiGles2InitParams QRhiGles2NativeHandles)
+endif()
+
+set(QtGui_private_include_dirs
+ ${Qt${QT_MAJOR_VERSION}Core_PRIVATE_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_PRIVATE_INCLUDE_DIRS})
+
+if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
+ if (QT_FEATURE_opengles2)
+ # add openGL ES 2.0
+ find_package(GLESv2 REQUIRED)
+ else()
+ message(FATAL_ERROR "QtGui requires OpenGL ES 2.0 on Android")
+ endif()
+endif()
+
+configure_file("${QtGui_SOURCE_DIR}/QtGui_global.post.h.in"
+ "${QtGui_BINARY_DIR}/QtGui_global.post.h" @ONLY)
+
+set(QtGui_include_dirs ${QtGui_SOURCE_DIR}
+ ${QtGui_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${QtGui_private_include_dirs}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ )
+set(QtGui_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Gui_LIBRARIES})
+set(QtGui_deps QtCore)
+
+create_pyside_module(NAME QtGui
+ INCLUDE_DIRS QtGui_include_dirs
+ LIBRARIES QtGui_libraries
+ DEPS QtGui_deps
+ TYPESYSTEM_PATH QtGui_SOURCE_DIR
+ SOURCES QtGui_SRC
+ STATIC_SOURCES QPYTEXTOBJECT_MOC
+ TYPESYSTEM_NAME ${QtGui_BINARY_DIR}/typesystem_gui.xml
+ DROPPED_ENTRIES QtGui_DROPPED_ENTRIES
+ ADDITIONAL_INCLUDE_DIRS QtGui_private_include_dirs)
+
+install(FILES ${pyside6_SOURCE_DIR}/qpytextobject.h
+ ${pyside6_SOURCE_DIR}/qtguihelper.h
+ DESTINATION include/PySide6/QtGui/)
+
diff --git a/sources/pyside6/PySide6/QtGui/QtGui_global.post.h.in b/sources/pyside6/PySide6/QtGui/QtGui_global.post.h.in
new file mode 100644
index 000000000..e5a0eeb90
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGui/QtGui_global.post.h.in
@@ -0,0 +1,6 @@
+#include "qpytextobject.h" // PySide class
+#include <rhi/qrhi.h>
+#include <rhi/qrhi_platform.h>
+#include <rhi/qshader.h>
+#include <qtguihelper.h>
+void qt_set_sequence_auto_mnemonic(bool b);
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui.xml
new file mode 100644
index 000000000..858989404
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGui/typesystem_gui.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtGui"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <?if windows?>
+ <load-typesystem name="QtGui/typesystem_gui_win.xml" generate="yes"/>
+ <?endif?>
+ <?if darwin?>
+ <load-typesystem name="QtGui/typesystem_gui_mac.xml" generate="yes"/>
+ <?endif?>
+ <?if unix !darwin?>
+ <load-typesystem name="QtGui/typesystem_gui_x11.xml" generate="yes"/>
+ <?endif?>
+ <load-typesystem name="QtGui/typesystem_gui_common.xml" generate="yes"/>
+ <load-typesystem name="QtGui/typesystem_gui_rhi.xml" generate="yes"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml
new file mode 100644
index 000000000..feb2dc11b
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_common.xml
@@ -0,0 +1,3182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtGui">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="templates/common.xml" generate="no"/>
+ <load-typesystem name="templates/core_common.xml" generate="no"/>
+ <load-typesystem name="templates/gui_common.xml" generate="no"/>
+ <load-typesystem name="templates/opengl_common.xml" generate="no"/>
+
+ <rejection class="^Q.*$" argument-type="^QPlatform.*$"/>
+ <function signature="qAlpha(uint)"/>
+ <function signature="qBlue(uint)"/>
+ <function signature="qGray(int,int,int)"/>
+ <function signature="qGray(uint)"/>
+ <function signature="qGreen(uint)"/>
+ <function signature="qIsGray(uint)"/>
+ <function signature="qRed(uint)"/>
+ <function signature="qRgb(int,int,int)"/>
+ <function signature="qRgba(int,int,int,int)"/>
+ <!-- qFuzzyCompare() are declared as friend functions of the respective classes only. -->
+ <declare-function signature="qFuzzyCompare(QTransform,QTransform)" return-type="bool"/>
+ <function signature="qFuzzyCompare(QTransform,QTransform)"/>
+ <declare-function signature="qFuzzyCompare(QQuaternion,QQuaternion)" return-type="bool"/>
+ <function signature="qFuzzyCompare(QQuaternion,QQuaternion)"/>
+ <declare-function signature="qFuzzyCompare(QMatrix4x4,QMatrix4x4)" return-type="bool"/>
+ <function signature="qFuzzyCompare(QMatrix4x4,QMatrix4x4)"/>
+ <declare-function signature="qFuzzyCompare(QVector2D,QVector2D)" return-type="bool"/>
+ <function signature="qFuzzyCompare(QVector2D,QVector2D)"/>
+ <declare-function signature="qFuzzyCompare(QVector3D,QVector3D)" return-type="bool"/>
+ <function signature="qFuzzyCompare(QVector3D,QVector3D)"/>
+ <declare-function signature="qFuzzyCompare(QVector4D,QVector4D)" return-type="bool"/>
+ <function signature="qFuzzyCompare(QVector4D,QVector4D)"/>
+ <function signature="qPixelFormatRgba(uchar,uchar,uchar,uchar,QPixelFormat::AlphaUsage,QPixelFormat::AlphaPosition,QPixelFormat::AlphaPremultiplied,QPixelFormat::TypeInterpretation)"/>
+ <function signature="qPixelFormatGrayscale(uchar,QPixelFormat::TypeInterpretation)"/>
+ <function signature="qPixelFormatAlpha(uchar,QPixelFormat::TypeInterpretation)"/>
+ <function signature="qPixelFormatCmyk(uchar,uchar,QPixelFormat::AlphaUsage,QPixelFormat::AlphaPosition,QPixelFormat::TypeInterpretation)"/>
+ <function signature="qPixelFormatHsl(uchar,uchar,QPixelFormat::AlphaUsage,QPixelFormat::AlphaPosition,QPixelFormat::TypeInterpretation)"/>
+ <function signature="qPixelFormatHsv(uchar,uchar,QPixelFormat::AlphaUsage,QPixelFormat::AlphaPosition,QPixelFormat::TypeInterpretation)"/>
+ <function signature="qPixelFormatYuv(QPixelFormat::YUVLayout,uchar,QPixelFormat::AlphaUsage,QPixelFormat::AlphaPosition,QPixelFormat::AlphaPremultiplied,QPixelFormat::TypeInterpretation,QPixelFormat::ByteOrder)"/>
+ <function signature="qt_set_sequence_auto_mnemonic(bool)"/>
+
+ <rejection class="^QOpenGL.*$" argument-type="^const GLboolean ?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^GLchar\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?GLchar ?\*(const)?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^char\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?char ?\*\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="GLintptr"/>
+ <rejection class="^QOpenGL.*$" argument-type="GLsizeiptr"/>
+ <rejection class="^QOpenGL.*$" argument-type="^GLu?int64 ?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^GLenum ?\*$"/> <!-- glGetProgramBinary -->
+ <rejection class="^QOpenGL.*$" argument-type="GLsync"/>
+ <rejection class="^QOpenGL.*$" argument-type="^GLubyte( const)?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?QMatrix.x. ?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="qopengl_GLintptr"/>
+ <rejection class="^QOpenGL.*$" argument-type="qopengl_GLsizeiptr"/>
+ <rejection class="^QOpenGL.*$" argument-type="QOpenGLTextureHelper*"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?QVector.D ?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?void ?\*\*$"/>
+
+ <!--
+ Event classes have a lot of non-documented protected fields, those fields
+ are removed from PySide because they are Qt implementation details,
+ besides the fact they are accessible by ordinary event methods.
+ -->
+
+ <rejection class="^Q.*Event$" field-name="^m_.*$"/>
+
+ <rejection class="QFont" enum-name="ResolveProperties"/>
+ <rejection class="QPolygon" function-name="putPoints"/>
+ <rejection class="QPolygon" function-name="setPoints"/>
+ <rejection class="QPolygon" function-name="setPoint"/>
+ <rejection class="QPolygon" function-name="point"/>
+ <rejection class="QPaintEngine" function-name="fix_neg_rect"/>
+
+ <inject-code class="native" position="beginning" file="../glue/qtgui.cpp"
+ snippet="gui-declarations"/>
+
+ <!-- For Qt::mightBeRichText(QString), Qt::convertFromPlainText(QString,Qt::WhiteSpaceMode)
+ Match on files from '/QtGui/' (shadow build) or '/gui/' (developer build)
+ or '/QtGui.framework' (macOS) -->
+ <namespace-type name="Qt" files="^.*/(gui|QtGui)[/.].*\.h$" extends="PySide6.QtCore"/>
+
+ <primitive-type name="WId" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtgui.cpp" snippet="return-pylong-voidptr"/>
+ <target-to-native>
+ <add-conversion type="PyLong" file="../glue/qtgui.cpp" snippet="conversion-pylong"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+
+ <object-type name="QAbstractFileIconProvider">
+ <enum-type name="IconType"/>
+ <enum-type name="Option" flags="Options"/>
+ </object-type>
+
+ <value-type name="QAccessible">
+ <extra-includes>
+ <include file-name="QtGui/QAccessibleInterface" location="global"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning"
+ file="../glue/qtgui.cpp"
+ snippet="qaccessible-pysidefactory"/>
+ <value-type name="State"/>
+ <enum-type name="Event"/>
+ <enum-type name="Role"/>
+ <enum-type name="Text"/>
+ <enum-type name="RelationFlag" flags="Relation"/>
+ <enum-type name="InterfaceType"/>
+ <enum-type name="TextBoundaryType"/>
+ <add-function signature="installFactory(PyCallable)" static="yes">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp"
+ snippet="qaccessible-installfactory"/>
+ </add-function>
+ </value-type>
+
+ <object-type name="QAccessibleActionInterface"/>
+ <object-type name="QAccessibleEditableTextInterface"/>
+ <object-type name="QAccessibleInterface"/>
+ <object-type name="QAccessibleObject" qt-register-metatype="base"/>
+ <object-type name="QAccessibleSelectionInterface" since="6.7"/>
+ <object-type name="QAccessibleTableCellInterface"/>
+ <object-type name="QAccessibleTextInterface"/>
+ <object-type name="QAccessibleValueInterface"/>
+
+ <object-type name="QAccessibleEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::InvalidEvent"/>
+ <object-type name="QAccessibleStateChangeEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::StateChanged"/>
+ <object-type name="QAccessibleTableModelChangeEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::TableModelChanged">
+ <enum-type name="ModelChangeType"/>
+ </object-type>
+ <object-type name="QAccessibleTextCursorEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::TextCaretMoved"/>
+ <object-type name="QAccessibleTextInsertEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::TextInserted"/>
+ <object-type name="QAccessibleTextRemoveEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::TextRemoved"/>
+ <object-type name="QAccessibleTextSelectionEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::TextSelectionChanged"/>
+ <object-type name="QAccessibleTextUpdateEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::TextUpdated"/>
+ <object-type name="QAccessibleValueChangeEvent"
+ polymorphic-id-expression="%B-&gt;type() == QAccessible::ValueChanged"/>
+
+ <object-type name="QAction">
+ <enum-type name="ActionEvent"/>
+ <enum-type name="MenuRole"/>
+ <enum-type name="Priority" since="4.6"/>
+ <!-- PYSIDE-1627 QAction::menu()/setMenu() are templates -->
+ <add-function signature="menu()const" return-type="QObject*">
+ <inject-code file="../glue/qtgui.cpp" snippet="qaction-menu"/>
+ </add-function>
+ <declare-function signature="setMenu(QObject*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </declare-function>
+ <modify-function signature="triggered(bool)" allow-thread="yes"/>
+ <add-function signature="setShortcut(Qt::Key)">
+ <inject-code file="../glue/qtgui.cpp" snippet="set-qtkey-shortcut"/>
+ </add-function>
+ </object-type>
+ <object-type name="QActionGroup">
+ <enum-type name="ExclusionPolicy"/>
+ <modify-function signature="addAction(QAction*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeAction(QAction*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QShortcut">
+ <add-function signature="QShortcut(QKeySequence&amp;,QObject*,PyCallable*,Qt::ShortcutContext=Qt::WindowShortcut)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qshortcut-1"/>
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp" snippet="qshortcut-2"/>
+ </add-function>
+ <add-function signature="QShortcut(QKeySequence::StandardKey,QObject*,PyCallable*,Qt::ShortcutContext=Qt::WindowShortcut)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qshortcut-1"/>
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp" snippet="qshortcut-2"/>
+ </add-function>
+ </object-type>
+
+ <value-type name="QTransform">
+ <enum-type name="TransformationType"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f, %f, %f, %f, %f, %f, %f, %f"/>
+ <replace from="%REPR_ARGS"
+ to="%CPPSELF.m11(), %CPPSELF.m12(), %CPPSELF.m13(), %CPPSELF.m21(), %CPPSELF.m22(), %CPPSELF.m23(), %CPPSELF.m31(), %CPPSELF.m32(), %CPPSELF.m33()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="ddddddddd"/>
+ <replace from="%REDUCE_ARGS"
+ to="%CPPSELF.m11(), %CPPSELF.m12(), %CPPSELF.m13(), %CPPSELF.m21(), %CPPSELF.m22(), %CPPSELF.m23(), %CPPSELF.m31(), %CPPSELF.m32(), %CPPSELF.m33()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <modify-function signature="map(qreal,qreal,qreal*,qreal*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <!-- ### This is just an overload to "map(qreal,qreal,qreal*,qreal*)const" and can be discarded in Python -->
+ <modify-function signature="map(int,int,int*,int*)const" remove="all"/>
+ <!-- ### -->
+
+ <modify-function signature="inverted(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[PySide6.QtGui.QTransform, bool]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+ <add-function signature="quadToQuad(QPolygonF&amp;,QPolygonF&amp;)" return-type="PyObject*" static="true">
+ <inject-code file="../glue/qtgui.cpp" snippet="qtransform-quadtoquad"/>
+ </add-function>
+ <add-function signature="quadToSquare(QPolygonF &amp;)" return-type="PyObject*" static="true">
+ <inject-code file="../glue/qtgui.cpp" snippet="qtransform-quadtosquare"/>
+ </add-function>
+
+ <add-function signature="squareToQuad(QPolygonF &amp;)" return-type="PyObject*" static="true">
+ <inject-code file="../glue/qtgui.cpp" snippet="qtransform-squaretoquad"/>
+ </add-function>
+ <!-- Disambiguate from Qt3DCore/qtransform.h -->
+ <include file-name="QtGui/qtransform.h" location="global"/>
+ </value-type>
+
+ <value-type name="QGlyphRun">
+ <enum-type name="GlyphRunFlag" flags="GlyphRunFlags"/>
+ </value-type>
+
+ <value-type name="QStaticText">
+ <enum-type name="PerformanceHint"/>
+ </value-type>
+ <value-type name="QTextFragment"/>
+ <value-type name="QBitmap" >
+ <modify-function signature="fromData(QSize,const uchar*,QImage::Format)">
+ <modify-argument index="2">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <inject-code file="../glue/qtgui.cpp" snippet="qbitmap-fromdata"/>
+ </modify-function>
+ </value-type>
+ <value-type name="QTextInlineObject"/>
+ <value-type name="QTextDocumentFragment"/>
+ <value-type name="QTextOption">
+ <!-- PYSIDE-2088, Avoid MSVC signedness issues -->
+ <enum-type name="Flag" flags="Flags" cpp-type="unsigned"/>
+ <enum-type name="TabType"/>
+ <enum-type name="WrapMode"/>
+ <value-type name="Tab"/>
+ </value-type>
+ <value-type name="QTextLine" >
+ <enum-type name="CursorPosition"/>
+ <enum-type name="Edge"/>
+ <modify-function signature="cursorToX(int*,QTextLine::Edge)const" remove="all"/>
+ <modify-function signature="cursorToX(int,QTextLine::Edge)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qtextline-cursortox"/>
+ </modify-function>
+ <modify-function signature="xToCursor(qreal,QTextLine::CursorPosition)const">
+ <modify-argument index="2">
+ <rename to="edge"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+ <value-type name="QTextTableFormat"/>
+ <value-type name="QTextImageFormat"/>
+ <value-type name="QTextFrameFormat" >
+ <enum-type name="BorderStyle"/>
+ <enum-type name="Position"/>
+ </value-type>
+ <value-type name="QTextLength">
+ <enum-type name="Type"/>
+ </value-type>
+ <value-type name="QPainterPath">
+ <enum-type name="ElementType"/>
+ <value-type name="Element">
+ <include file-name="QPainterPath" location="global"/>
+ </value-type>
+ </value-type>
+ <value-type name="QPalette">
+ <enum-type name="ColorGroup"/>
+ <enum-type name="ColorRole"/>
+ </value-type>
+ <object-type name="QInputMethod">
+ <enum-type name="Action"/>
+ </object-type>
+ <value-type name="QKeySequence">
+ <enum-type name="SequenceFormat"/>
+ <enum-type name="SequenceMatch"/>
+ <enum-type name="StandardKey"/>
+
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qkeysequence-repr"/>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="iiii"/>
+ <replace from="%REDUCE_ARGS" to="(*%CPPSELF)[0], (*%CPPSELF)[1], (*%CPPSELF)[2], (*%CPPSELF)[3]"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <modify-function signature="operator[](uint)const" remove="all"/>
+ <add-function signature="__getitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qkeysequence-getitem"/>
+ </add-function>
+
+ <!-- ### Not necessary due the PySide QVariant conversion rules -->
+ <modify-function signature="operator QVariant()const" remove="all"/>
+ </value-type>
+ <value-type name="QPicture" >
+ <modify-function signature="load(QIODevice*)" allow-thread="yes"/>
+ <modify-function signature="load(const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="save(QIODevice*)" allow-thread="yes"/>
+ <modify-function signature="save(const QString&amp;)" allow-thread="yes"/>
+ <!-- See bug 759 -->
+ <modify-function signature="data()const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <inject-code file="../glue/qtgui.cpp" snippet="qpicture-data"/>
+ </modify-function>
+ <modify-function signature="setData(const char*,uint)">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ <conversion-rule class="target">
+ <insert-template name="const_char_pybuffer"/>
+ </conversion-rule>
+ <conversion-rule class="native">
+ <insert-template name="pybuffer_const_char"/>
+ </conversion-rule>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ <conversion-rule class="native">
+ <insert-template name="uint_remove"/>
+ </conversion-rule>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+ <value-type name="QRegion" >
+ <enum-type name="RegionType"/>
+ <add-function signature="__len__">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qregion-len"/>
+ </add-function>
+ <add-function signature="__getitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qregion-getitem"/>
+ </add-function>
+ <!-- ### This operator does not make sense in Python. -->
+ <modify-function signature="operator&amp;=(QRegion)" remove="all"/>
+ <modify-function signature="operator&amp;=(QRect)" remove="all"/>
+ <!-- ### -->
+ </value-type>
+
+ <value-type name="QTextBlock">
+ <value-type name="iterator" >
+ <include file-name="QTextBlock" location="global"/>
+ <!-- ### These operators where removed because they don't make sense in Python.
+ The iterator methods (__iter__, next) replace this functionality. -->
+ <modify-function signature="operator++()" remove="all"/>
+ <modify-function signature="operator--()" remove="all"/>
+ <!-- ### -->
+ <add-function signature="__iter__()" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="__iter__"/>
+ </inject-code>
+ </add-function>
+ <add-function signature="__next__()" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="__next__">
+ <replace from="%CPPSELF_TYPE" to="QTextBlock::iterator"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+ <add-function signature="__iter__()" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="__iter_parent__">
+ <replace from="%CPPSELF_TYPE" to="QTextBlock::iterator"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <modify-function signature="setUserData(QTextBlockUserData*)">
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp" snippet="qtextblock-setuserdata"/>
+ </modify-function>
+ <modify-function signature="userData()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp" snippet="qtextblock-userdata"/>
+ </modify-function>
+ </value-type>
+ <value-type name="QTextBlockFormat">
+ <enum-type name="LineHeightTypes" since="4.8" revision="4800"/>
+ <enum-type name="MarkerType"/>
+ </value-type>
+ <value-type name="QTextTableCellFormat"/>
+ <value-type name="QTextCharFormat" >
+ <enum-type name="FontPropertiesInheritanceBehavior"/>
+ <enum-type name="UnderlineStyle"/>
+ <enum-type name="VerticalAlignment"/>
+ </value-type>
+ <value-type name="QTextFormat" >
+ <enum-type name="FormatType" python-type="IntEnum"/>
+ <enum-type name="ObjectTypes" python-type="IntEnum"/>
+ <enum-type name="PageBreakFlag" flags="PageBreakFlags"/>
+ <enum-type name="Property" python-type="IntEnum"/>
+ </value-type>
+ <value-type name="QTextListFormat">
+ <enum-type name="Style"/>
+ </value-type>
+ <value-type name="QPolygon">
+ <extra-includes>
+ <include file-name="QTransform" location="global"/>
+ </extra-includes>
+ <!-- Expose operator==, != inherited from QList, which the parser does
+ not see due to the TMP expression of the return type. -->
+ <add-function signature="operator==(const QPolygon&amp;)" return-type="bool"/>
+ <add-function signature="operator!=(const QPolygon&amp;)" return-type="bool"/>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qpolygon-reduce">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="N"/>
+ <replace from="%REDUCE_ARGS" to="points"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!-- ### "QPolygon(int, const int*)" is an internal constructor. -->
+ <modify-function signature="QPolygon(int,const int*)" remove="all"/>
+ <!-- ### A QList parameter, for no defined type, will generate wrong code. -->
+ <modify-function signature="operator+=(QList&lt;QPoint&gt;)" remove="all"/>
+ <add-function signature="operator&lt;&lt;(QPoint)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpolygon-operatorlowerlower"/>
+ </add-function>
+ <add-function signature="operator&lt;&lt;(QList&lt;QPoint&gt;)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpolygon-operatorlowerlower"/>
+ </add-function>
+ <!-- ### -->
+ </value-type>
+ <value-type name="QPolygonF">
+ <extra-includes>
+ <include file-name="QTransform" location="global"/>
+ </extra-includes>
+ <!-- ### A QList parameter, for no defined type, will generate wrong code. -->
+ <modify-function signature="operator+=(QList&lt;QPointF&gt;)" remove="all"/>
+ <!-- ### See bug 777 -->
+ <modify-function signature="operator&lt;&lt;(QList&lt;QPointF&gt;)" remove="all"/>
+ <!-- ### -->
+ </value-type>
+ <value-type name="QIcon" >
+ <enum-type name="Mode"/>
+ <enum-type name="State"/>
+ <enum-type name="ThemeIcon" since="6.7"/>
+ <modify-function signature="QIcon(QIconEngine*)">
+ <modify-argument index="1">
+ <no-null-pointer/>
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <!-- PYSIDE-1669: Replace implicit conversion by a better explicit version -->
+ <add-function signature="addPixmap(PyPathLike@path@)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qicon-addpixmap"/>
+ </add-function>
+ </value-type>
+
+ <value-type name="QPixmap" >
+ <add-function signature="QPixmap(const QImage&amp;@image@)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qpixmap"/>
+ </add-function>
+ <modify-function signature="QPixmap(const char*const[])">
+ <modify-argument index="1">
+ <replace-type modified-type="PySequence"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="load_xpm"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="QPixmap(const QString &amp;, const char *, QFlags&lt;Qt::ImageConversionFlag&gt;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <!-- ### Operator ! doesn't make sense in Python. -->
+ <modify-function signature="operator!()const" remove="all"/>
+
+ <modify-function signature="loadFromData(const uchar*,uint,const char*,QFlags&lt;Qt::ImageConversionFlag&gt;)">
+ <inject-documentation format="target" mode="append">
+ This method must be used with an QPixmap object, not the class:
+
+ ::
+
+ # Wrong
+ pixmap = QPixmap.loadFromData(...)
+
+ # Right
+ pixmap = QPixmap().loadFromData(...)
+
+ </inject-documentation>
+ <modify-argument index="1">
+ <replace-type modified-type="PyBytes"/>
+ <conversion-rule class="native">
+ <insert-template name="pybytes_const_uchar"/>
+ </conversion-rule>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ <conversion-rule class="native">
+ <insert-template name="pybytes_uint"/>
+ </conversion-rule>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+ <value-type name="QTextCursor" >
+ <extra-includes>
+ <include file-name="QTextBlock" location="global"/>
+ <include file-name="QTextDocumentFragment" location="global"/>
+ </extra-includes>
+ <enum-type name="MoveMode"/>
+ <enum-type name="MoveOperation"/>
+ <enum-type name="SelectionType"/>
+ <modify-function signature="selectedTableCells(int*,int*,int*,int*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ <inject-code class="native" position="end">
+ <insert-template name="fix_native_return_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="currentFrame()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="currentTable()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="currentList()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertTable(int,int,const QTextTableFormat &amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertTable(int,int)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+
+ <value-type name="QConicalGradient" polymorphic-id-expression="%B-&gt;type() == QGradient::ConicalGradient"/>
+ <value-type name="QFontInfo"/>
+ <value-type name="QRadialGradient" polymorphic-id-expression="%B-&gt;type() == QGradient::RadialGradient"/>
+ <value-type name="QFont" >
+ <enum-type name="Capitalization"/>
+ <enum-type name="SpacingType"/>
+ <enum-type name="Stretch" python-type="IntEnum"/>
+ <enum-type name="Style"/>
+ <enum-type name="StyleHint"/>
+ <enum-type name="StyleStrategy" python-type="Flag"/>
+ <enum-type name="Weight" python-type="IntEnum"/>
+ <enum-type name="HintingPreference" since="4.8" revision="4800"/>
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ </extra-includes>
+ <value-type name="Tag" since="6.7"/>
+ <!-- PYSIDE-1685: QFont(QString) should be checked first, else it will be interpreted as sequence -->
+ <modify-function signature="QFont(const QString&amp;,int,int, bool)" overload-number="0"/>
+ <modify-function signature="QFont(const QStringList &amp;,int,int, bool)" overload-number="1"/>
+ <modify-function signature="setStyleHint(QFont::StyleHint,QFont::StyleStrategy)">
+ <modify-argument index="2">
+ <rename to="strategy"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+ <value-type name="QTextTableCell" >
+ <extra-includes>
+ <include file-name="QTextCursor" location="global"/>
+ </extra-includes>
+ </value-type> <!--
+ <function signature="QImageCleanupFunction(void*)">
+ <extra-includes>
+ <include file-name="QImage" location="global"/>
+ </extra-includes>
+ </function> -->
+ <primitive-type name="QImageCleanupFunction"/>
+
+ <value-type name="QImage">
+ <enum-type name="Format"/>
+ <enum-type name="InvertMode"/>
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning"
+ file="../glue/qtgui.cpp" snippet="qimage-decref-image-data"/>
+
+ <modify-function signature="load(const QString&amp;, const char*)" allow-thread="yes"/>
+ <modify-function signature="load(QIODevice*,const char*)" allow-thread="yes"/>
+ <modify-function signature="save(const QString&amp;,const char*,int)const" allow-thread="yes"/>
+ <modify-function signature="save(QIODevice*,const char*,int)const" allow-thread="yes"/>
+ <modify-function signature="QImage(uchar*,int,int,qsizetype,QImage::Format,QImageCleanupFunction,void*)">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <inject-code>
+ <insert-template name="qimage_buffer_constructor">
+ <replace from="%ARGS" to="%2, %3, %4, %5"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="QImage(uchar*,int,int,QImage::Format,QImageCleanupFunction,void*)">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ </modify-argument>
+ <inject-code>
+ <insert-template name="qimage_buffer_constructor">
+ <replace from="%ARGS" to="%2, %3, %4"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="QImage(const QString&amp;, const char *)" allow-thread="yes">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+
+ <add-function signature="QImage(QString&amp;,int,int,int,QImage::Format)">
+ <inject-code>
+ <insert-template name="qimage_buffer_constructor">
+ <replace from="%ARGS" to="%2, %3, %4, %5"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QImage(QString&amp;,int,int,QImage::Format)">
+ <inject-code>
+ <insert-template name="qimage_buffer_constructor">
+ <replace from="%ARGS" to="%2, %3, %4"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!-- The non-const versions are already used -->
+ <modify-function signature="QImage(const uchar*,int,int,qsizetype,QImage::Format,QImageCleanupFunction,void*)" remove="all"/>
+ <modify-function signature="QImage(const uchar*,int,int,QImage::Format,QImageCleanupFunction,void*)" remove="all"/>
+ <!-- ### -->
+
+ <modify-function signature="QImage(const char*const[])">
+ <modify-argument index="1">
+ <replace-type modified-type="PySequence"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="load_xpm"/>
+ </inject-code>
+ </modify-function>
+ <!-- ### There is already an fromData with a QByteArray type (that is convertible from Python's str) as the first type. -->
+ <modify-function signature="fromData(const uchar*,int,const char*)" remove="all"/>
+ <!-- ### There is already an loadFromData with a QByteArray type (that is convertible from Python's str) as the first type. -->
+ <modify-function signature="loadFromData(const uchar*,int,const char*)" remove="all"/>
+
+ <modify-function signature="constBits()const" since="4.7">
+ <inject-code file="../glue/qtgui.cpp" snippet="qimage-constbits"/>
+ </modify-function>
+ <modify-function signature="bits()">
+ <inject-code file="../glue/qtgui.cpp" snippet="qimage-bits"/>
+ </modify-function>
+ <modify-function signature="constScanLine(int)const" since="4.7">
+ <inject-code file="../glue/qtgui.cpp" snippet="qimage-constscanline"/>
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="scanLine(int)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qimage-scanline"/>
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ </modify-function>
+ <!--
+ Only the non-const version of bits() and scanLine() is exported to Python
+ If the user don't want to detach the QImage data he must use constBits or constScanLine
+ as Python doesn't have the concept of constness.
+ -->
+ <modify-function signature="bits()const" remove="all"/>
+ <modify-function signature="scanLine(int)const" remove="all"/>
+ <modify-function signature="invertPixels(QImage::InvertMode)">
+ <modify-argument index="1">
+ <rename to="mode"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+
+ <value-type name="QCursor" >
+ <extra-includes>
+ <include file-name="QPixmap" location="global"/>
+ <include file-name="Qt" location="global"/>
+ </extra-includes>
+ </value-type>
+ <value-type name="QFontDatabase" >
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ </extra-includes>
+ <enum-type name="SystemFont"/>
+ <enum-type name="WritingSystem"/>
+ </value-type>
+ <value-type name="QPen">
+ <extra-includes>
+ <include file-name="QBrush" location="global"/>
+ </extra-includes>
+ </value-type>
+ <value-type name="QBrush">
+ <extra-includes>
+ <include file-name="QPixmap" location="global"/>
+ </extra-includes>
+ </value-type>
+
+ <value-type name="QColor">
+ <enum-type name="NameFormat"/>
+ <enum-type name="Spec"/>
+ <extra-includes>
+ <include file-name="QVariant" location="global"/>
+ </extra-includes>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="qcolor_repr"/>
+ </inject-code>
+ </add-function>
+ <add-function signature="__str__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="qcolor_repr"/>
+ </inject-code>
+ </add-function>
+ <add-function signature="__setstate__(PyObject*)" return-type="PyObject">
+ <inject-code file="../glue/qtgui.cpp" snippet="qcolor-setstate"/>
+ </add-function>
+ <add-function signature="__reduce__" return-type="PyObject">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qcolor-reduce"/>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qcolor-totuple"/>
+ </add-function>
+ <!-- ### "QColor(QColor::Spec)" is an internal method. -->
+ <modify-function signature="QColor(QColor::Spec)" remove="all"/>
+ <!-- ### Constructor removed because we already have an overload using QString. -->
+ <modify-function signature="QColor(const char*)" remove="all"/>
+ <!-- ### -->
+ <add-function signature="QColor(QVariant)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qcolor"/>
+ </add-function>
+ <!-- get* methods. Inject code -->
+ <modify-function signature="getCmyk(int*,int*,int*,int*,int*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="5">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getCmykF(float*,float*,float*,float*,float*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="5">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*,number*">
+ <replace from="$TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getHsl(int*,int*,int*,int*)const" since="4.6">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getHslF(float*,float*,float*,float*)const" since="4.6">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getHsv(int*,int*,int*,int*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getHsvF(float*,float*,float*,float*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getRgb(int*,int*,int*,int*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getRgbF(float*,float*,float*,float*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ </value-type>
+
+ <namespace-type name="QColorConstants">
+ <extra-includes>
+ <include file-name="QColor" location="global"/>
+ </extra-includes>
+ <namespace-type name="Svg">
+ <extra-includes>
+ <include file-name="QColor" location="global"/>
+ </extra-includes>
+ </namespace-type>
+ </namespace-type>
+
+ <value-type name="QColorSpace">
+ <enum-type name="NamedColorSpace"/>
+ <enum-type name="Primaries"/>
+ <enum-type name="TransferFunction"/>
+ </value-type>
+
+ <value-type name="QColorTransform"/>
+
+ <value-type name="QRgba64"/>
+
+ <value-type name="QFontMetricsF" >
+
+ <modify-function signature="boundingRect(QChar)const" rename="boundingRectChar">
+ <modify-argument index="1">
+ <replace-type modified-type="char"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="QFontCharFix"/>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="horizontalAdvance(QChar)const" rename="horizontalAdvanceChar">
+ <modify-argument index="1">
+ <replace-type modified-type="char"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="QFontCharFix"/>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="boundingRect(QRectF,int,QString,int,int*)const">
+ <modify-argument index="5">
+ <replace-type modified-type="PyObject"/>
+ <array/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qfontmetricsf-boundingrect"/>
+ </modify-function>
+
+ <modify-function signature="size(int,QString,int,int*)const">
+ <modify-argument index="4">
+ <replace-type modified-type="PyObject"/>
+ <array/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qfontmetricsf-size"/>
+ </modify-function>
+ </value-type>
+ <value-type name="QFontMetrics" >
+
+ <modify-function signature="boundingRect(QChar)const" rename="boundingRectChar">
+ <modify-argument index="1">
+ <replace-type modified-type="char"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="QFontCharFix"/>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="horizontalAdvance(QChar)const" rename="horizontalAdvanceChar">
+ <modify-argument index="1">
+ <replace-type modified-type="char"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="QFontCharFix"/>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="boundingRect(int,int,int,int,int,QString,int,int*)const">
+ <modify-argument index="8">
+ <replace-type modified-type="PyObject"/>
+ <array/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qfontmetrics-boundingrect-1"/>
+ </modify-function>
+
+ <modify-function signature="boundingRect(QRect,int,QString,int,int*)const">
+ <modify-argument index="5">
+ <replace-type modified-type="PyObject"/>
+ <array/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qfontmetrics-boundingrect-2"/>
+ </modify-function>
+
+ <modify-function signature="size(int,QString,int,int*)const">
+ <modify-argument index="4">
+ <replace-type modified-type="PyObject"/>
+ <array/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qfontmetrics-size"/>
+ </modify-function>
+ </value-type>
+ <value-type name="QGradient" polymorphic-id-expression="%B-&gt;type() == QGradient::NoGradient">
+ <enum-type name="CoordinateMode"/>
+ <enum-type name="InterpolationMode"/>
+ <enum-type name="Preset"/>
+ <enum-type name="Spread"/>
+ <enum-type name="Type"/>
+ </value-type>
+ <value-type name="QLinearGradient" polymorphic-id-expression="%B-&gt;type() == QGradient::LinearGradient"/>
+ <object-type name="QPaintDevice">
+ <enum-type name="PaintDeviceMetric"/>
+ </object-type>
+ <object-type name="QPagedPaintDevice">
+ <enum-type name="PdfVersion"/>
+ </object-type>
+ <object-type name="QAbstractTextDocumentLayout">
+ <value-type name="PaintContext" >
+ <include file-name="QAbstractTextDocumentLayout" location="global"/>
+ </value-type>
+ <value-type name="Selection"/>
+ <modify-function signature="setPaintDevice(QPaintDevice*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="draw(QPainter*,QAbstractTextDocumentLayout::PaintContext)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawInlineObject(QPainter*,QRectF,QTextInlineObject,int,QTextFormat)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="update(const QRectF &amp;)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QPyTextObject"/>
+
+ <object-type name="QDesktopServices" since="4.2">
+ <modify-function signature="openUrl(const QUrl&amp;)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QDoubleValidator">
+ <enum-type name="Notation"/>
+ </object-type>
+ <object-type name="QIconEngine">
+ <object-type name="ScaledPixmapArgument"/>
+ <enum-type name="IconEngineHook"/>
+ <modify-function signature="paint(QPainter*,QRect,QIcon::Mode,QIcon::State)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="read(QDataStream&amp;)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="write(QDataStream&amp;)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <!-- ### This makes little sense in Python. Could be reassessed later. -->
+ <modify-function signature="virtual_hook(int,void*)" remove="all"/>
+ </object-type>
+ <object-type name="QImageWriter">
+ <enum-type name="ImageWriterError"/>
+ <modify-function signature="setDevice(QIODevice*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="write(const QImage&amp;)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QIntValidator"/>
+
+ <object-type name="QPainterPathStroker" copyable="false"/>
+ <object-type name="QPixmapCache">
+ <value-type name="Key"/>
+ <add-function signature="find(QPixmapCache::Key&amp;)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpixmapcache-find"/>
+ </add-function>
+ <add-function signature="find(const QString&amp;)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpixmapcache-find"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QRegularExpressionValidator"/>
+
+ <object-type name="QStandardItem">
+ <enum-type name="ItemType"/>
+ <modify-function signature="operator&lt;(QStandardItem)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="read(QDataStream&amp;)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="write(QDataStream&amp;)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+
+ <modify-function signature="appendColumn(const QList&lt;QStandardItem*&gt; &amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="appendRow(const QList&lt;QStandardItem*&gt; &amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="appendRow(QStandardItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="appendRows(const QList&lt;QStandardItem*&gt; &amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="insertColumn(int,const QList&lt;QStandardItem*&gt; &amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRow(int,const QList&lt;QStandardItem*&gt; &amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRows(int,const QList&lt;QStandardItem*&gt; &amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="setChild(int,int,QStandardItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qstandarditem-setchild-1"/>
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setChild(int,QStandardItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qstandarditem-setchild-2"/>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="takeChild(int,int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="clone()const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="target"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QSyntaxHighlighter">
+ <modify-function signature="setCurrentBlockUserData(QTextBlockUserData*)">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setDocument(QTextDocument*)">
+ <modify-argument index="1" pyi-type="Optional[PySide6.QtGui.QTextDocument]">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="document()const">
+ <modify-argument index="this">
+ <parent index="return" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QTextBlockGroup"/>
+ <object-type name="QTextBlockUserData"/>
+ <object-type name="QTextItem">
+ <enum-type name="RenderFlag" flags="RenderFlags"/>
+ </object-type>
+ <object-type name="QTextList"/>
+ <object-type name="QTextObject"/>
+ <object-type name="QTextObjectInterface" >
+ <modify-function signature="drawObject(QPainter*,QRectF,QTextDocument*,int,QTextFormat)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QValidator">
+ <enum-type name="State"/>
+ <modify-function signature="fixup(QString &amp;)const">
+ <modify-argument index="return">
+ <replace-type modified-type="QString"/>
+ </modify-argument>
+ <inject-code class="native" position="end">
+ <insert-template name="return_QString_native"/>
+ </inject-code>
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qstring-return"/>
+ </modify-function>
+ <modify-function signature="validate(QString &amp;,int &amp;)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ <conversion-rule class="native">
+ <insert-template name="validator_conversionrule"/>
+ </conversion-rule>
+ </modify-argument>
+ <inject-code class="target" position="end">
+ <insert-template name="return_tuple_QValidator_QString_int"/>
+ </inject-code>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QActionEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::ActionAdded || %B-&gt;type() == QEvent::ActionRemoved || %B-&gt;type() == QEvent::ActionChanged"/>
+ <object-type name="QCloseEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Close"/>
+ <object-type name="QContextMenuEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::ContextMenu">
+ <enum-type name="Reason"/>
+ </object-type>
+
+ <value-type name="QEventPoint">
+ <enum-type name="State"/>
+ </value-type>
+ <object-type name="QDragEnterEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::DragEnter">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QDragLeaveEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::DragLeave">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QDragMoveEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::DragMove">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QDropEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Drop">
+ <modify-function signature="source()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QChildWindowEvent" since="6.7"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::ChildWindowAdded || %B-&gt;type() == QEvent::ChildWindowRemoved"/>
+ <object-type name="QEnterEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::Enter"/>
+ <object-type name="QExposeEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Expose"/>
+ <object-type name="QFileOpenEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::FileOpen"/>
+ <object-type name="QFocusEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::FocusIn || %B-&gt;type() == QEvent::FocusOut">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QHelpEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::ToolTip || %B-&gt;type() == QEvent::WhatsThis"/>
+ <object-type name="QHideEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Hide"/>
+ <object-type name="QHoverEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::HoverEnter || %B-&gt;type() == QEvent::HoverLeave || %B-&gt;type() == QEvent::HoverMove"/>
+ <object-type name="QIconDragEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::IconDrag"/>
+
+ <object-type name="QInputMethodEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::InputMethod">
+ <!-- only declare this if ndef QT_NO_INPUTMETHOD -->
+ <enum-type name="AttributeType"/>
+ <value-type name="Attribute">
+ <include file-name="QInputMethodEvent" location="global"/>
+ </value-type>
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ <!-- endif ndef QT_NO_INPUTMETHOD -->
+ </object-type>
+ <object-type name="QInputMethodQueryEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::InputMethodQuery"/>
+
+ <object-type name="QMoveEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Move">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QNativeGestureEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::NativeGesture"/>
+ <object-type name="QPlatformSurfaceEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::PlatformSurface">
+ <enum-type name="SurfaceEventType"/>
+ </object-type>
+ <object-type name="QResizeEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Resize">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QShortcutEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::Shortcut">
+ </object-type>
+ <object-type name="QShowEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::Show"/>
+ <object-type name="QSinglePointEvent"/>
+ <object-type name="QStatusTipEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::StatusTip"/>
+ <object-type name="QTabletEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::TabletMove || %B-&gt;type() == QEvent::TabletPress || %B-&gt;type() == QEvent::TabletRelease">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QToolBarChangeEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::ToolBarChange"/>
+ <object-type name="QWhatsThisClickedEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::WhatsThisClicked"/>
+ <object-type name="QWheelEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Wheel">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+
+ <object-type name="QWindowStateChangeEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::WindowStateChange">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QInputEvent"/>
+ <object-type name="QKeyEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::KeyPress || %B-&gt;type() == QEvent::KeyRelease || %B-&gt;type() == QEvent::ShortcutOverride">
+ <add-function signature="operator!=(QKeySequence::StandardKey)">
+ <inject-code class="target" file="../glue/qtgui.cpp" snippet="qkeyevent-operatornotequal"/>
+ </add-function>
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QMouseEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::MouseButtonDblClick || %B-&gt;type() == QEvent::MouseButtonPress || %B-&gt;type() == QEvent::MouseButtonRelease || %B-&gt;type() == QEvent::MouseMove">
+ <modify-function signature="globalPos() const" deprecated="yes"/>
+ <modify-function signature="localPos() const" deprecated="yes"/>
+ <modify-function signature="pos() const" deprecated="yes"/>
+ <modify-function signature="windowPos() const" deprecated="yes"/>
+ <modify-function signature="screenPos() const" deprecated="yes"/>
+ <modify-function signature="x() const" deprecated="yes"/>
+ <modify-function signature="y() const" deprecated="yes"/>
+ <modify-function signature="globalX() const" deprecated="yes"/>
+ <modify-function signature="globalY() const" deprecated="yes"/>
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QPaintEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Paint"/>
+ <object-type name="QScrollEvent" polymorphic-id-expression="%B-&gt;type() == QEvent::Scroll">
+ <enum-type name="ScrollState"/>
+ </object-type>
+ <object-type name="QPointerEvent" copyable= "false">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QScrollPrepareEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::ScrollPrepare"/>
+
+ <object-type name="QTextFrame" >
+ <extra-includes>
+ <include file-name="QTextCursor" location="global"/>
+ </extra-includes>
+ <value-type name="iterator" >
+ <include file-name="QTextFrame" location="global"/>
+ <add-function signature="__iter__()" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="__iter__"/>
+ </inject-code>
+ </add-function>
+ <add-function signature="__next__()" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="__next__">
+ <replace from="%CPPSELF_TYPE" to="QTextFrame::iterator"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+ <add-function signature="__iter__()" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="__iter_parent__">
+ <replace from="%CPPSELF_TYPE" to="QTextFrame::iterator"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </object-type>
+ <object-type name="QImageIOHandler">
+ <extra-includes>
+ <include file-name="QRect" location="global"/>
+ </extra-includes>
+ <enum-type name="ImageOption"/>
+ <enum-type name="Transformation" flags="Transformations"/>
+ <modify-function signature="setDevice(QIODevice*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QImageReader">
+ <extra-includes>
+ <include file-name="QColor" location="global"/>
+ <include file-name="QRect" location="global"/>
+ <include file-name="QSize" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QImage" location="global"/>
+ </extra-includes>
+ <enum-type name="ImageReaderError"/>
+ <!-- ### This method does not make sense in Python.
+ Update: perhaps it does, but no one is missing it. -->
+ <modify-function signature="read(QImage*)" remove="all"/>
+ <modify-function signature="read()" allow-thread="yes"/>
+ <modify-function signature="setDevice(QIODevice*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QMovie">
+ <extra-includes>
+ <include file-name="QColor" location="global"/>
+ <include file-name="QImage" location="global"/>
+ <include file-name="QPixmap" location="global"/>
+ <include file-name="QRect" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <enum-type name="CacheMode"/>
+ <enum-type name="MovieState"/>
+ <!-- ### "cacheMode()" is an internal method. -->
+ <modify-function signature="setDevice(QIODevice*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QDrag">
+ <extra-includes>
+ <include file-name="QPoint" location="global"/>
+ <include file-name="QPixmap" location="global"/>
+ </extra-includes>
+ <modify-function signature="QDrag(QObject*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="source()const">
+ <modify-argument index="return">
+ <define-ownership owner="target"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="target()const">
+ <modify-argument index="return">
+ <define-ownership owner="target"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setMimeData(QMimeData*)">
+ <modify-argument index="1">
+ <!-- TODO: maybe this is not the best solution -->
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="exec(QFlags&lt;Qt::DropAction&gt;)" allow-thread="yes"/>
+ <add-function signature="exec_(QFlags&lt;Qt::DropAction&gt; @supportedActions@ = Qt::MoveAction)" return-type="Qt::DropAction">
+ <inject-code file="../glue/qtgui.cpp" snippet="qdrag-exec-arg1"/>
+ </add-function>
+ <modify-function signature="exec(QFlags&lt;Qt::DropAction&gt;,Qt::DropAction)" allow-thread="yes"/>
+ <add-function signature="exec_(QFlags&lt;Qt::DropAction&gt;,Qt::DropAction)" return-type="Qt::DropAction">
+ <inject-code file="../glue/qtgui.cpp" snippet="qdrag-exec-arg2"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QStandardItemModel" polymorphic-id-expression="qobject_cast&lt;QStandardItemModel*&gt;(%B)">
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <modify-function signature="takeItem(int,int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeHorizontalHeaderItem(int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeVerticalHeaderItem(int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="verticalHeaderItem(int)const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="horizontalHeaderItem(int)const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="invisibleRootItem()const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="item(int,int)const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="itemFromIndex(const QModelIndex&amp;)const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="itemPrototype()const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="appendRow(const QList&lt;QStandardItem*&gt;&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="appendRow(QStandardItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="insertRow(int,QStandardItem*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setHorizontalHeaderItem(int,QStandardItem*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="setItem(int,int,QStandardItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qstandarditemmodel-setitem-1"/>
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItem(int,QStandardItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qstandarditemmodel-setitem-2"/>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemPrototype(const QStandardItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="setVerticalHeaderItem(int,QStandardItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qstandarditemmodel-setverticalheaderitem"/>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="takeColumn(int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="takeRow(int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="findItems(const QString&amp;,QFlags&lt;Qt::MatchFlag&gt;,int)const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="insertColumn(int,const QList&lt;QStandardItem*&gt;&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="insertRow(int,const QList&lt;QStandardItem*&gt;&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="appendColumn(const QList&lt;QStandardItem*&gt;&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="clear()">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qstandarditemmodel-clear"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QClipboard">
+ <extra-includes>
+ <include file-name="QImage" location="global"/>
+ <include file-name="QPixmap" location="global"/>
+ </extra-includes>
+ <enum-type name="Mode"/>
+ <modify-function signature="setPixmap(const QPixmap&amp;, QClipboard::Mode)">
+ <modify-argument index="1" pyi-type="PySide6.QtGui.QPixmap"/>
+ </modify-function>
+ <add-function signature="setPixmap(PyPathLike@path@)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qclipboard-setpixmap"/>
+ </add-function>
+ <modify-function signature="setImage(const QImage&amp;, QClipboard::Mode)">
+ <modify-argument index="1" pyi-type="PySide6.QtGui.QImage"/>
+ </modify-function>
+ <add-function signature="setImage(PyPathLike@path@)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qclipboard-setimage"/>
+ </add-function>
+ <modify-function signature="setMimeData(QMimeData*,QClipboard::Mode)" allow-thread="yes">
+ <modify-argument index="1">
+ <!-- TODO: maybe this is not the best solution -->
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="text(QString&amp;,QClipboard::Mode)const">
+ <modify-argument index="return" pyi-type="Tuple[str, PySide6.QtGui.QClipboard.Mode]">
+ <replace-type modified-type="(retval, subtype)"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp" snippet="qclipboard-text"/>
+ </modify-function>
+ <modify-function signature="mimeData(QClipboard::Mode)const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QPaintEngineState">
+ <extra-includes>
+ <include file-name="QPainterPath" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QTextLayout">
+ <extra-includes>
+ <include file-name="QTextOption" location="global"/>
+ </extra-includes>
+ <enum-type name="CursorMode"/>
+ <enum-type name="GlyphRunRetrievalFlag" flags="GlyphRunRetrievalFlags" since="6.5"/>
+ <value-type name="FormatRange">
+ <include file-name="QTextLayout" location="global"/>
+ </value-type>
+ </object-type>
+ <object-type name="QTextDocument">
+ <extra-includes>
+ <include file-name="QTextBlock" location="global"/>
+ <include file-name="QTextFormat" location="global"/>
+ <include file-name="QTextCursor" location="global"/>
+ </extra-includes>
+ <enum-type name="FindFlag" flags="FindFlags"/>
+ <enum-type name="MarkdownFeature" flags="MarkdownFeatures"/>
+ <enum-type name="MetaInformation"/>
+ <enum-type name="ResourceType" python-type="IntEnum"/>
+ <enum-type name="Stacks" since="4.7"/>
+ <modify-function signature="setDocumentLayout(QAbstractTextDocumentLayout*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="object(int)const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="objectForFormat(const QTextFormat&amp;)const">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="createObject(const QTextFormat&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="target"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="print(QPagedPaintDevice*)const" allow-thread="yes" rename="print_"/>
+ </object-type>
+ <object-type name="QTextDocumentWriter" since="4.5"/>
+ <object-type name="QTextTable">
+ <extra-includes>
+ <include file-name="QTextCursor" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QPaintEngine">
+ <enum-type name="DirtyFlag" flags="DirtyFlags"/>
+ <enum-type name="PaintEngineFeature" flags="PaintEngineFeatures"/>
+ <enum-type name="PolygonDrawMode"/>
+ <enum-type name="Type"/>
+ <modify-function signature="begin(QPaintDevice*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="updateState(QPaintEngineState)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawTextItem(QPointF,QTextItem)">
+ <modify-argument index="2" invalidate-after-use="yes"/>
+ </modify-function>
+ <extra-includes>
+ <include file-name="QVarLengthArray" location="global"/>
+ </extra-includes>
+ <!-- ### "setPaintDevice(QPaintDevice*)" is an internal method. -->
+ <modify-function signature="setPaintDevice(QPaintDevice*)" remove="all"/>
+ </object-type>
+
+ <object-type name="QPainter">
+ <extra-includes>
+ <include file-name="QPainterPath" location="global"/>
+ <include file-name="QPixmap" location="global"/>
+ <include file-name="pyside_numpy.h" location="global"/>
+ </extra-includes>
+ <enum-type name="CompositionMode"/>
+ <enum-type name="PixmapFragmentHint" flags="PixmapFragmentHints" since="4.7"/>
+ <enum-type name="RenderHint" flags="RenderHints"/>
+ <value-type name="PixmapFragment" since="4.7">
+ <include file-name="QPainter" location="global"/>
+ </value-type>
+
+ <!-- ### "drawText(...)" is an internal method. -->
+ <modify-function signature="drawText(const QPointF&amp;,const QString&amp;,int,int)" remove="all"/>
+
+
+ <modify-function signature="drawConvexPolygon(const QPoint*,int)" remove="all"/>
+ <add-function signature="drawConvexPolygon(QList&lt;QPoint>)">
+ <inject-code>
+ <insert-template name="qpainter_drawlist"/>
+ </inject-code>
+ </add-function>
+ <modify-function signature="drawConvexPolygon(const QPointF*,int)" remove="all"/>
+ <add-function signature="drawConvexPolygon(QList&lt;QPointF>)">
+ <inject-code>
+ <insert-template name="qpainter_drawlist"/>
+ </inject-code>
+ </add-function>
+ <!-- ### Overloads using QList<T> does the job of these methods -->
+ <modify-function signature="drawLines(const QLine*,int)" remove="all"/>
+ <modify-function signature="drawLines(const QPoint*,int)" remove="all"/>
+ <modify-function signature="drawLines(const QPointF*,int)" remove="all"/>
+ <modify-function signature="drawRects(const QRect*,int)" remove="all"/>
+ <!-- ### -->
+ <!-- PYSIDE-1540: Preferably use the QPolygon overloads first to avoid
+ a costly sequence type check on QPolygon. -->
+ <modify-function signature="drawPoints(const QPoint*,int)" remove="all"/>
+ <add-function signature="drawPoints(QList&lt;QPoint>)" overload-number="2">
+ <inject-code>
+ <insert-template name="qpainter_drawlist"/>
+ </inject-code>
+ </add-function>
+ <add-function signature="drawPoints(QList&lt;QPointF>)" overload-number="3">
+ <inject-code>
+ <insert-template name="qpainter_drawlist"/>
+ </inject-code>
+ </add-function>
+ <modify-function signature="drawPoints(const QPolygon&amp;)" overload-number="0"/>
+ <modify-function signature="drawPoints(const QPolygonF&amp;)" overload-number="1"/>
+ <!-- Add numpy versions as separate functions since passing ndarrays to other
+ typecheck macros causes:
+ FIXME Subscripted generics cannot be used with class and instance checks -->
+ <add-function signature="drawPointsNp(PyArrayObject *@x@, PyArrayObject *@y@)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpainter-drawpointsnp-numpy-x-y"/>
+ <inject-documentation format="target" mode="append">
+ Draws the points specified by two one-dimensional, equally sized numpy arrays
+ representing the x, y values, respectively.
+ </inject-documentation>
+ </add-function>
+
+ <modify-function signature="drawPolygon(const QPoint*,int,Qt::FillRule)" remove="all"/>
+ <add-function signature="drawPolygon(QList&lt;QPoint>,Qt::FillRule)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpainter-drawpolygon"/>
+ </add-function>
+ <modify-function signature="drawPolygon(const QPointF*,int,Qt::FillRule)" remove="all"/>
+ <add-function signature="drawPolygon(QList&lt;QPointF>,Qt::FillRule)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpainter-drawpolygon"/>
+ </add-function>
+ <modify-function signature="drawPolyline(const QPoint*,int)" remove="all"/>
+ <add-function signature="drawPolyline(QList&lt;QPoint>)">
+ <inject-code>
+ <insert-template name="qpainter_drawlist"/>
+ </inject-code>
+ </add-function>
+ <!-- PYSIDE-1366: Preferably use the QPolygon overloads first to avoid
+ a costly sequence type check on QPolygon. -->
+ <modify-function signature="drawPolyline(const QPointF*,int)" remove="all"/>
+ <modify-function signature="drawPolyline(const QPolygon&amp;)" overload-number="0"/>
+ <modify-function signature="drawPolyline(const QPolygonF&amp;)" overload-number="1"/>
+ <add-function signature="drawPolyline(QList&lt;QPointF>)">
+ <inject-code>
+ <insert-template name="qpainter_drawlist"/>
+ </inject-code>
+ </add-function>
+ <modify-function signature="drawTiledPixmap(const QRect&amp;,const QPixmap&amp;,const QPoint&amp;)">
+ <modify-argument index="3">
+ <rename to="pos"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QPainter(QPaintDevice*)">
+ <modify-argument index="1">
+ <no-null-pointer/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="begin(QPaintDevice*)">
+ <modify-argument index="1">
+ <no-null-pointer/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="drawText(QRectF,int,QString,QRectF*)">
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="QRectF"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,QRectF*"/>
+ </inject-code>
+ <inject-documentation format="target" mode="prepend">
+ The function returns the bounding rectangle enclosing the whole text.
+ </inject-documentation>
+ </modify-function>
+ <modify-function signature="drawText(QRect,int,QString,QRect*)">
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="QRect"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,QRect*"/>
+ </inject-code>
+ <inject-documentation format="target" mode="prepend">
+ The function returns the bounding rectangle enclosing the whole text.
+ </inject-documentation>
+ </modify-function>
+ <modify-function signature="drawText(int,int,int,int,int,QString,QRect*)">
+ <modify-argument index="7">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,QRect*"/>
+ </inject-code>
+ <inject-documentation format="target" mode="prepend">
+ The function returns the bounding rectangle enclosing the whole text.
+ </inject-documentation>
+ </modify-function>
+ <add-function signature="__enter__()" return-type="QPainter">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpainter-enter"/>
+ </add-function>
+ <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qpainter-exit"/>
+ </add-function>
+ </object-type>
+
+ <value-type name="QGenericMatrix" generate="no"/>
+ <value-type name="QMatrix2x2" since="4.6">
+ <modify-function signature="QMatrix2x2(const float*)" remove="all"/>
+ <modify-function signature="copyDataTo(float*) const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="4"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="4"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QMatrix2x2(PySequence*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_constructor">
+ <replace from="%SIZE" to="4"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="data()" return-type="float">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="4"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMatrix2x3" since="4.6">
+ <modify-function signature="QMatrix2x3(const float*)" remove="all"/>
+ <modify-function signature="copyDataTo(float*) const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="6"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="6"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QMatrix2x3(PySequence*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_constructor">
+ <replace from="%SIZE" to="6"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="data()" return-type="float">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="6"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMatrix2x4" since="4.6">
+ <modify-function signature="QMatrix2x4(const float*)" remove="all"/>
+ <modify-function signature="copyDataTo(float*) const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="8"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="8"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QMatrix2x4(PySequence*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_constructor">
+ <replace from="%SIZE" to="8"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="data()" return-type="float">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="8"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMatrix3x2" since="4.6">
+ <modify-function signature="QMatrix3x2(const float*)" remove="all"/>
+ <modify-function signature="copyDataTo(float*) const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="6"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="6"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QMatrix3x2(PySequence*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_constructor">
+ <replace from="%SIZE" to="6"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="data()" return-type="float">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="6"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMatrix3x3" since="4.6">
+ <modify-function signature="QMatrix3x3(const float*)" remove="all"/>
+ <modify-function signature="copyDataTo(float*) const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="9"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="9"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QMatrix3x3(PySequence*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_constructor">
+ <replace from="%SIZE" to="9"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="data()" return-type="float">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="9"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMatrix3x4" since="4.6">
+ <modify-function signature="QMatrix3x4(const float*)" remove="all"/>
+ <modify-function signature="copyDataTo(float*) const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="12"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="12"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QMatrix3x4(PySequence*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_constructor">
+ <replace from="%SIZE" to="12"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="data()" return-type="float">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="12"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMatrix4x2" since="4.6">
+ <modify-function signature="QMatrix4x2(const float*)" remove="all"/>
+ <modify-function signature="copyDataTo(float*) const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="8"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="8"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QMatrix4x2(PySequence*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_constructor">
+ <replace from="%SIZE" to="8"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="data()" return-type="float">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="8"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMatrix4x3" since="4.6">
+ <modify-function signature="QMatrix4x3(const float*)" remove="all"/>
+ <modify-function signature="copyDataTo(float*) const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="12"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="12"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="QMatrix4x3(PySequence*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_constructor">
+ <replace from="%SIZE" to="12"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ <add-function signature="data()" return-type="float">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="12"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <value-type name="QMatrix4x4" since="4.6">
+ <enum-type name="Flag" flags="Flags"/>
+
+ <!-- Qt5: HAIRY TRICK ALERT ahead!
+ Qt5 partially replaced 'qreal' by float.
+ That had the side effect that all matrix types did not work any longer.
+
+ Reason (I guess):
+
+ The signature "QList<qreal>" is needed by the __reduce__ methods,
+ but created by some other object used elsewhere.
+ After the matrix type was changed, "QList<float>" was created nowhere.
+
+ I don't know an explicit way to produce the right conversion function, so what I did
+ was to create a dummy function and immediately delete it again.
+ This has the desired effect of creating the implicitly needed "QList<float>"
+ conversion, although the dummy function goes away.
+
+ Q: Do you know a better solution?
+ -->
+ <add-function signature="__dummy(const QList&lt;float &gt; &amp;)"/>
+ <modify-function signature="__dummy(const QList&lt;float &gt; &amp;)" remove="all"/>
+ <!-- that was the trick ^^^^^^^^^^^^^^^^^^^^^^ -->
+
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code_matrix">
+ <replace from="%MATRIX_SIZE" to="16"/>
+ <replace from="%MATRIX_TYPE" to="float"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code_matrix">
+ <replace from="%MATRIX_TYPE" to="float"/>
+ <replace from="%MATRIX_SIZE" to="16"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!-- ### "QMatrix4x4(const float*,int,int)" is an internal constructor. -->
+ <modify-function signature="QMatrix4x4(const float*,int,int)" remove="all"/>
+
+ <modify-function signature="QMatrix4x4(const float*)">
+ <modify-argument index="1">
+ <replace-type modified-type="PySequence"/>
+ <array/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qmatrix4x4"/>
+ </modify-function>
+ <modify-function signature="data()">
+ <inject-code class="target" position="beginning">
+ <insert-template name="matrix_data_function">
+ <replace from="%MATRIX_SIZE" to="16"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="copyDataTo(float*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="Tuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qmatrix4x4-copydatato"/>
+ </modify-function>
+
+ <modify-function signature="inverted(bool*)const">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[PySide6.QtGui.QMatrix4x4, bool]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+
+ <!-- ### "constData() const" and "data() const" are unnecessary in Python and their function is performed by "data()". -->
+ <modify-function signature="data()const" remove="all"/>
+ <modify-function signature="constData()const" remove="all"/>
+ <!-- ### -->
+ <modify-function signature="operator()(int,int)const" remove="all"/>
+ <modify-function signature="operator()(int,int)" remove="all"/>
+ <add-function signature="__mgetitem__" return-type="PyObject*">
+ <inject-code file="../glue/qtgui.cpp" snippet="qmatrix4x4-mgetitem"/>
+ </add-function>
+ </value-type>
+
+ _______ end of matrix block _______ -->
+
+ <value-type name="QQuaternion" since="4.6">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f, %f, %f"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.scalar(), %CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="dddd"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.scalar(), %CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <!-- There can be only one return type. -->
+ <modify-function signature="getAxisAndAngle(float*,float*,float*,float*)const" remove="all"/>
+ <modify-function signature="getAxisAndAngle(QVector3D*,float*)const">
+ <modify-argument index="return" pyi-type="Tuple[PySide6.QtGui.QVector3D, float]">
+ <replace-type modified-type="(QVector3D, float)"/>
+ </modify-argument>
+ <modify-argument index="1"><remove-argument/></modify-argument>
+ <modify-argument index="2"><remove-argument/></modify-argument>
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp" snippet="qquaternion-getaxisandangle-vector3d-float"/>
+ </modify-function>
+ <modify-function signature="getEulerAngles(float*,float*,float*)const">
+ <modify-argument index="return" pyi-type="Tuple[float, float, float]">
+ <replace-type modified-type="(float, float, float)"/>
+ </modify-argument>
+ <modify-argument index="1"><remove-argument/></modify-argument>
+ <modify-argument index="2"><remove-argument/></modify-argument>
+ <modify-argument index="3"><remove-argument/></modify-argument>
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp" snippet="qquaternion-geteulerangles"/>
+ </modify-function>
+ </value-type>
+
+ <object-type name="QTouchEvent" since="4.6">
+ <add-function signature="__repr__" return-type="PyObject">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_qdebug_gui"/>
+ </inject-code>
+ </add-function>
+ </object-type>
+
+ <object-type name="QInputDevice">
+ <enum-type name="Capability" flags="Capabilities"/>
+ <enum-type name="DeviceType" flags="DeviceTypes"/>
+ </object-type>
+
+ <value-type name="QVector2D" since="4.6">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="dd"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="dd"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.x(), %CPPSELF.y()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ </value-type>
+ <value-type name="QVector3D" since="4.6">
+ <extra-includes>
+ <include file-name="QMatrix4x4" location="global"/>
+ </extra-includes>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f, %f"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="ddd"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="ddd"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ </value-type>
+ <value-type name="QVector4D" since="4.6">
+ <extra-includes>
+ <include file-name="QMatrix4x4" location="global"/>
+ </extra-includes>
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="repr_code">
+ <replace from="%REPR_FORMAT" to="%f, %f, %f, %f"/>
+ <replace from="%REPR_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z(), %CPPSELF.w()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="__reduce__" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="reduce_code">
+ <replace from="%REDUCE_FORMAT" to="dddd"/>
+ <replace from="%REDUCE_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z(), %CPPSELF.w()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+
+ <add-function signature="toTuple" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="to_tuple">
+ <replace from="%TT_FORMAT" to="dddd"/>
+ <replace from="%TT_ARGS" to="%CPPSELF.x(), %CPPSELF.y(), %CPPSELF.z(), %CPPSELF.w()"/>
+ </insert-template>
+ </inject-code>
+ </add-function>
+ </value-type>
+
+ <object-type name="QSessionManager">
+ <extra-includes>
+ </extra-includes>
+ <enum-type name="RestartHint"/>
+ <!-- ### -->
+ </object-type>
+
+ <!-- Qt5: here the new QWindow stuff and what it pulls in -->
+ <object-type name="QBackingStore"/>
+ <object-type name="QSurface">
+ <enum-type name="SurfaceClass"/>
+ <enum-type name="SurfaceType"/>
+ </object-type>
+ <rejection class="QSurface" field-name="m_reserved"/>
+ <value-type name="QSurfaceFormat">
+ <enum-type name="ColorSpace"/>
+ <enum-type name="FormatOption" flags="FormatOptions"/>
+ <enum-type name="OpenGLContextProfile"/>
+ <enum-type name="RenderableType"/>
+ <enum-type name="SwapBehavior"/>
+ </value-type>
+ <object-type name="QOffscreenSurface"/>
+ <primitive-type name="QPlatformSurface">
+ <extra-includes>
+ <include file-name="QtGui/qpa/qplatformsurface.h" location="global"/>
+ </extra-includes>
+ </primitive-type>
+
+ <object-type name="QWindow" delete-in-main-thread="true" polymorphic-base="true">
+ <enum-type name="AncestorMode"/>
+ <enum-type name="Visibility"/>
+ <modify-function signature="raise()" rename="raise_"/>
+ <!-- see QWidget::nativeEvent(), QAbstractNativeEventFilter::nativeEventFilter() -->
+ <modify-function signature="nativeEvent(const QByteArray &amp;,void*,qintptr*)">
+ <modify-argument index="3">
+ <remove-argument/>
+ <conversion-rule class="native">
+ <insert-template name="return_native_eventfilter_conversion_variables"/>
+ </conversion-rule>
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ <conversion-rule class="native">
+ <insert-template name="return_native_eventfilter_conversion"/>
+ </conversion-rule>
+ </modify-argument>
+ <inject-code position="end">
+ <insert-template name="return_native_eventfilter"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="fromWinId(WId)">
+ <modify-argument index="1">
+ <replace-type modified-type="long"/>
+ </modify-argument>
+ <inject-code file="../glue/qtgui.cpp" snippet="qwindow-fromWinId"/>
+ </modify-function>
+ <modify-function signature="show()" allow-thread="yes"/>
+ <modify-function signature="showFullScreen()" allow-thread="yes"/>
+ <modify-function signature="showMaximized()" allow-thread="yes"/>
+ <modify-function signature="showMinimized()" allow-thread="yes"/>
+ <modify-function signature="showNormal()" allow-thread="yes"/>
+ </object-type>
+
+ <object-type name="QGuiApplication">
+ <extra-includes>
+ <include file-name="QBasicTimer" location="global"/>
+ <include file-name="QFont" location="global"/>
+ <include file-name="QFontMetrics" location="global"/>
+ <include file-name="QPalette" location="global"/>
+ <include file-name="QIcon" location="global"/>
+ <include file-name="QLocale" location="global"/>
+ <include file-name="pysideqapp.h" location="global"/>
+ <include file-name="pysidecleanup.h" location="global"/>
+ <!-- QOverrideCursorGuard -->
+ <include file-name="qtguihelper.h" location="local"/>
+ </extra-includes>
+ <modify-function signature="QGuiApplication(int&amp;,char**,int)" access="private"/>
+ <add-function signature="QGuiApplication(QStringList)">
+ <inject-code file="../glue/qtgui.cpp" snippet="qguiapplication-1"/>
+ </add-function>
+ <add-function signature="QGuiApplication()">
+ <inject-code file="../glue/qtgui.cpp" snippet="qguiapplication-2"/>
+ </add-function>
+ <inject-code class="native" position="beginning" file="../glue/qtgui.cpp" snippet="qguiapplication-init"/>
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="int">
+ <inject-code file="../glue/qtgui.cpp" snippet="qguiapplication-exec"/>
+ </add-function>
+ <add-function signature="nativeInterface()const" return-type="PyObject">
+ <modify-argument index="return"> <!-- Suppress return value heuristics -->
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qguiapplication-nativeInterface"/>
+ </add-function>
+ <modify-function signature="setOverrideCursor(const QCursor&amp;)">
+ <modify-argument index="return" pyi-type="PyObject">
+ <replace-type modified-type="QtGuiHelper::QOverrideCursorGuard*"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp"
+ snippet="qguiapplication-setoverridecursor"/>
+ </modify-function>
+ </object-type>
+
+ <namespace-type name="QNativeInterface" private="yes" since="6.7">
+ <object-type name="QX11Application" private="yes" disable-wrapper="yes"
+ force-abstract="yes">
+ <configuration condition="QT_CONFIG(xcb)"/>
+ <modify-function signature="display()const">
+ <modify-argument index="return">
+ <replace-type modified-type="int"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp"
+ snippet="qx11application-resource-ptr"/>
+ </modify-function>
+ <modify-function signature="connection()const">
+ <modify-argument index="return">
+ <replace-type modified-type="int"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp"
+ snippet="qx11application-resource-ptr"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QWindowsScreen" private="yes" disable-wrapper="yes"
+ force-abstract="yes">
+ <configuration condition="#ifdef Q_OS_WIN"/>
+ </object-type>
+ </namespace-type>
+
+ <object-type name="QOpenGLContext">
+ <enum-type name="OpenGLModuleType"/>
+ </object-type>
+ <object-type name="QOpenGLContextGroup"/>
+ <!-- Compile error on Windows: QOpenGLPaintDevice::QOpenGLPaintDevice(const QOpenGLPaintDevice &)': attempting to reference a deleted function
+ <object-type name="QOpenGLPaintDevice"/>
+ -->
+ <object-type name="QOpenGLExtraFunctions">
+ <extra-includes>
+ <include file-name="QtCore/QVarLengthArray" location="global"/>
+ <include file-name="sbkcpptonumpy.h" location="global"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qopenglextrafunctions-glgeti-v-return-size"/>
+
+ <!-- Exlusions due to compile errors -->
+ <modify-function signature="glEndTransformFeedback()" remove="all"/>
+ <modify-function signature="glPauseTransformFeedback()" remove="all"/>
+ <modify-function signature="glResumeTransformFeedback()" remove="all"/>
+ <modify-function signature="^glClearBuffer.*\(.*\*.*$">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glDebugMessageControl(GLenum,GLenum,GLenum,GLsizei,const GLuint*,GLboolean)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glDeleteProgramPipelines(GLsizei,const GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glDeleteQueries(GLsizei,const GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glDeleteSamplers(GLsizei,const GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glDeleteTransformFeedbacks(GLsizei,const GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glDeleteVertexArrays(GLsizei,const GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glDrawBuffers(GLsizei,const GLenum*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGenProgramPipelines(GLsizei,GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGenQueries(GLsizei,GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGenSamplers(GLsizei,GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGenTransformFeedbacks(GLsizei,GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGenVertexArrays(GLsizei,GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetActiveUniformBlockiv(GLuint,GLuint,GLenum,GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetActiveUniformsiv(GLuint,GLsizei,const GLuint*,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetFramebufferParameteriv(GLenum,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetBooleani_v(GLenum,GLuint,GLboolean*)">
+ <modify-argument index="return" pyi-type="Union[bool,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qopenglextrafunctions-glgetbooleani-v"/>
+ </modify-function>
+ <!-- FIXME PYSIDE 7: Use the remove array modification and use
+ the version with return value instead -->
+ <modify-function signature="glGetIntegeri_v(GLenum,GLuint,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <add-function signature="glGetIntegeri_v(GLuint,GLuint)" return-type="PyObject">
+ <modify-argument index="return" pyi-type="Union[int,numpy.ndarray]"/>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qopenglextrafunctions-glgetintegeri-v"/>
+ </add-function>
+ <modify-function signature="glGetInternalformativ(GLenum,GLenum,GLenum,GLsizei,GLint*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetMultisamplefv(GLenum,GLuint,GLfloat*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetProgramInterfaceiv(GLuint,GLenum,GLenum,GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetProgramPipelineiv(GLuint,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetProgramResourceiv(GLuint,GLenum,GLuint,GLsizei,const GLenum*,GLsizei,GLsizei*,GLint*)">
+ <modify-argument index="5"><array/></modify-argument>
+ <modify-argument index="7"><array/></modify-argument>
+ <modify-argument index="8"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetQueryObjectuiv(GLuint,GLenum,GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetQueryiv(GLenum,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetSamplerParameterfv(GLuint,GLenum,GLfloat*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetSamplerParameteriv(GLuint,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetSamplerParameterIiv(GLuint,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetSamplerParameterIuiv(GLuint,GLenum,GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetTexLevelParameteriv(GLenum,GLint,GLenum,GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetTexLevelParameterfv(GLenum,GLint,GLenum,GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetTexParameterIiv(GLenum,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetTexParameterIuiv(GLenum,GLenum,GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetnUniformiv(GLuint,GLint,GLsizei,GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetnUniformuiv(GLuint,GLint,GLsizei,GLuint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetUniformuiv(GLuint,GLint,GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetVertexAttribIiv(GLuint,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetVertexAttribIuiv(GLuint,GLenum,GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glInvalidateFramebuffer(GLenum,GLsizei,const GLenum*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glInvalidateSubFramebuffer(GLenum,GLsizei,const GLenum*,GLint,GLint,GLsizei,GLsizei)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform1fv(GLuint,GLint,GLsizei,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform1iv(GLuint,GLint,GLsizei,const GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform1uiv(GLuint,GLint,GLsizei,const GLuint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform2fv(GLuint,GLint,GLsizei,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform2iv(GLuint,GLint,GLsizei,const GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform2uiv(GLuint,GLint,GLsizei,const GLuint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform3fv(GLuint,GLint,GLsizei,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform3iv(GLuint,GLint,GLsizei,const GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform3uiv(GLuint,GLint,GLsizei,const GLuint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform4fv(GLuint,GLint,GLsizei,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform4iv(GLuint,GLint,GLsizei,const GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniform4uiv(GLuint,GLint,GLsizei,const GLuint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix2fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix2x3fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix2x4fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix3fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix3x2fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix3x4fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix4fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix4x2fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glProgramUniformMatrix4x3fv(GLuint,GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="5"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^glSamplerParameterI?u?[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^glTexParameterI?u?[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniform1uiv(GLint,GLsizei,const GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniform2uiv(GLint,GLsizei,const GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniform3uiv(GLint,GLsizei,const GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniform4uiv(GLint,GLsizei,const GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniformMatrix2x3fv(GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniformMatrix2x4fv(GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniformMatrix3x2fv(GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniformMatrix3x4fv(GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniformMatrix4x2fv(GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glUniformMatrix4x3fv(GLint,GLsizei,GLboolean,const GLfloat*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glVertexAttribI4iv(GLuint,const GLint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glVertexAttribI4uiv(GLuint,const GLuint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetStringi(GLenum,GLuint)">
+ <modify-argument index="return">
+ <replace-type modified-type="QString"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtgui.cpp"
+ snippet="glgetstring-return"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QOpenGLFunctions">
+ <extra-includes>
+ <include file-name="QtCore/QVarLengthArray" location="global"/>
+ <include file-name="sbkcpptonumpy.h" location="global"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qopenglfunctions-glgetv-return-size"/>
+
+ <enum-type name="OpenGLFeature" flags="OpenGLFeatures"/>
+ <add-function signature="glGetShaderSource(GLuint @shader@)" return-type="const char *">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="glgetshadersource"/>
+ </add-function>
+ <add-function signature="glShaderSource(GLuint @shader@,const QString &amp; @source@)">
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="glshadersource"/>
+ </add-function>
+ <modify-function signature="glGetAttachedShaders(GLuint,GLsizei,GLsizei*,GLuint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetBufferParameteriv(GLenum,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetFramebufferAttachmentParameteriv(GLenum,GLenum,GLenum,GLint*)">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetBooleanv(GLenum,GLboolean*)">
+ <modify-argument index="return" pyi-type="Union[bool,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qopenglfunctions-glgetbooleanv"/>
+ </modify-function>
+ <!-- FIXME PYSIDE 7: Use the remove array modification and use
+ the version with return value instead -->
+ <modify-function signature="glGetFloatv(GLenum,GLfloat*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <add-function signature="glGetFloatv(GLuint)" return-type="PyObject">
+ <modify-argument index="return" pyi-type="Union[float,numpy.ndarray]"/>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qopenglfunctions-glgetfloatv"/>
+ </add-function>
+ <!-- FIXME PYSIDE 7: Use the remove array modification and use
+ the version with return value instead -->
+ <modify-function signature="glGetIntegerv(GLenum,GLint*)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <add-function signature="glGetIntegerv(GLuint)" return-type="PyObject">
+ <modify-argument index="return" pyi-type="Union[int,numpy.ndarray]"/>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qopenglfunctions-glgetintegerv"/>
+ </add-function>
+ <modify-function signature="glGetProgramiv(GLuint,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetRenderbufferParameteriv(GLenum,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetShaderiv(GLuint,GLenum,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetShaderPrecisionFormat(GLenum,GLenum,GLint*,GLint*)">
+ <modify-argument index="3"><array/></modify-argument>
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^glDelete.*s\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^glGen[A-Z].*s\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^gl(Get)?TexParameterI?u?[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^glUniformMatrix\dfv\(.*$">
+ <modify-argument index="4"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^gl(Get)?Uniform\d?.v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^glVertexAttrib\dfv\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="^glGetVertexAttrib[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="glGetString(GLenum)">
+ <modify-argument index="return">
+ <replace-type modified-type="QString"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="glGetString_return_QString"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="glShaderBinary(GLint,const GLuint*,GLenum,const void*,GLint)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ </object-type>
+ <!-- Classes are result of a macro expansion in src/gui/opengl/qopenglversionfunctions.h
+ <object-type name="QOpenGLFunctions_1_0"/>
+ <object-type name="QOpenGLFunctions_1_1"/>
+ <object-type name="QOpenGLFunctions_1_2"/>
+ <object-type name="QOpenGLFunctions_1_3"/>
+ <object-type name="QOpenGLFunctions_1_4"/>
+ <object-type name="QOpenGLFunctions_1_5"/>
+ <object-type name="QOpenGLFunctions_2_0">
+ <object-type name="QOpenGLFunctions_2_1"/>
+ <object-type name="QOpenGLFunctions_3_0"/>
+ <object-type name="QOpenGLFunctions_3_1"/>
+ <object-type name="QOpenGLFunctions_3_2_Compatibility"/>
+ <object-type name="QOpenGLFunctions_3_2_Core"/>
+ <object-type name="QOpenGLFunctions_3_3_Compatibility"/>
+ <object-type name="QOpenGLFunctions_3_3_Core"/>
+ <object-type name="QOpenGLFunctions_4_0_Compatibility"/>
+ <object-type name="QOpenGLFunctions_4_0_Core"/>
+ <object-type name="QOpenGLFunctions_4_1_Compatibility"/>
+ <object-type name="QOpenGLFunctions_4_1_Core"/>
+ <object-type name="QOpenGLFunctions_4_2_Compatibility"/>
+ <object-type name="QOpenGLFunctions_4_2_Core"/>
+ <object-type name="QOpenGLFunctions_4_3_Compatibility"/>
+ <object-type name="QOpenGLFunctions_4_3_Core"/>
+ <object-type name="QOpenGLFunctions_4_4_Compatibility" since="5.5/>
+ <object-type name="QOpenGLFunctions_4_4_Core"/>
+ <object-type name="QOpenGLFunctions_4_5_Compatibility/>
+ <object-type name="QOpenGLFunctions_4_5_Core"/>
+ <object-type name="QOpenGLFunctions_ES2"/>
+ -->
+ <value-type name="QPageLayout">
+ <enum-type name="Mode"/>
+ <enum-type name="Orientation"/>
+ <enum-type name="Unit"/>
+ </value-type>
+ <value-type name="QPageRanges">
+ <value-type name="Range"/>
+ </value-type>
+ <value-type name="QPageSize">
+ <enum-type name="PageSizeId"/>
+ <enum-type name="Unit"/>
+ <enum-type name="SizeMatchPolicy"/>
+ </value-type>
+ <object-type name="QPaintDeviceWindow"/>
+ <value-type name="QPixelFormat">
+ <enum-type name="AlphaUsage"/>
+ <enum-type name="AlphaPosition"/>
+ <enum-type name="AlphaPremultiplied"/>
+ <enum-type name="ByteOrder"/>
+ <enum-type name="ColorModel"/>
+ <enum-type name="TypeInterpretation"/>
+ <enum-type name="YUVLayout"/>
+ </value-type>
+ <object-type name="QPdfWriter"/>
+ <object-type name="QPointingDevice">
+ <enum-type name="PointerType" flags="PointerTypes"/>
+ <enum-type name="GrabTransition"/>
+ </object-type>
+ <value-type name="QPointingDeviceUniqueId"/>
+ <value-type name="QRawFont">
+ <enum-type name="AntialiasingType"/>
+ <enum-type name="LayoutFlag" flags="LayoutFlags"/>
+ <modify-function signature="advancesForGlyphIndexes(const quint32*,QPointF*,int)const" remove="all"/>
+ <modify-function signature="advancesForGlyphIndexes(const quint32*,QPointF*,int,QFlags&lt;QRawFont::LayoutFlag&gt;)const" remove="all"/>
+ <modify-function signature="glyphIndexesForChars(const QChar*,int,quint32*,int*)const" remove="all"/>
+ <modify-function signature="loadFromData(const QByteArray&amp;,qreal, QFont::HintingPreference)" allow-thread="yes"/>
+ <modify-function signature="loadFromFile(const QString&amp;,qreal, QFont::HintingPreference)" allow-thread="yes"/>
+ </value-type>
+ <object-type name="QRasterWindow"/>
+ <object-type name="QScreen">
+ <modify-function signature="grabWindow(WId,int,int,int,int)">
+ <modify-argument index="1">
+ <replace-type modified-type="long"/>
+ </modify-argument>
+ <inject-code file="../glue/qtgui.cpp" snippet="qscreen-grabWindow"/>
+ </modify-function>
+ <add-function signature="nativeInterface()const" return-type="PyObject">
+ <modify-argument index="return"> <!-- Suppress return value heuristics -->
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp"
+ snippet="qscreen-nativeInterface"/>
+ </add-function>
+ </object-type>
+ <object-type name="QStyleHints"/>
+
+ <object-type name="QUndoCommand">
+ <modify-function signature="mergeWith(const QUndoCommand*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QUndoGroup">
+ <modify-function signature="addStack(QUndoStack*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeStack(QUndoStack*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QUndoStack">
+ <modify-function signature="createUndoAction(QObject*,const QString&amp;)const">
+ <modify-argument index="return">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="createRedoAction(QObject*,const QString&amp;)const">
+ <modify-argument index="return">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="push(QUndoCommand*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <namespace-type name="QtGuiHelper" visible="no">
+ <object-type name="QOverrideCursorGuard" copyable="no">
+ <add-function signature="__enter__()" return-type="QtGuiHelper::QOverrideCursorGuard">
+ <inject-code file="../glue/qtcore.cpp" snippet="default-enter"/>
+ </add-function>
+ <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)">
+ <inject-code>%CPPSELF.restoreOverrideCursor();</inject-code>
+ </add-function>
+ </object-type>
+ </namespace-type>
+
+ <opaque-container name="QList" opaque-containers="QVector2D:QVector2DList;QVector3D:QVector3DList;QVector4D:QVector4DList"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_mac.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_mac.xml
new file mode 100644
index 000000000..c4f16911e
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_mac.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtGui"/>
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_rhi.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_rhi.xml
new file mode 100644
index 000000000..22ab56e20
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_rhi.xml
@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtGui">
+ <value-type name="QRhiDepthStencilClearValue" since="6.6" private="yes"/>
+ <value-type name="QRhiViewport" since="6.6" private="yes"/>
+ <value-type name="QRhiScissor" since="6.6" private="yes"/>
+ <value-type name="QRhiVertexInputBinding" since="6.6" private="yes">
+ <enum-type name="Classification"/>
+ </value-type>
+ <value-type name="QRhiVertexInputAttribute" since="6.6" private="yes">
+ <enum-type name="Format"/>
+ </value-type>
+ <value-type name="QRhiVertexInputLayout" since="6.6" private="yes">
+ <add-function signature="setBindings(QList&lt;QRhiVertexInputBinding&gt;@bindings@)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp" snippet="qrhi-initializer-list"/>
+ </add-function>
+ <add-function signature="setAttributes(QList&lt;QRhiVertexInputAttribute&gt;@attributes@)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp" snippet="qrhi-initializer-list"/>
+ </add-function>
+ </value-type>
+ <value-type name="QRhiShaderStage" since="6.6" private="yes">
+ <enum-type name="Type"/>
+ </value-type>
+ <value-type name="QRhiShaderResourceBinding" since="6.6" private="yes">
+ <enum-type name="Type"/>
+ <enum-type name="StageFlag" flags="StageFlags"/>
+ <value-type name="TextureAndSampler" private="yes"/>
+ <value-type name="Data" private="yes">
+ <value-type name="StorageImageData" private="yes"/>
+ <value-type name="StorageBufferData" private="yes"/>
+ </value-type>
+ </value-type>
+ <value-type name="QRhiColorAttachment" since="6.6" private="yes"/>
+ <value-type name="QRhiTextureRenderTargetDescription" since="6.6" private="yes">
+ <add-function signature="setColorAttachments(QList&lt;QRhiColorAttachment&gt;@bcolor_attachments@)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp" snippet="qrhi-initializer-list"/>
+ </add-function>
+ </value-type>
+ <value-type name="QRhiTextureSubresourceUploadDescription" since="6.6" private="yes"/>
+ <value-type name="QRhiTextureUploadEntry" since="6.6" private="yes"/>
+ <value-type name="QRhiTextureUploadDescription" since="6.6" private="yes">
+ <add-function signature="setEntries(QList&lt;QRhiTextureUploadEntry&gt;@entries@)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp" snippet="qrhi-initializer-list"/>
+ </add-function>
+ </value-type>
+ <value-type name="QRhiTextureCopyDescription" since="6.6" private="yes"/>
+ <value-type name="QRhiReadbackDescription" since="6.6" private="yes"/>
+ <value-type name="QRhiNativeHandles" since="6.6" private="yes"/>
+ <object-type name="QRhiResource" since="6.6" private="yes">
+ <enum-type name="Type"/>
+ </object-type>
+ <object-type name="QRhiBuffer" since="6.6" private="yes">
+ <enum-type name="Type"/>
+ <enum-type name="UsageFlag" flags="UsageFlags"/>
+ <!-- const char * mixup -->
+ <modify-function signature="beginFullDynamicBufferUpdateForCurrentFrame()" remove="all"/>
+ </object-type>
+ <object-type name="QRhiTexture" since="6.6" private="yes">
+ <enum-type name="Format"/>
+ <enum-type name="Flag" flags="Flags"/>
+ </object-type>
+ <object-type name="QRhiSampler" since="6.6" private="yes">
+ <enum-type name="Filter"/>
+ <enum-type name="AddressMode"/>
+ <enum-type name="CompareOp"/>
+ </object-type>
+ <object-type name="QRhiRenderBuffer" since="6.6" private="yes">
+ <enum-type name="Type"/>
+ <enum-type name="Flag" flags="Flags"/>
+ </object-type>
+ <object-type name="QRhiRenderPassDescriptor" since="6.6" private="yes"/>
+ <object-type name="QRhiRenderTarget" since="6.6" private="yes"/>
+ <object-type name="QRhiSwapChainRenderTarget" since="6.6" private="yes"/>
+ <object-type name="QRhiTextureRenderTarget" since="6.6" private="yes">
+ <enum-type name="Flag" flags="Flags"/>
+ </object-type>
+ <object-type name="QRhiShaderResourceBindings" since="6.6" private="yes">
+ <enum-type name="UpdateFlag" flags="UpdateFlags"/>
+ <modify-field name="BINDING_PREALLOC" remove="true"/>
+ <add-function signature="setBindings(QList&lt;QRhiShaderResourceBinding&gt;@bindings@)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp" snippet="qrhi-initializer-list"/>
+ </add-function>
+ </object-type>
+ <object-type name="QRhiGraphicsPipeline" since="6.6" private="yes">
+ <enum-type name="Flag" flags="Flags"/>
+ <enum-type name="BlendOp"/>
+ <enum-type name="Topology"/>
+ <enum-type name="CullMode"/>
+ <enum-type name="FrontFace"/>
+ <enum-type name="ColorMaskComponent" flags="ColorMask"/>
+ <enum-type name="BlendFactor"/>
+ <enum-type name="CompareOp"/>
+ <enum-type name="StencilOp"/>
+ <enum-type name="PolygonMode"/>
+ <value-type name="StencilOpState" private="yes"/>
+ <value-type name="TargetBlend" private="yes"/>
+ <add-function signature="setShaderStages(QList&lt;QRhiShaderStage&gt;@stages@)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp"
+ snippet="qrhi-initializer-list"/>
+ </add-function>
+ <add-function signature="setTargetBlends(QList&lt;QRhiGraphicsPipeline::TargetBlend&gt;@blends@)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp"
+ snippet="qrhi-initializer-list"/>
+ </add-function>
+ </object-type>
+ <object-type name="QRhiSwapChain" since="6.6" private="yes">
+ <enum-type name="Flag" flags="Flags"/>
+ <enum-type name="Format"/>
+ <enum-type name="StereoTargetBuffer"/>
+ </object-type>
+ <object-type name="QRhiComputePipeline" since="6.6" private="yes">
+ <enum-type name="Flag" flags="Flags"/>
+ </object-type>
+ <object-type name="QRhiCommandBuffer" since="6.6" private="yes">
+ <enum-type name="BeginPassFlag" flags="BeginPassFlags"/>
+ <enum-type name="IndexFormat"/>
+ <modify-function signature="^setVertexInput\(.*\)$" remove="all"/>
+ <add-function signature="setVertexInput(int@startBinding@,QList&lt;std::pair&lt;QRhiBuffer*,quint32&gt;&gt;@bindings@,QRhiBuffer*@indexBuf@=nullptr,quint32@indexOffset@=0,QRhiCommandBuffer::IndexFormat @indexFormat@ = QRhiCommandBuffer::IndexUInt16)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtgui.cpp"
+ snippet="qrhi-commandbuffer-setvertexinput"/>
+ </add-function>
+ </object-type>
+ <value-type name="QRhiReadbackResult" since="6.6" private="yes"/>
+ <object-type name="QRhiResourceUpdateBatch" since="6.6" private="yes"/>
+ <value-type name="QRhiDriverInfo" since="6.6" private="yes">
+ <enum-type name="DeviceType"/>
+ </value-type>
+ <value-type name="QRhiStats" since="6.6" private="yes"/>
+ <value-type name="QRhiInitParams" since="6.6" private="yes"/>
+ <value-type name="QRhiNullInitParams" since="6.6" private="yes"/>
+ <value-type name="QRhiGles2InitParams" since="6.6" private="yes"/>
+ <value-type name="QRhiGles2NativeHandles" since="6.6" private="yes"/>
+ <?if windows?>
+ <value-type name="QRhiD3D11InitParams" since="6.6" private="yes"/>
+ <value-type name="QRhiD3D11NativeHandles" since="6.6" private="yes"/>
+ <value-type name="QRhiD3D12InitParams" since="6.6" private="yes"/>
+ <value-type name="QRhiD3D12NativeHandles" since="6.6" private="yes"/>
+ <?endif?>
+ <?if darwin?>
+ <value-type name="QRhiMetalInitParams" since="6.6" private="yes"/>
+ <?endif?>
+
+ <object-type name="QRhi" since="6.6" private="yes">
+ <enum-type name="Flag" flags="Flags"/>
+ <enum-type name="Implementation"/>
+ <enum-type name="FrameOpResult"/>
+ <enum-type name="Feature"/>
+ <enum-type name="BeginFrameFlag" flags="BeginFrameFlags"/>
+ <enum-type name="EndFrameFlag" flags="EndFrameFlags"/>
+ <enum-type name="ResourceLimit"/>
+ </object-type>
+
+ <value-type name="QShader" since="6.6" private="yes">
+ <enum-type name="Stage"/>
+ <enum-type name="Source"/>
+ <enum-type name="Variant"/>
+ <enum-type name="SerializedFormatVersion"/>
+ </value-type>
+ <value-type name="QShaderCode" since="6.6" private="yes"/>
+ <value-type name="QShaderKey" since="6.6" private="yes"/>
+ <value-type name="QShaderVersion" since="6.6" private="yes">
+ <enum-type name="Flag" flags="Flags"/>
+ </value-type>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_win.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_win.xml
new file mode 100644
index 000000000..b3b8a75b6
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_win.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtGui">
+ <primitive-type name="HBITMAP" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtgui.cpp" snippet="return-pylong-voidptr"/>
+ <target-to-native>
+ <add-conversion type="PyLong" file="../glue/qtgui.cpp"
+ snippet="conversion-pylong"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <primitive-type name="HICON" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtgui.cpp" snippet="return-pylong-voidptr"/>
+ <target-to-native>
+ <add-conversion type="PyLong" file="../glue/qtgui.cpp"
+ snippet="conversion-pylong"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <primitive-type name="HMONITOR" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtgui.cpp" snippet="return-pylong-voidptr"/>
+ <target-to-native>
+ <add-conversion type="PyLong" file="../glue/qtgui.cpp"
+ snippet="conversion-pylong"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+ <primitive-type name="HRGN" target-lang-api-name="PyLong">
+ <conversion-rule>
+ <native-to-target file="../glue/qtgui.cpp" snippet="return-pylong-voidptr"/>
+ <target-to-native>
+ <add-conversion type="PyLong" file="../glue/qtgui.cpp"
+ snippet="conversion-pylong"/>
+ </target-to-native>
+ </conversion-rule>
+ </primitive-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtGui/typesystem_gui_x11.xml b/sources/pyside6/PySide6/QtGui/typesystem_gui_x11.xml
new file mode 100644
index 000000000..70331e29c
--- /dev/null
+++ b/sources/pyside6/PySide6/QtGui/typesystem_gui_x11.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtGui">
+ <custom-type name="_XDisplay"/>
+ <custom-type name="xcb_connection_t"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtHelp/CMakeLists.txt b/sources/pyside6/PySide6/QtHelp/CMakeLists.txt
new file mode 100644
index 000000000..7bf46dcef
--- /dev/null
+++ b/sources/pyside6/PySide6/QtHelp/CMakeLists.txt
@@ -0,0 +1,53 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtHelp)
+
+set(QtHelp_SRC
+${QtHelp_GEN_DIR}/qcompressedhelpinfo_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpcontentitem_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpcontentmodel_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpcontentwidget_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpglobal_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpengine_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpenginecore_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpfilterdata_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpfilterengine_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpfiltersettingswidget_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpindexmodel_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpindexwidget_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelplink_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpsearchengine_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpsearchquery_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpsearchquerywidget_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpsearchresult_wrapper.cpp
+${QtHelp_GEN_DIR}/qhelpsearchresultwidget_wrapper.cpp
+# module is always needed
+${QtHelp_GEN_DIR}/qthelp_module_wrapper.cpp
+)
+
+configure_file("${QtHelp_SOURCE_DIR}/QtHelp_global.pre.h.in"
+ "${QtHelp_BINARY_DIR}/QtHelp_global.pre.h" @ONLY)
+
+set(QtHelp_include_dirs ${QtHelp_SOURCE_DIR}
+ ${QtHelp_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Help_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtCore_GEN_DIR}
+ )
+set(QtHelp_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Help_LIBRARIES})
+
+set(QtHelp_deps QtWidgets)
+
+create_pyside_module(NAME QtHelp
+ INCLUDE_DIRS QtHelp_include_dirs
+ LIBRARIES QtHelp_libraries
+ DEPS QtHelp_deps
+ TYPESYSTEM_PATH QtHelp_SOURCE_DIR
+ SOURCES QtHelp_SRC)
diff --git a/sources/pyside6/PySide6/QtHelp/QtHelp_global.pre.h.in b/sources/pyside6/PySide6/QtHelp/QtHelp_global.pre.h.in
new file mode 100644
index 000000000..003b22ae6
--- /dev/null
+++ b/sources/pyside6/PySide6/QtHelp/QtHelp_global.pre.h.in
@@ -0,0 +1,3 @@
+// QVersionNumber is only forward-declared in QtHelp
+
+#include <QtCore/QVersionNumber>
diff --git a/sources/pyside6/PySide6/QtHelp/typesystem_help.xml b/sources/pyside6/PySide6/QtHelp/typesystem_help.xml
new file mode 100644
index 000000000..5fa30e034
--- /dev/null
+++ b/sources/pyside6/PySide6/QtHelp/typesystem_help.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.QtHelp"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+ <value-type name="QCompressedHelpInfo"/>
+ <value-type name="QHelpContentItem">
+ <modify-function signature="parent()const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+ <object-type name="QHelpContentModel" polymorphic-id-expression="qobject_cast&lt;QHelpContentModel*&gt;(%B)"/>
+ <object-type name="QHelpContentWidget"/>
+ <value-type name="QHelpGlobal"/>
+ <object-type name="QHelpEngine"/>
+ <object-type name="QHelpEngineCore"/>
+ <value-type name="QHelpFilterData"/>
+ <object-type name="QHelpFilterEngine"/>
+ <object-type name="QHelpFilterSettingsWidget"/>
+ <object-type name="QHelpIndexModel"/>
+ <object-type name="QHelpIndexWidget"/>
+ <value-type name="QHelpLink"/>
+ <object-type name="QHelpSearchEngine"/>
+ <value-type name="QHelpSearchQuery">
+ <enum-type name="FieldName"/>
+ </value-type>
+ <object-type name="QHelpSearchQueryWidget"/>
+ <object-type name="QHelpSearchResult"/>
+ <object-type name="QHelpSearchResultWidget"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtHttpServer/CMakeLists.txt b/sources/pyside6/PySide6/QtHttpServer/CMakeLists.txt
new file mode 100644
index 000000000..c931f064f
--- /dev/null
+++ b/sources/pyside6/PySide6/QtHttpServer/CMakeLists.txt
@@ -0,0 +1,40 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtHttpServer)
+
+set(QtHttpServer_SRC
+ ${QtHttpServer_GEN_DIR}/qabstracthttpserver_wrapper.cpp
+ ${QtHttpServer_GEN_DIR}/qfuturehttpserverresponse_wrapper.cpp
+ ${QtHttpServer_GEN_DIR}/qhttpserver_wrapper.cpp
+ ${QtHttpServer_GEN_DIR}/qhttpserverresponder_wrapper.cpp
+ ${QtHttpServer_GEN_DIR}/qhttpserverrequest_wrapper.cpp
+ ${QtHttpServer_GEN_DIR}/qhttpserverresponse_wrapper.cpp
+ ${QtHttpServer_GEN_DIR}/qhttpserverrouter_wrapper.cpp
+ ${QtHttpServer_GEN_DIR}/qhttpserverrouterrule_wrapper.cpp
+# module is always needed
+ ${QtHttpServer_GEN_DIR}/qthttpserver_module_wrapper.cpp)
+
+set(QtHttpServer_include_dirs ${QtHttpServer_SOURCE_DIR}
+ ${QtHttpServer_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Concurrent_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}WebSockets_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtConcurrent_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtWebSockets_GEN_DIR})
+
+set(QtHttpServer_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}HttpServer_LIBRARIES})
+
+set(QtHttpServer_deps QtCore QtConcurrent QtNetwork QtWebSockets)
+
+create_pyside_module(NAME QtHttpServer
+ INCLUDE_DIRS QtHttpServer_include_dirs
+ LIBRARIES QtHttpServer_libraries
+ DEPS QtHttpServer_deps
+ TYPESYSTEM_PATH QtHttpServer_SOURCE_DIR
+ SOURCES QtHttpServer_SRC)
diff --git a/sources/pyside6/PySide6/QtHttpServer/typesystem_httpserver.xml b/sources/pyside6/PySide6/QtHttpServer/typesystem_httpserver.xml
new file mode 100644
index 000000000..026a8758a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtHttpServer/typesystem_httpserver.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtHttpServer"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtConcurrent/typesystem_concurrent.xml" generate="no"/>
+ <load-typesystem name="QtWebSockets/typesystem_websockets.xml" generate="no"/>
+
+ <typedef-type name="QFutureHttpServerResponse" source="QFuture&lt;QHttpServerResponse&gt;"/>
+ <!-- virtual void missingHandler(const QHttpServerRequest &, QHttpServerResponder &&) = 0 -->
+ <object-type name="QAbstractHttpServer" disable-wrapper="yes"/>
+ <object-type name="QHttpServer">
+ <extra-includes>
+ <include file-name="QtHttpServer/QHttpServerRequest" location="global"/>
+ <include file-name="QtHttpServer/QHttpServerRouterRule" location="global"/>
+ </extra-includes>
+ <add-function signature="route(const QString &amp;@rule@, PyCallable @callback@)"
+ return-type="bool">
+ <inject-code class="target" position="beginning" file="../glue/qhttpserver.cpp"
+ snippet="qhttpserver-route"/>
+ </add-function>
+ <add-function signature="afterRequest(PyCallable @callback@)">
+ <inject-code class="target" position="beginning" file="../glue/qhttpserver.cpp"
+ snippet="qhttpserver-afterrequest"/>
+ </add-function>
+ </object-type>
+ <object-type name="QHttpServerResponder">
+ <enum-type name="StatusCode"/>
+ </object-type>
+ <object-type name="QHttpServerRequest">
+ <enum-type name="Method" flags="Methods"/>
+ </object-type>
+ <object-type name="QHttpServerResponse"/>
+ <object-type name="QHttpServerRouter"/>
+ <object-type name="QHttpServerRouterRule"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtLocation/CMakeLists.txt b/sources/pyside6/PySide6/QtLocation/CMakeLists.txt
new file mode 100644
index 000000000..db5777e04
--- /dev/null
+++ b/sources/pyside6/PySide6/QtLocation/CMakeLists.txt
@@ -0,0 +1,70 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtLocation)
+
+set(QtLocation_OPTIONAL_SRC )
+set(QtLocation_DROPPED_ENTRIES )
+
+set(QtLocation_SRC
+${QtLocation_GEN_DIR}/qgeocodereply_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeomaneuver_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeoroute_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeoroutereply_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeoroutesegment_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeoserviceprovider_wrapper.cpp
+${QtLocation_GEN_DIR}/qplace_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacecontentreply_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacedetailsreply_wrapper.cpp
+${QtLocation_GEN_DIR}/qplaceicon_wrapper.cpp
+${QtLocation_GEN_DIR}/qplaceidreply_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacemanager_wrapper.cpp
+${QtLocation_GEN_DIR}/qplaceuser_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeocodingmanager_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeocodingmanagerengine_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeorouterequest_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeoroutingmanager_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeoroutingmanagerengine_wrapper.cpp
+${QtLocation_GEN_DIR}/qgeoserviceproviderfactory_wrapper.cpp
+${QtLocation_GEN_DIR}/qplaceattribute_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacecategory_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacecontactdetail_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacecontent_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacecontentrequest_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacemanagerengine_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacematchreply_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacematchrequest_wrapper.cpp
+${QtLocation_GEN_DIR}/qplaceproposedsearchresult_wrapper.cpp
+${QtLocation_GEN_DIR}/qplaceratings_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacereply_wrapper.cpp
+${QtLocation_GEN_DIR}/qplaceresult_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacesearchreply_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacesearchrequest_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacesearchresult_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacesearchsuggestionreply_wrapper.cpp
+${QtLocation_GEN_DIR}/qplacesupplier_wrapper.cpp
+# module is always needed
+${QtLocation_GEN_DIR}/qtlocation_module_wrapper.cpp
+)
+
+
+set(QtLocation_include_dirs ${QtLocation_SOURCE_DIR}
+ ${QtLocation_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Location_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtPositioning_GEN_DIR})
+
+set(QtLocation_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Location_LIBRARIES})
+
+set(QtLocation_deps QtCore QtPositioning)
+
+create_pyside_module(NAME QtLocation
+ INCLUDE_DIRS QtLocation_include_dirs
+ LIBRARIES QtLocation_libraries
+ DEPS QtLocation_deps
+ TYPESYSTEM_PATH QtLocation_SOURCE_DIR
+ SOURCES QtLocation_SRC
+ DROPPED_ENTRIES QtLocation_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtLocation/typesystem_location.xml b/sources/pyside6/PySide6/QtLocation/typesystem_location.xml
new file mode 100644
index 000000000..e35b7bd11
--- /dev/null
+++ b/sources/pyside6/PySide6/QtLocation/typesystem_location.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtLocation"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtPositioning/typesystem_positioning.xml" generate="no"/>
+ <object-type name="QGeoCodeReply">
+ <enum-type name="Error"/>
+ </object-type>
+ <value-type name="QGeoManeuver">
+ <enum-type name="InstructionDirection"/>
+ </value-type>
+ <value-type name="QGeoRoute"/>
+ <object-type name="QGeoRouteReply">
+ <enum-type name="Error"/>
+ </object-type>
+ <value-type name="QGeoRouteSegment"/>
+ <object-type name="QGeoServiceProvider">
+ <enum-type name="Error"/>
+ <enum-type name="RoutingFeature" flags="RoutingFeatures"/>
+ <enum-type name="GeocodingFeature" flags="GeocodingFeatures"/>
+ <enum-type name="MappingFeature" flags="MappingFeatures"/>
+ <enum-type name="PlacesFeature" flags="PlacesFeatures"/>
+ <enum-type name="NavigationFeature" flags="NavigationFeatures"/>
+ </object-type>
+ <value-type name="QPlace"/>
+ <object-type name="QPlaceContentReply"/>
+ <object-type name="QPlaceDetailsReply"/>
+ <value-type name="QPlaceIcon"/>
+ <object-type name="QPlaceIdReply">
+ <enum-type name="OperationType"/>
+ </object-type>
+ <object-type name="QPlaceManager"/>
+ <value-type name="QPlaceUser"/>
+ <object-type name="QGeoCodingManager"/>
+ <object-type name="QGeoCodingManagerEngine"/>
+ <object-type name="QGeoRouteRequest">
+ <enum-type name="TravelMode" flags="TravelModes"/>
+ <enum-type name="FeatureType" flags="FeatureTypes"/>
+ <enum-type name="FeatureWeight" flags="FeatureWeights"/>
+ <enum-type name="RouteOptimization" flags="RouteOptimizations"/>
+ <enum-type name="SegmentDetail" flags="SegmentDetails"/>
+ <enum-type name="ManeuverDetail" flags="ManeuverDetails"/>
+ </object-type>
+ <object-type name="QGeoRoutingManager"/>
+ <object-type name="QGeoRoutingManagerEngine"/>
+ <object-type name="QGeoServiceProviderFactory"/>
+ <value-type name="QPlaceAttribute"/>
+ <value-type name="QPlaceCategory"/>
+ <value-type name="QPlaceContactDetail"/>
+ <value-type name="QPlaceContent">
+ <enum-type name="Type"/>
+ <enum-type name="DataTag" since="6.5"/>
+ </value-type>
+ <value-type name="QPlaceContentRequest"/>
+ <object-type name="QPlaceManagerEngine"/>
+ <object-type name="QPlaceMatchReply"/>
+ <value-type name="QPlaceMatchRequest"/>
+ <object-type name="QPlaceProposedSearchResult"/>
+ <value-type name="QPlaceRatings"/>
+ <object-type name="QPlaceReply">
+ <enum-type name="Error"/>
+ <enum-type name="Type"/>
+ </object-type>
+ <object-type name="QPlaceResult"/>
+ <object-type name="QPlaceSearchReply"/>
+ <object-type name="QPlaceSearchRequest">
+ <enum-type name="RelevanceHint"/>
+ </object-type>
+ <object-type name="QPlaceSearchResult">
+ <enum-type name="SearchResultType"/>
+ </object-type>
+ <object-type name="QPlaceSearchSuggestionReply"/>
+ <value-type name="QPlaceSupplier"/>
+
+ <!-- QtQml, QtNetwork are pulled in via QtLocationDepends. -->
+ <suppress-warning text="^Scoped enum 'Q(Ocsp)|(Dtls)|(Qml).*' does not have a type entry.*$"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt b/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt
new file mode 100644
index 000000000..e40c5a2ed
--- /dev/null
+++ b/sources/pyside6/PySide6/QtMultimedia/CMakeLists.txt
@@ -0,0 +1,65 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtMultimedia)
+
+set(QtMultimedia_SRC
+${QtMultimedia_GEN_DIR}/qaudiobuffer_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudiodecoder_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudiodevice_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudioformat_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudioinput_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudiooutput_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudiosink_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudiosource_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qaudio_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qcameraformat_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qcameradevice_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qcamera_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qcapturablewindow_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qimagecapture_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qmediacapturesession_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qmediadevices_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qmediaformat_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qmediametadata_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qmediaplayer_wrapper.cpp
+# ${QtMultimedia_GEN_DIR}/qmediaplaylist_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qmediarecorder_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qmediatimerange_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qmediatimerange_interval_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qscreencapture_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qsoundeffect_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qtvideo_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qvideoframe_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qvideoframe_paintoptions_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qvideoframeformat_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qvideosink_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qwavedecoder_wrapper.cpp
+${QtMultimedia_GEN_DIR}/qwindowcapture_wrapper.cpp
+
+# module is always needed
+${QtMultimedia_GEN_DIR}/qtmultimedia_module_wrapper.cpp
+)
+
+set(QtMultimedia_include_dirs ${QtMultimedia_SOURCE_DIR}
+ ${QtMultimedia_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Multimedia_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtNetwork_GEN_DIR})
+
+set(QtMultimedia_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Multimedia_LIBRARIES})
+
+set(QtMultimedia_deps QtCore QtGui QtNetwork)
+
+create_pyside_module(NAME QtMultimedia
+ INCLUDE_DIRS QtMultimedia_include_dirs
+ LIBRARIES QtMultimedia_libraries
+ DEPS QtMultimedia_deps
+ TYPESYSTEM_PATH QtMultimedia_SOURCE_DIR
+ SOURCES QtMultimedia_SRC)
diff --git a/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml b/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml
new file mode 100644
index 000000000..2791f695a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtMultimedia/typesystem_multimedia.xml
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtMultimedia"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+
+ <namespace-type name="QAudio">
+ <enum-type name="Error"/>
+ <enum-type name="State"/>
+ <enum-type name="VolumeScale"/>
+ <inject-code class="target" position="end"
+ file="../glue/qtmultimedia.cpp"
+ snippet="qtaudio-namespace-compatibility-alias"/>
+ </namespace-type>
+
+ <namespace-type name="QtVideo" since="6.7">
+ <enum-type name="Rotation"/>
+ </namespace-type>
+
+ <value-type name="QAudioBuffer">
+ <add-function signature="data()" return-type="PyBuffer">
+ <inject-code file="../glue/qtmultimedia.cpp" snippet="qaudiobuffer-data"/>
+ </add-function>
+ <add-function signature="constData()" return-type="PyBuffer">
+ <inject-code file="../glue/qtmultimedia.cpp" snippet="qaudiobuffer-const-data"/>
+ </add-function>
+ </value-type>
+ <object-type name="QAudioDecoder">
+ <enum-type name="Error"/>
+ </object-type>
+ <value-type name="QAudioFormat">
+ <enum-type name="SampleFormat" since="6.1"/>
+ <enum-type name="ChannelConfig"/>
+ <enum-type name="AudioChannelPosition" since="6.2"/>
+ <modify-function signature="normalizedSampleValue(const void*)const">
+ <modify-argument index="1">
+ <replace-type modified-type="PyBuffer"/>
+ <conversion-rule class="native">
+ <insert-template name="pybuffer_const_char"/>
+ </conversion-rule>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+ <value-type name="QAudioDevice">
+ <enum-type name="Mode"/>
+ </value-type>
+
+ <object-type name="QAudioInput"/>
+ <object-type name="QAudioOutput"/>
+
+ <object-type name="QAudioSource">
+ <modify-function signature="start()" allow-thread="true">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="start(QIODevice*)" allow-thread="true">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="stop()" allow-thread="true"/>
+ </object-type>
+
+ <object-type name="QAudioSink">
+ <modify-function signature="start()" allow-thread="true">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="start(QIODevice*)" allow-thread="true">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="stop()" allow-thread="true"/>
+ </object-type>
+
+ <object-type name="QCamera">
+ <enum-type name="Error"/>
+ <enum-type name="ExposureMode" since="6.1"/>
+ <enum-type name="Feature" flags="Features" since="6.1"/>
+ <enum-type name="FlashMode" since="6.1"/>
+ <enum-type name="FocusMode" since="6.1"/>
+ <enum-type name="TorchMode" since="6.1"/>
+ <enum-type name="WhiteBalanceMode" since="6.1"/>
+ </object-type>
+ <value-type name="QCameraFormat" since="6.1"/>
+ <value-type name="QCameraDevice">
+ <enum-type name="Position" since="6.1"/>
+ </value-type>
+
+ <value-type name="QCapturableWindow" since="6.6"/>
+
+ <object-type name="QImageCapture">
+ <enum-type name="Error"/>
+ <enum-type name="FileFormat"/>
+ <enum-type name="Quality"/>
+ </object-type>
+
+ <object-type name="QMediaCaptureSession" since="6.1"/>
+
+ <object-type name="QMediaDevices" since="6.1"/>
+
+ <value-type name="QMediaFormat" since="6.1">
+ <enum-type name="AudioCodec"/>
+ <enum-type name="ConversionMode"/>
+ <enum-type name="FileFormat"/>
+ <enum-type name="VideoCodec"/>
+ <enum-type name="ResolveFlags"/>
+ </value-type>
+
+ <value-type name="QMediaMetaData" since="6.1">
+ <enum-type name="Key"/>
+ </value-type>
+ <object-type name="QMediaPlayer">
+ <enum-type name="MediaStatus"/>
+ <enum-type name="PlaybackState" since="6.1"/>
+ <enum-type name="Error"/>
+ <enum-type name="Loops" python-type="IntEnum" since="6.2.3"/>
+ </object-type>
+ <!-- see qtmultimedia/5773f7214c7430a98dea3974c0597cb3ee0ea7f5 might reappear in 6.3
+ <object-type name="QMediaPlaylist"/>
+ -->
+ <object-type name="QMediaRecorder">
+ <enum-type name="Error" since="6.1"/>
+ <enum-type name="EncodingMode" since="6.1"/>
+ <enum-type name="RecorderState" since="6.1"/>
+ <enum-type name="Quality" since="6.1"/>
+ </object-type>
+ <value-type name="QMediaTimeRange">
+ <value-type name="Interval"/>
+ </value-type>
+
+ <object-type name="QScreenCapture" since="6.5">
+ <enum-type name="Error"/>
+ </object-type>
+
+ <object-type name="QSoundEffect">
+ <enum-type name="Loop"/>
+ <enum-type name="Status"/>
+ </object-type>
+
+ <value-type name="QVideoFrame">
+ <enum-type name="HandleType"/>
+ <enum-type name="MapMode" since="6.1"/>
+ <enum-type name="RotationAngle" since="6.2.3"/>
+ <modify-function signature="bits(int)">
+ <inject-code file="../glue/qtmultimedia.cpp" snippet="qvideoframe-bits"/>
+ </modify-function>
+ <modify-function signature="bits(int)const" remove="all"/>
+ <value-type name="PaintOptions">
+ <enum-type name="PaintFlag" flags="PaintFlags"/>
+ </value-type>
+ </value-type>
+ <value-type name="QVideoFrameFormat" since="6.1">
+ <enum-type name="ColorSpace" since="6.4"/>
+ <enum-type name="ColorTransfer" since="6.4"/>
+ <enum-type name="ColorRange" since="6.4"/>
+ <enum-type name="Direction"/>
+ <enum-type name="PixelFormat"/>
+ <enum-type name="YCbCrColorSpace"/>
+ </value-type>
+
+ <object-type name="QWaveDecoder">
+ <!-- No implementation -->
+ <modify-function signature="setIODevice(QIODevice*)" remove="all"/>
+ </object-type>
+
+ <object-type name="QWindowCapture" since="6.6">
+ <enum-type name="Error"/>
+ </object-type>
+
+ <object-type name="QVideoSink" since="6.1"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtMultimediaWidgets/CMakeLists.txt b/sources/pyside6/PySide6/QtMultimediaWidgets/CMakeLists.txt
new file mode 100644
index 000000000..c3988551e
--- /dev/null
+++ b/sources/pyside6/PySide6/QtMultimediaWidgets/CMakeLists.txt
@@ -0,0 +1,39 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtMultimediaWidgets)
+
+set(QtMultimediaWidgets_SRC
+${QtMultimediaWidgets_GEN_DIR}/qgraphicsvideoitem_wrapper.cpp
+${QtMultimediaWidgets_GEN_DIR}/qvideowidget_wrapper.cpp
+# module is always needed
+${QtMultimediaWidgets_GEN_DIR}/qtmultimediawidgets_module_wrapper.cpp
+)
+
+set(QtMultimediaWidgets_include_dirs ${QtMultimediaWidgets_SOURCE_DIR}
+ ${QtMultimediaWidgets_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Multimedia_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}MultimediaWidgets_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtMultimedia_GEN_DIR})
+
+set(QtMultimediaWidgets_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}MultimediaWidgets_LIBRARIES})
+
+
+set(QtMultimediaWidgets_deps QtCore QtGui QtNetwork QtWidgets QtMultimedia)
+
+create_pyside_module(NAME QtMultimediaWidgets
+ INCLUDE_DIRS QtMultimediaWidgets_include_dirs
+ LIBRARIES QtMultimediaWidgets_libraries
+ DEPS QtMultimediaWidgets_deps
+ TYPESYSTEM_PATH QtMultimediaWidgets_SOURCE_DIR
+ SOURCES QtMultimediaWidgets_SRC)
diff --git a/sources/pyside6/PySide6/QtMultimediaWidgets/typesystem_multimediawidgets.xml b/sources/pyside6/PySide6/QtMultimediaWidgets/typesystem_multimediawidgets.xml
new file mode 100644
index 000000000..05b4e2456
--- /dev/null
+++ b/sources/pyside6/PySide6/QtMultimediaWidgets/typesystem_multimediawidgets.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtMultimediaWidgets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtMultimedia/typesystem_multimedia.xml" generate="no"/>
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+ <object-type name="QGraphicsVideoItem"/>
+ <object-type name="QVideoWidget"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtNetwork/CMakeLists.txt b/sources/pyside6/PySide6/QtNetwork/CMakeLists.txt
new file mode 100644
index 000000000..529e2e86b
--- /dev/null
+++ b/sources/pyside6/PySide6/QtNetwork/CMakeLists.txt
@@ -0,0 +1,121 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtNetwork)
+
+set(QtNetwork_DROPPED_ENTRIES )
+
+set(QtNetwork_SRC
+${QtNetwork_GEN_DIR}/qabstractnetworkcache_wrapper.cpp
+${QtNetwork_GEN_DIR}/qabstractsocket_wrapper.cpp
+${QtNetwork_GEN_DIR}/qauthenticator_wrapper.cpp
+${QtNetwork_GEN_DIR}/qdnsdomainnamerecord_wrapper.cpp
+${QtNetwork_GEN_DIR}/qdnshostaddressrecord_wrapper.cpp
+${QtNetwork_GEN_DIR}/qdnslookup_wrapper.cpp
+${QtNetwork_GEN_DIR}/qdnsmailexchangerecord_wrapper.cpp
+${QtNetwork_GEN_DIR}/qdnsservicerecord_wrapper.cpp
+${QtNetwork_GEN_DIR}/qdnstextrecord_wrapper.cpp
+${QtNetwork_GEN_DIR}/qhostaddress_wrapper.cpp
+${QtNetwork_GEN_DIR}/qhostinfo_wrapper.cpp
+${QtNetwork_GEN_DIR}/qhstspolicy_wrapper.cpp
+${QtNetwork_GEN_DIR}/qhttp1configuration_wrapper.cpp
+${QtNetwork_GEN_DIR}/qhttpheaders_wrapper.cpp
+${QtNetwork_GEN_DIR}/qhttpmultipart_wrapper.cpp
+${QtNetwork_GEN_DIR}/qhttppart_wrapper.cpp
+${QtNetwork_GEN_DIR}/qhttp2configuration_wrapper.cpp
+${QtNetwork_GEN_DIR}/qipv6address_wrapper.cpp
+${QtNetwork_GEN_DIR}/qlocalserver_wrapper.cpp
+${QtNetwork_GEN_DIR}/qlocalsocket_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkaccessmanager_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkaddressentry_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkcachemetadata_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkcookie_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkcookiejar_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkdatagram_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkdiskcache_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkinformation_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkinterface_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkproxy_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkproxyfactory_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkproxyquery_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkreply_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkrequest_wrapper.cpp
+${QtNetwork_GEN_DIR}/qnetworkrequestfactory_wrapper.cpp
+${QtNetwork_GEN_DIR}/qpassworddigestor_wrapper.cpp
+${QtNetwork_GEN_DIR}/qrestaccessmanager_wrapper.cpp
+${QtNetwork_GEN_DIR}/qrestreply_wrapper.cpp
+${QtNetwork_GEN_DIR}/qssl_wrapper.cpp
+${QtNetwork_GEN_DIR}/qsslcertificate_wrapper.cpp
+${QtNetwork_GEN_DIR}/qsslcertificateextension_wrapper.cpp
+${QtNetwork_GEN_DIR}/qsslellipticcurve_wrapper.cpp
+${QtNetwork_GEN_DIR}/qtcpserver_wrapper.cpp
+${QtNetwork_GEN_DIR}/qtcpsocket_wrapper.cpp
+${QtNetwork_GEN_DIR}/qudpsocket_wrapper.cpp
+# module is always needed
+${QtNetwork_GEN_DIR}/qtnetwork_module_wrapper.cpp
+)
+
+get_property(QtNetwork_disabled_features TARGET Qt${QT_MAJOR_VERSION}::Network
+ PROPERTY QT_DISABLED_PUBLIC_FEATURES)
+
+if("ssl" IN_LIST QtNetwork_disabled_features)
+ list(APPEND QtNetwork_DROPPED_ENTRIES QOcspResponse QSslCipher
+ QSslConfiguration QSslDiffieHellmanParameters QSslError
+ QSslKey QSslPreSharedKeyAuthenticator QSslSocket QSslServer)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Network: Dropping SSL classes")
+else()
+ # Problems with operator==(QSslEllipticCurve,QSslEllipticCurve)
+ # check_qt_class(QtNetwork QSslEllipticCurve QtNetwork_OPTIONAL_SRC QtNetwork_DROPPED_ENTRIES)
+ list(APPEND QtNetwork_SRC
+ ${QtNetwork_GEN_DIR}/qsslcipher_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qsslconfiguration_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qssldiffiehellmanparameters_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qsslerror_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qsslkey_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qsslpresharedkeyauthenticator_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qsslserver_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qsslsocket_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qocspresponse_wrapper.cpp)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Network: Adding SSL classes")
+endif()
+
+if("dtls" IN_LIST QtNetwork_disabled_features)
+ list(APPEND QtNetwork_DROPPED_ENTRIES QDtls QDtlsClientVerifier)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Network: Dropping DTLS classes")
+else()
+ list(APPEND QtNetwork_SRC
+ ${QtNetwork_GEN_DIR}/qdtls_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qdtlsclientverifier_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qdtlsclientverifier_generatorparameters_wrapper.cpp)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Network: Adding DTLS classes")
+endif()
+
+if("sctp" IN_LIST QtNetwork_disabled_features)
+ list(APPEND QtNetwork_DROPPED_ENTRIES QSctpServer QSctpSocket)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Network: Dropping SCTP classes")
+else()
+ list(APPEND QtNetwork_SRC
+ ${QtNetwork_GEN_DIR}/qsctpserver_wrapper.cpp
+ ${QtNetwork_GEN_DIR}/qsctpsocket_wrapper.cpp)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Network: Adding SCTP classes")
+endif()
+
+set(QtNetwork_include_dirs ${QtNetwork_SOURCE_DIR}
+ ${QtNetwork_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtNetwork_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Network_LIBRARIES})
+
+set(QtNetwork_deps QtCore)
+
+create_pyside_module(NAME QtNetwork
+ INCLUDE_DIRS QtNetwork_include_dirs
+ LIBRARIES QtNetwork_libraries
+ DEPS QtNetwork_deps
+ TYPESYSTEM_PATH QtNetwork_SOURCE_DIR
+ SOURCES QtNetwork_SRC
+ DROPPED_ENTRIES QtNetwork_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtNetwork/typesystem_network.xml b/sources/pyside6/PySide6/QtNetwork/typesystem_network.xml
new file mode 100644
index 000000000..4dc7c9b0a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtNetwork/typesystem_network.xml
@@ -0,0 +1,475 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtNetwork"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+
+ <rejection class="QTlsPrivate"/>
+
+ <enum-type name="QDtlsError">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </enum-type>
+ <enum-type name="QOcspCertificateStatus">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </enum-type>
+ <enum-type name="QOcspRevocationReason">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </enum-type>
+
+ <namespace-type name="QPasswordDigestor">
+ <extra-includes>
+ <include file-name="qpassworddigestor.h" location="global"/>
+ </extra-includes>
+ </namespace-type>
+
+ <namespace-type name="QSsl">
+ <enum-type name="AlertLevel"/>
+ <enum-type name="AlertType"/>
+ <enum-type name="AlternativeNameEntryType"/>
+ <enum-type name="EncodingFormat"/>
+ <enum-type name="ImplementedClass" since="6.1"/>
+ <enum-type name="KeyAlgorithm"/>
+ <enum-type name="KeyType"/>
+ <enum-type name="SslOption" flags="SslOptions"/>
+ <enum-type name="SslProtocol"/>
+ <enum-type name="SupportedFeature" since="6.1"/>
+ <extra-includes>
+ <include file-name="qssl.h" location="global"/>
+ </extra-includes>
+ </namespace-type>
+
+ <rejection class="QIPv6Address" field-name="c"/>
+
+ <object-type name="QAbstractSocket">
+ <enum-type name="BindFlag" flags="BindMode"/>
+ <enum-type name="NetworkLayerProtocol"/>
+ <enum-type name="PauseMode" flags="PauseModes"/>
+ <enum-type name="SocketError"/>
+ <enum-type name="SocketOption" since="4.6"/>
+ <enum-type name="SocketState"/>
+ <enum-type name="SocketType"/>
+ <modify-function signature="connectToHost(const QString&amp;,quint16,QFlags&lt;QIODeviceBase::OpenModeFlag>,QAbstractSocket::NetworkLayerProtocol)" allow-thread="yes"/>
+ <modify-function signature="connectToHost(const QHostAddress&amp;,quint16,QFlags&lt;QIODeviceBase::OpenModeFlag>)" allow-thread="yes"/>
+ <modify-function signature="disconnectFromHost()" allow-thread="yes"/>
+ <modify-function signature="waitForConnected(int)" allow-thread="yes"/>
+ <modify-function signature="waitForDisconnected(int)" allow-thread="yes"/>
+ <modify-function signature="waitForBytesWritten(int)" allow-thread="yes"/>
+ <modify-function signature="waitForReadyRead(int)" allow-thread="yes"/>
+ </object-type>
+
+ <value-type name="QDnsDomainNameRecord"/>
+ <value-type name="QDnsHostAddressRecord"/>
+ <object-type name="QDnsLookup">
+ <enum-type name="Error"/>
+ <enum-type name="Type"/>
+ </object-type>
+ <value-type name="QDnsMailExchangeRecord"/>
+ <value-type name="QDnsServiceRecord"/>
+ <value-type name="QDnsTextRecord"/>
+
+ <object-type name="QDtls">
+ <enum-type name="HandshakeState"/>
+ <configuration condition="QT_CONFIG(dtls)"/>
+ </object-type>
+ <object-type name="QDtlsClientVerifier">
+ <configuration condition="QT_CONFIG(dtls)"/>
+ <value-type name="GeneratorParameters">
+ <configuration condition="QT_CONFIG(dtls)"/>
+ </value-type>
+ </object-type>
+
+ <value-type name="QHstsPolicy">
+ <enum-type name="PolicyFlag" flags="PolicyFlags"/>
+ </value-type>
+ <value-type name="QHttp1Configuration"/>
+ <value-type name="QHttpHeaders" since="6.7">
+ <enum-type name="WellKnownHeader"/>
+ </value-type>
+ <object-type name="QHttpMultiPart">
+ <enum-type name="ContentType"/>
+ </object-type>
+ <value-type name="QHttpPart"/>
+ <value-type name="QHttp2Configuration"/>
+
+ <object-type name="QTcpServer">
+ <modify-function signature="waitForNewConnection(int,bool*)" allow-thread="yes">
+ <!-- FIXME removing default expression means user will always have to pass a value, but he wouldn't have to -->
+ <modify-argument index="1">
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, bool]">
+ <replace-type modified-type="(retval, timedOut)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ </object-type>
+ <value-type name="QOcspResponse">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+ <object-type name="QTcpSocket"/>
+ <object-type name="QUdpSocket">
+ <modify-function signature="readDatagram(char*,qint64,QHostAddress*,quint16*)" allow-thread="yes">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[PySide6.QtCore.QByteArray, PySide6.QtNetwork.QHostAddress, int]">
+ <replace-type modified-type="(data, address, port)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp" snippet="qudpsocket-readdatagram"/>
+ </modify-function>
+ <modify-function signature="writeDatagram(const QByteArray&amp;,const QHostAddress&amp;,quint16)" allow-thread="yes"/>
+ <!-- ### writeDatagram(QByteArray, ...) does the trick -->
+ <modify-function signature="writeDatagram(const char*,qint64,const QHostAddress&amp;,quint16)" remove="all"/>
+ <!-- ### -->
+ </object-type>
+
+ <object-type name="QLocalServer">
+ <enum-type name="SocketOption" flags="SocketOptions"/>
+ <modify-function signature="waitForNewConnection(int,bool*)" allow-thread="yes">
+ <!-- FIXME -->
+ <modify-argument index="1">
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ <modify-argument index="return" pyi-type="Tuple[bool, bool]">
+ <replace-type modified-type="(retval, timedOut)"/>
+ </modify-argument>
+
+ </modify-function>
+ </object-type>
+ <object-type name="QLocalSocket">
+ <enum-type name="LocalSocketError"/>
+ <enum-type name="SocketOption" flags="SocketOptions"/>
+ <enum-type name="LocalSocketState"/>
+ </object-type>
+ <object-type name="QNetworkAccessManager">
+ <enum-type name="Operation"/>
+ <modify-function signature="createRequest(QNetworkAccessManager::Operation,const QNetworkRequest&amp;,QIODevice*)">
+ <modify-argument index="3" invalidate-after-use="yes"/>
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="get(const QNetworkRequest&amp;)" allow-thread="yes"/>
+ <modify-function signature="post(const QNetworkRequest &amp;,QIODevice*)" allow-thread="yes"/>
+ <modify-function signature="post(const QNetworkRequest &amp;,const QByteArray &amp;)" allow-thread="yes"/>
+ <modify-function signature="put(const QNetworkRequest &amp;,QIODevice*)" allow-thread="yes"/>
+ <modify-function signature="put(const QNetworkRequest &amp;,const QByteArray &amp;)" allow-thread="yes"/>
+ <modify-function signature="sendCustomRequest(const QNetworkRequest &amp;,const QByteArray &amp;,QIODevice*)" allow-thread="yes" since="4.7"/>
+ <modify-function signature="setCache(QAbstractNetworkCache*)">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setCookieJar(QNetworkCookieJar*)">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QNetworkInformation">
+ <enum-type name="Reachability"/>
+ <enum-type name="Feature" flags="Features"/>
+ <enum-type name="TransportMedium" since="6.3"/>
+ </object-type>
+ <object-type name="QNetworkCookieJar"/>
+ <value-type name="QNetworkDatagram"/>
+ <object-type name="QNetworkReply">
+ <enum-type name="NetworkError"/>
+ </object-type>
+
+ <value-type name="QHostAddress">
+ <enum-type name="ConversionModeFlag" flags="ConversionMode"/>
+ <enum-type name="SpecialAddress"/>
+ <!-- ### QHostAddress(QIPv6Address) does this -->
+ <modify-function signature="QHostAddress(const quint8*)" remove="all"/>
+ <!-- ### -->
+ <modify-function signature="setAddress(const quint8*)" remove="all"/>
+ </value-type>
+
+ <value-type name="QHostInfo">
+ <inject-code class="native" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qhostinfo-lookuphost-functor"/>
+ <enum-type name="HostInfoError"/>
+ <add-function signature="lookupHost(const QString &amp;,PyCallable)">
+ <inject-code class="target" position="beginning"
+ file="../glue/qtnetwork.cpp"
+ snippet="qhostinfo-lookuphost-callable"/>
+ </add-function>
+ </value-type>
+
+ <value-type name="QNetworkAddressEntry">
+ <enum-type name="DnsEligibilityStatus"/>
+ <configuration condition="#ifndef QT_NO_NETWORKINTERFACE"/>
+ </value-type>
+
+ <value-type name="QNetworkInterface">
+ <enum-type name="InterfaceFlag" flags="InterfaceFlags"/>
+ <enum-type name="InterfaceType"/>
+ <configuration condition="#ifndef QT_NO_NETWORKINTERFACE"/>
+ </value-type>
+
+ <value-type name="QNetworkProxy">
+ <enum-type name="Capability" flags="Capabilities"/>
+ <enum-type name="ProxyType"/>
+ </value-type>
+
+ <object-type name="QNetworkProxyFactory"/>
+ <value-type name="QNetworkProxyQuery">
+ <enum-type name="QueryType"/>
+ </value-type>
+
+ <value-type name="QIPv6Address">
+ <add-function signature="__len__">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp" snippet="qipv6address-len"/>
+ </add-function>
+ <add-function signature="__getitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp" snippet="qipv6address-getitem"/>
+ </add-function>
+ <add-function signature="__setitem__">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp" snippet="qipv6address-setitem"/>
+ </add-function>
+ </value-type>
+
+ <value-type name="QAuthenticator"/>
+ <value-type name="QNetworkCookie">
+ <enum-type name="RawForm"/>
+ <enum-type name="SameSite" since="6.1"/>
+ <extra-includes>
+ <include file-name="QDateTime" location="global"/>
+ </extra-includes>
+ </value-type>
+ <value-type name="QNetworkRequest">
+ <enum-type name="Attribute"/>
+ <enum-type name="LoadControl"/>
+ <enum-type name="Priority"/>
+ <enum-type name="CacheLoadControl"/>
+ <enum-type name="KnownHeaders"/>
+ <enum-type name="RedirectPolicy"/>
+ <enum-type name="TransferTimeoutConstant"/>
+ </value-type>
+ <value-type name="QNetworkRequestFactory" since="6.7"/>
+ <object-type name="QAbstractNetworkCache"/>
+ <object-type name="QNetworkDiskCache"/>
+ <value-type name="QNetworkCacheMetaData"/>
+
+ <object-type name="QRestAccessManager" since="6.7">
+ <inject-code class="native" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-functor"/>
+
+ <add-function signature="deleteResource(QNetworkRequest@request@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-callback"/>
+ </add-function>
+
+ <add-function signature="get(QNetworkRequest@request@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-callback"/>
+ </add-function>
+ <add-function signature="get(QNetworkRequest@request@,QByteArray@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="get(QNetworkRequest@request@,QIODevice*@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="get(QNetworkRequest@request@,QJsonDocument@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+
+ <add-function signature="head(QNetworkRequest@request@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-callback"/>
+ </add-function>
+
+ <add-function signature="patch(QNetworkRequest@request@,QByteArray@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="patch(QNetworkRequest@request@,QIODevice*@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="patch(QNetworkRequest@request@,QJsonDocument@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="patch(QNetworkRequest@request@,QVariantMap@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+
+ <add-function signature="post(QNetworkRequest@request@,QByteArray@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="post(QNetworkRequest@request@,QHttpMultiPart*@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="post(QNetworkRequest@request@,QIODevice*@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="post(QNetworkRequest@request@,QJsonDocument@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="post(QNetworkRequest@request@,QVariantMap@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+
+ <add-function signature="put(QNetworkRequest@request@,QByteArray@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="put(QNetworkRequest@request@,QHttpMultiPart*@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="put(QNetworkRequest@request@,QIODevice*@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="put(QNetworkRequest@request@,QJsonDocument@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+ <add-function signature="put(QNetworkRequest@request@,QVariantMap@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-data-callback"/>
+ </add-function>
+
+ <add-function signature="sendCustomRequest(QNetworkRequest@request@,QByteArray@method@,QByteArray@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-method-data-callback"/>
+ </add-function>
+ <add-function signature="sendCustomRequest(QNetworkRequest@request@,QByteArray@method@,QHttpMultiPart*@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-method-data-callback"/>
+ </add-function>
+ <add-function signature="sendCustomRequest(QNetworkRequest@request@,QByteArray@method@,QIODevice*@data@,QObject*@context@,PyCallable*@slot@)"
+ return-type="QNetworkReply*">
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestaccessmanager-method-data-callback"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QRestReply" since="6.7">
+ <add-function signature="readJson()" return-type="PyObject">
+ <modify-argument index="return"
+ pyi-type="Tuple[Optional[PySide6.QtCore.QJsonDocument],PySide6.QtCore.QJsonParseError]"/>
+ <inject-code class="target" position="beginning" file="../glue/qtnetwork.cpp"
+ snippet="qrestreply-readjson"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QSctpServer">
+ <configuration condition="QT_CONFIG(sctp)"/>
+ </object-type>
+ <object-type name="QSctpSocket">
+ <configuration condition="QT_CONFIG(sctp)"/>
+ </object-type>
+
+ <!-- The following entries may be present in the system or not. Keep this section organized. -->
+ <value-type name="QSslCertificate">
+ <enum-type name="PatternSyntax"/>
+ <enum-type name="SubjectInfo"/>
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+
+ <value-type name="QSslCertificateExtension">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+
+ <value-type name="QSslCipher">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+
+ <value-type name="QSslConfiguration">
+ <enum-type name="NextProtocolNegotiationStatus"/>
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+
+ <value-type name="QSslDiffieHellmanParameters">
+ <enum-type name="Error"/>
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+
+ <value-type name="QSslEllipticCurve">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+
+ <value-type name="QSslError">
+ <enum-type name="SslError"/>
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+
+ <value-type name="QSslKey"/>
+ <object-type name="QSslSocket">
+ <enum-type name="SslMode"/>
+ <enum-type name="PeerVerifyMode"/>
+ <modify-function signature="connectToHostEncrypted(const QString&amp;,quint16,QFlags&lt;QIODeviceBase::OpenModeFlag>,QAbstractSocket::NetworkLayerProtocol)" allow-thread="yes"/>
+ <modify-function signature="waitForEncrypted(int)" allow-thread="yes"/>
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </object-type>
+
+ <value-type name="QSslPreSharedKeyAuthenticator">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </value-type>
+
+ <object-type name="QSslServer" since="6.4">
+ <configuration condition="QT_CONFIG(ssl)"/>
+ </object-type>
+
+ <!-- The above entries may be present in the system or not. Keep this section organized. -->
+</typesystem>
+
diff --git a/sources/pyside6/PySide6/QtNetworkAuth/CMakeLists.txt b/sources/pyside6/PySide6/QtNetworkAuth/CMakeLists.txt
new file mode 100644
index 000000000..4d9498e4d
--- /dev/null
+++ b/sources/pyside6/PySide6/QtNetworkAuth/CMakeLists.txt
@@ -0,0 +1,38 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtNetworkAuth)
+
+set(QtNetworkAuth_SRC
+${QtNetworkAuth_GEN_DIR}/qabstractoauth_wrapper.cpp
+${QtNetworkAuth_GEN_DIR}/qabstractoauth2_wrapper.cpp
+${QtNetworkAuth_GEN_DIR}/qabstractoauthreplyhandler_wrapper.cpp
+${QtNetworkAuth_GEN_DIR}/qoauth1_wrapper.cpp
+${QtNetworkAuth_GEN_DIR}/qoauth1signature_wrapper.cpp
+${QtNetworkAuth_GEN_DIR}/qoauth2authorizationcodeflow_wrapper.cpp
+${QtNetworkAuth_GEN_DIR}/qoauthhttpserverreplyhandler_wrapper.cpp
+${QtNetworkAuth_GEN_DIR}/qoauthoobreplyhandler_wrapper.cpp
+# module is always needed
+${QtNetworkAuth_GEN_DIR}/qtnetworkauth_module_wrapper.cpp
+)
+
+set(QtNetworkAuth_include_dirs ${QtNetworkAuth_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}NetworkAuth_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtNetworkAuth_GEN_DIR})
+
+set(QtNetworkAuth_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}NetworkAuth_LIBRARIES})
+
+set(QtNetworkAuth_deps QtNetwork)
+
+create_pyside_module(NAME QtNetworkAuth
+ INCLUDE_DIRS QtNetworkAuth_include_dirs
+ LIBRARIES QtNetworkAuth_libraries
+ DEPS QtNetworkAuth_deps
+ TYPESYSTEM_PATH QtNetworkAuth_SOURCE_DIR
+ SOURCES QtNetworkAuth_SRC)
diff --git a/sources/pyside6/PySide6/QtNetworkAuth/typesystem_networkauth.xml b/sources/pyside6/PySide6/QtNetworkAuth/typesystem_networkauth.xml
new file mode 100644
index 000000000..bedfc5a28
--- /dev/null
+++ b/sources/pyside6/PySide6/QtNetworkAuth/typesystem_networkauth.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.QtNetworkAuth"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+ <object-type name="QAbstractOAuth">
+ <enum-type name="ContentType"/>
+ <enum-type name="Error"/>
+ <enum-type name="Stage"/>
+ <enum-type name="Status"/>
+ <inject-code class="native" position="beginning" file="../glue/qtnetworkauth.cpp"
+ snippet="qabstractoauth-lookuphost-functor"/>
+ <modify-function signature="setReplyHandler(QAbstractOAuthReplyHandler*)">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="setModifyParametersFunction(PyObject* @modifyParametersFunction@)">
+ <inject-code class="target" position="beginning" file="../glue/qtnetworkauth.cpp" snippet="qabstractoauth-setmodifyparametersfunction"/>
+ </add-function>
+ </object-type>
+ <object-type name="QAbstractOAuth2">
+ <modify-function signature="head(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="get(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="post(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="post(const QUrl&amp;,const QByteArray&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="post(const QUrl&amp;,QHttpMultiPart*)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="put(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="put(const QUrl&amp;,const QByteArray&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="put(const QUrl&amp;,QHttpMultiPart*)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="deleteResource(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QAbstractOAuthReplyHandler"/>
+ <object-type name="QOAuth1">
+ <enum-type name="SignatureMethod"/>
+ <modify-function signature="head(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="get(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="post(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="put(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="deleteResource(const QUrl&amp;,const QMap&lt;QString,QVariant&gt;&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <value-type name="QOAuth1Signature">
+ <enum-type name="HttpRequestMethod"/>
+ </value-type>
+ <object-type name="QOAuth2AuthorizationCodeFlow"/>
+ <object-type name="QOAuthHttpServerReplyHandler"/>
+ <object-type name="QOAuthOobReplyHandler"/>
+
+ <suppress-warning text="^.*Typedef used on signal QAbstractOAuth.*$"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtNfc/CMakeLists.txt b/sources/pyside6/PySide6/QtNfc/CMakeLists.txt
new file mode 100644
index 000000000..b94249a55
--- /dev/null
+++ b/sources/pyside6/PySide6/QtNfc/CMakeLists.txt
@@ -0,0 +1,38 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtNfc)
+
+set(QtNfc_SRC
+ ${QtNfc_GEN_DIR}/qndeffilter_record_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qndeffilter_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qndefmessage_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qndefnfciconrecord_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qndefnfcsmartposterrecord_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qndefrecord_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qndefnfctextrecord_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qndefnfcurirecord_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qnearfieldmanager_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qnearfieldtarget_wrapper.cpp
+ ${QtNfc_GEN_DIR}/qnearfieldtarget_requestid_wrapper.cpp
+# module is always needed
+ ${QtNfc_GEN_DIR}/qtnfc_module_wrapper.cpp)
+
+set(QtNfc_include_dirs ${QtNfc_SOURCE_DIR}
+ ${QtNfc_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Nfc_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtNfc_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Nfc_LIBRARIES})
+
+set(QtNfc_deps QtCore)
+
+create_pyside_module(NAME QtNfc
+ INCLUDE_DIRS QtNfc_include_dirs
+ LIBRARIES QtNfc_libraries
+ DEPS QtNfc_deps
+ TYPESYSTEM_PATH QtNfc_SOURCE_DIR
+ SOURCES QtNfc_SRC)
diff --git a/sources/pyside6/PySide6/QtNfc/typesystem_nfc.xml b/sources/pyside6/PySide6/QtNfc/typesystem_nfc.xml
new file mode 100644
index 000000000..b548227f0
--- /dev/null
+++ b/sources/pyside6/PySide6/QtNfc/typesystem_nfc.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtNfc"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <value-type name="QNdefFilter">
+ <value-type name="Record"/>
+ </value-type>
+ <value-type name="QNdefMessage"/>
+ <value-type name="QNdefNfcIconRecord"/>
+ <value-type name="QNdefNfcSmartPosterRecord">
+ <enum-type name="Action"/>
+ </value-type>
+ <value-type name="QNdefNfcTextRecord">
+ <enum-type name="Encoding"/>
+ </value-type>
+ <value-type name="QNdefNfcUriRecord"/>
+ <value-type name="QNdefRecord">
+ <enum-type name="TypeNameFormat"/>
+ </value-type>
+ <object-type name="QNearFieldManager">
+ <enum-type name="AdapterState"/>
+ </object-type>
+ <object-type name="QNearFieldTarget">
+ <enum-type name="AccessMethod" flags="AccessMethods"/>
+ <enum-type name="Error"/>
+ <enum-type name="Type"/>
+ <value-type name="RequestId"/>
+ </object-type>
+ <!-- QtNetwork is pulled in via QtNfcDepends. -->
+ <suppress-warning text="^Scoped enum 'Q(Ocsp)|(Dtls).*' does not have a type entry.*$"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtOpenGL/CMakeLists.txt b/sources/pyside6/PySide6/QtOpenGL/CMakeLists.txt
new file mode 100644
index 000000000..5bf8b5f3b
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/CMakeLists.txt
@@ -0,0 +1,100 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtOpenGL)
+
+set(QtOpenGL_DROPPED_ENTRIES)
+
+set(QtOpenGL_static_sources
+ "${QtOpenGL_SOURCE_DIR}/glue/utils.cpp"
+)
+
+set(QtOpenGL_SRC
+${QtOpenGL_GEN_DIR}/qabstractopenglfunctions_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopengldebuglogger_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopengldebugmessage_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglframebufferobjectformat_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglpaintdevice_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglpixeltransferoptions_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglshaderprogram_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopengltexture_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopengltextureblitter_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglversionprofile_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglvertexarrayobject_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglvertexarrayobject_binder_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglwindow_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglbuffer_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglshader_wrapper.cpp
+${QtOpenGL_GEN_DIR}/qopenglframebufferobject_wrapper.cpp
+# module is always needed
+${QtOpenGL_GEN_DIR}/qtopengl_module_wrapper.cpp
+)
+
+get_property(QtGui_enabled_features TARGET Qt${QT_MAJOR_VERSION}::Gui
+ PROPERTY QT_ENABLED_PUBLIC_FEATURES)
+
+if("opengles2" IN_LIST QtGui_enabled_features)
+ list(APPEND QtOpenGL_DROPPED_ENTRIES QOpenGLTimeMonitor QOpenGLTimerQuery
+ QOpenGLVersionFunctionsFactory)
+ list(APPEND QtOpenGL_SRC ${QtOpenGL_GEN_DIR}/qopenglfunctions_es2_wrapper.cpp)
+ message(STATUS "Qt${QT_MAJOR_VERSION}Gui: Dropping Desktop OpenGL classes (GLES2)")
+else()
+ list(APPEND QtOpenGL_DROPPED_ENTRIES QOpenGLFunctions_ES2)
+ list(APPEND QtOpenGL_SRC
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_0_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_1_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_2_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_3_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_4_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_1_5_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_2_0_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_2_1_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_0_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_1_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_2_compatibility_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_2_core_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_3_compatibility_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_3_3_core_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_0_compatibility_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_0_core_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_1_compatibility_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_1_core_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_2_compatibility_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_2_core_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_3_compatibility_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_3_core_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_4_compatibility_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_4_core_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_5_compatibility_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglfunctions_4_5_core_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopenglversionfunctionsfactory_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopengltimemonitor_wrapper.cpp
+ ${QtOpenGL_GEN_DIR}/qopengltimerquery_wrapper.cpp)
+ message(STATUS "Qt${QT_MAJOR_VERSION}OpenGL: Adding Desktop OpenGL classes")
+endif()
+
+
+configure_file("${QtOpenGL_SOURCE_DIR}/QtOpenGL_global.post.h.in"
+ "${QtOpenGL_BINARY_DIR}/QtOpenGL_global.post.h" @ONLY)
+
+set(QtOpenGL_include_dirs ${QtOpenGL_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}OpenGL_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtOpenGL_GEN_DIR}
+ )
+set(QtOpenGL_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}OpenGL_LIBRARIES})
+set(QtOpenGL_deps QtGui)
+
+create_pyside_module(NAME QtOpenGL
+ INCLUDE_DIRS QtOpenGL_include_dirs
+ LIBRARIES QtOpenGL_libraries
+ DEPS QtOpenGL_deps
+ TYPESYSTEM_PATH QtOpenGL_SOURCE_DIR
+ SOURCES QtOpenGL_SRC
+ STATIC_SOURCES QtOpenGL_static_sources
+ DROPPED_ENTRIES QtOpenGL_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtOpenGL/QtOpenGL_global.post.h.in b/sources/pyside6/PySide6/QtOpenGL/QtOpenGL_global.post.h.in
new file mode 100644
index 000000000..571b245a3
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/QtOpenGL_global.post.h.in
@@ -0,0 +1,35 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+#include <QtGui/qtgui-config.h>
+
+#if QT_CONFIG(opengles2)
+# include <QtOpenGL/qopenglfunctions_es2.h>
+#elif QT_CONFIG(opengl)
+# include <QtOpenGL/qopenglfunctions_1_0.h>
+# include <QtOpenGL/qopenglfunctions_1_1.h>
+# include <QtOpenGL/qopenglfunctions_1_2.h>
+# include <QtOpenGL/qopenglfunctions_1_3.h>
+# include <QtOpenGL/qopenglfunctions_1_4.h>
+# include <QtOpenGL/qopenglfunctions_1_5.h>
+# include <QtOpenGL/qopenglfunctions_2_0.h>
+# include <QtOpenGL/qopenglfunctions_2_1.h>
+# include <QtOpenGL/qopenglfunctions_3_0.h>
+# include <QtOpenGL/qopenglfunctions_3_1.h>
+# include <QtOpenGL/qopenglfunctions_3_2_compatibility.h>
+# include <QtOpenGL/qopenglfunctions_3_2_core.h>
+# include <QtOpenGL/qopenglfunctions_3_3_compatibility.h>
+# include <QtOpenGL/qopenglfunctions_3_3_core.h>
+# include <QtOpenGL/qopenglfunctions_4_0_compatibility.h>
+# include <QtOpenGL/qopenglfunctions_4_0_core.h>
+# include <QtOpenGL/qopenglfunctions_4_1_compatibility.h>
+# include <QtOpenGL/qopenglfunctions_4_1_core.h>
+# include <QtOpenGL/qopenglfunctions_4_2_compatibility.h>
+# include <QtOpenGL/qopenglfunctions_4_2_core.h>
+# include <QtOpenGL/qopenglfunctions_4_3_compatibility.h>
+# include <QtOpenGL/qopenglfunctions_4_3_core.h>
+# include <QtOpenGL/qopenglfunctions_4_4_compatibility.h>
+# include <QtOpenGL/qopenglfunctions_4_4_core.h>
+# include <QtOpenGL/qopenglfunctions_4_5_compatibility.h>
+# include <QtOpenGL/qopenglfunctions_4_5_core.h>
+# include <QtOpenGL/qopenglversionfunctionsfactory.h>
+#endif
diff --git a/sources/pyside6/PySide6/QtOpenGL/glue/utils.cpp b/sources/pyside6/PySide6/QtOpenGL/glue/utils.cpp
new file mode 100644
index 000000000..27a8a9fdf
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/glue/utils.cpp
@@ -0,0 +1,40 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <QtGui/QOpenGLFunctions>
+
+// Return the number of return values of the glGetBoolean/Double/Integerv functions
+// cf https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGet.xhtml
+int glGetVReturnSize(GLenum pname)
+{
+ switch (pname) {
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAX_VIEWPORT_DIMS:
+#if !QT_CONFIG(opengles2)
+ case GL_POINT_SIZE_RANGE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_VIEWPORT_BOUNDS_RANGE:
+#endif
+ return 2;
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ return 4;
+ case GL_COMPRESSED_TEXTURE_FORMATS:
+ return GL_NUM_COMPRESSED_TEXTURE_FORMATS;
+ default:
+ break;
+ }
+ return 1;
+}
+
+// Return the number of return values of the indexed
+// glGetBoolean/Double/Integeri_v functions
+// cf https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGet.xhtml
+int glGetI_VReturnSize(GLenum pname)
+{
+ return pname == GL_VIEWPORT ? 4 : 1;
+}
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_glgeti_v_includes.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_glgeti_v_includes.xml
new file mode 100644
index 000000000..56ff7bcda
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_glgeti_v_includes.xml
@@ -0,0 +1 @@
+<inject-code class="native" position="beginning" file="../glue/qtopengl.cpp" snippet="glgeti-vreturnsize_declaration"/>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_glgeti_v_modifications.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_glgeti_v_modifications.xml
new file mode 100644
index 000000000..f0e6084cf
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_glgeti_v_modifications.xml
@@ -0,0 +1,18 @@
+<modify-function signature="glGetBooleani_v(GLenum,GLuint,GLboolean*)">
+ <modify-argument index="return" pyi-type="Union[bool,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qopenglextrafunctions-glgetbooleani-v"/>
+</modify-function>
+<modify-function signature="glGetIntegeri_v(GLenum,GLuint,GLint*)">
+ <modify-argument index="return" pyi-type="Union[int,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qopenglextrafunctions-glgetintegeri-v"/>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_glgetv_includes.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_glgetv_includes.xml
new file mode 100644
index 000000000..3f48f19b8
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_glgetv_includes.xml
@@ -0,0 +1,5 @@
+<extra-includes>
+ <include file-name="QtCore/QVarLengthArray" location="global"/>
+ <include file-name="sbkcpptonumpy.h" location="global"/>
+</extra-includes>
+<inject-code class="native" position="beginning" file="../glue/qtopengl.cpp" snippet="glgetvreturnsize_declaration"/>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_glgetv_modifications.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_glgetv_modifications.xml
new file mode 100644
index 000000000..b5fab57ba
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_glgetv_modifications.xml
@@ -0,0 +1,36 @@
+<modify-function signature="glGetBooleanv(GLenum,GLboolean*)">
+ <modify-argument index="return" pyi-type="Union[bool,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qopenglfunctions-glgetbooleanv"/>
+</modify-function>
+<modify-function signature="glGetDoublev(GLenum,GLdouble*)">
+ <modify-argument index="return" pyi-type="Union[float,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qopenglfunctions-glgetdoublev"/>
+</modify-function>
+<modify-function signature="glGetFloatv(GLenum,GLfloat*)">
+ <modify-argument index="return" pyi-type="Union[float,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qopenglfunctions-glgetfloatv"/>
+</modify-function>
+<modify-function signature="glGetIntegerv(GLenum,GLint*)">
+ <modify-argument index="return" pyi-type="Union[int,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qopenglfunctions-glgetintegerv"/>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl.xml
new file mode 100644
index 000000000..efbd16056
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl.xml
@@ -0,0 +1,723 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtOpenGL"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no" />
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no" />
+ <load-typesystem name="templates/opengl_common.xml" generate="no" />
+
+ <rejection class="^QOpenGL.*$" argument-type="^const GLboolean ?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^GLchar\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?GLchar ?\*(const)?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^char\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?char ?\*\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="GLintptr"/>
+ <rejection class="^QOpenGL.*$" argument-type="GLsizeiptr"/>
+ <rejection class="^QOpenGL.*$" argument-type="GLsync"/>
+ <rejection class="^QOpenGL.*$" argument-type="^GLubyte( const)?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?QMatrix.x. ?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="qopengl_GLintptr"/>
+ <rejection class="^QOpenGL.*$" argument-type="qopengl_GLsizeiptr"/>
+ <rejection class="^QOpenGL.*$" argument-type="QOpenGLTextureHelper*"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?QVector.D ?\*$"/>
+ <rejection class="^QOpenGL.*$" argument-type="^(const )?void ?\*\*$"/>
+
+ <!-- Reject any non-const array of the version functions -->
+ <rejection class="^QOpenGLFunctions.*$" function-name="^glGet(Buffer|VertexAttrib)?Pointer.*$"/>
+ <rejection class="^QOpenGLFunctions.*$" function-name="^glMultiDrawElements.*$"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glAreTexturesResident"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateBuffers"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateFramebuffers"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateProgramPipelines"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateQueries"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateRenderbuffers"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateSamplers"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateTextures"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateTransformFeedbacks"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glCreateVertexArrays"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glFeedbackBuffer"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenBuffers"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenFramebuffers"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenProgramPipelines"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenQueries"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenRenderbuffers"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenSamplers"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenTextures"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenTransformFeedbacks"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGenVertexArrays"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetActiveAtomicCounterBufferiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetActiveSubroutineUniformiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetActiveUniformBlockiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetActiveUniformsiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetAttachedShaders"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetBufferParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetClipPlane"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetColorTableParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetColorTableParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetConvolutionParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetConvolutionParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetFramebufferAttachmentParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetFramebufferParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetHistogramParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetHistogramParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetInternalformativ"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetLightfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetLightiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetMapdv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetMapfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetMapiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetMaterialfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetMaterialiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetMinmaxParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetMinmaxParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetMultisamplefv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetNamedBufferParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetNamedFramebufferAttachmentParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetNamedFramebufferParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetNamedRenderbufferParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnMapdv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnMapfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnMapiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnPixelMapfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnPixelMapuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnPixelMapusv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnUniformdv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnUniformfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnUniformiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetnUniformuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetPixelMapfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetPixelMapuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetPixelMapusv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetProgramInterfaceiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetProgramiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetProgramPipelineiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetProgramResourceiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetProgramStageiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetQueryIndexediv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetQueryiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetQueryObjectiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetQueryObjectuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetRenderbufferParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetSamplerParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetSamplerParameterIiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetSamplerParameterIuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetSamplerParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetShaderiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetShaderPrecisionFormat"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexEnvfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexEnviv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexGendv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexGenfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexGeniv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexLevelParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexLevelParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexParameterIiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexParameterIuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTexParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTextureLevelParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTextureLevelParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTextureParameterfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTextureParameterIiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTextureParameterIuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTextureParameteriv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTransformFeedbacki_v"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetTransformFeedbackiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetUniformdv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetUniformfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetUniformiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetUniformSubroutineuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetUniformuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetVertexArrayIndexediv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetVertexArrayiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetVertexAttribdv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetVertexAttribfv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetVertexAttribIiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetVertexAttribIuiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetVertexAttribiv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glGetVertexAttribLdv"/>
+ <rejection class="^QOpenGLFunctions_\d_\d.*$" function-name="glSelectBuffer"/>
+
+ <object-type name="QOpenGLBuffer">
+ <enum-type name="Access"/>
+ <enum-type name="RangeAccessFlag" flags="RangeAccessFlags"/>
+ <enum-type name="Type"/>
+ <enum-type name="UsagePattern"/>
+ <modify-function signature="allocate(const void*,int)">
+ <modify-argument index="1" pyi-type="bytes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QOpenGLDebugLogger">
+ <enum-type name="LoggingMode"/>
+ </object-type>
+ <value-type name="QOpenGLDebugMessage">
+ <enum-type name="Source" flags="Sources"/>
+ <enum-type name="Type" flags="Types"/>
+ <enum-type name="Severity" flags="Severities"/>
+ </value-type>
+
+ <object-type name="QOpenGLFunctions_1_0">
+ &glgetv_includes;
+ &glgetv_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ </object-type>
+ <object-type name="QOpenGLFunctions_1_1">
+ &glgetv_includes;
+ &glgetv_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ </object-type>
+ <object-type name="QOpenGLFunctions_1_2">
+ &glgetv_includes;
+ &glgetv_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ </object-type>
+ <object-type name="QOpenGLFunctions_1_3">
+ &glgetv_includes;
+ &glgetv_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ </object-type>
+ <object-type name="QOpenGLFunctions_1_4">
+ &glgetv_includes;
+ &glgetv_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ </object-type>
+ <object-type name="QOpenGLFunctions_1_5">
+ &glgetv_includes;
+ &glgetv_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ </object-type>
+ <object-type name="QOpenGLFunctions_2_0">
+ &glgetv_includes;
+ &glgetv_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ </object-type>
+ <object-type name="QOpenGLFunctions_2_1">
+ &glgetv_includes;
+ &glgetv_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ </object-type>
+ <object-type name="QOpenGLFunctions_3_0">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ </object-type>
+ <object-type name="QOpenGLFunctions_3_1">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ </object-type>
+ <object-type name="QOpenGLFunctions_3_2_Compatibility">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ </object-type>
+ <object-type name="QOpenGLFunctions_3_2_Core">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ </object-type>
+ <object-type name="QOpenGLFunctions_3_3_Compatibility">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications3_3a;
+ </object-type>
+ <object-type name="QOpenGLFunctions_3_3_Core">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_0_Compatibility">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications3_3a;
+ &opengl_modifications4_0;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_0_Core">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications4_0;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_1_Compatibility">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications3_3a;
+ &opengl_modifications4_1;
+ &opengl_modifications4_0;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_1_Core">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications4_0;
+ &opengl_modifications4_1;
+ &opengl_modifications_va;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_2_Compatibility">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications3_3a;
+ &opengl_modifications4_0;
+ &opengl_modifications4_1;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_2_Core">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications4_0;
+ &opengl_modifications4_1;
+ &opengl_modifications_va;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_3_Compatibility">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications3_3a;
+ &opengl_modifications4_0;
+ &opengl_modifications4_1;
+ &opengl_modifications4_3;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_3_Core">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications4_0;
+ &opengl_modifications4_3;
+ &opengl_modifications4_1;
+ &opengl_modifications_va;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_4_Compatibility">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications3_3a;
+ &opengl_modifications4_0;
+ &opengl_modifications4_1;
+ &opengl_modifications4_3;
+ &opengl_modifications4_4;
+ &opengl_modifications4_4_core;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_4_Core">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications4_0;
+ &opengl_modifications4_1;
+ &opengl_modifications_va;
+ &opengl_modifications4_3;
+ &opengl_modifications4_4;
+ &opengl_modifications4_4_core;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_5_Compatibility">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_0_compat;
+ &opengl_modifications1_1;
+ &opengl_modifications1_1_compat;
+ &opengl_modifications1_2_compat;
+ &opengl_modifications1_3_compat;
+ &opengl_modifications1_4;
+ &opengl_modifications1_4_compat;
+ &opengl_modifications2_0;
+ &opengl_modifications2_0_compat;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications3_3a;
+ &opengl_modifications4_0;
+ &opengl_modifications4_1;
+ &opengl_modifications4_3;
+ &opengl_modifications4_4;
+ &opengl_modifications4_4_core;
+ &opengl_modifications4_5;
+ </object-type>
+ <object-type name="QOpenGLFunctions_4_5_Core">
+ &glgetv_includes;
+ &glgeti_v_includes;
+ &glgetv_modifications;
+ &glgeti_v_modifications;
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ &opengl_modifications1_4;
+ &opengl_modifications2_0;
+ &opengl_modifications2_1;
+ &opengl_modifications3_0;
+ &opengl_modifications3_3;
+ &opengl_modifications4_0;
+ &opengl_modifications4_1;
+ &opengl_modifications4_3;
+ &opengl_modifications4_4;
+ &opengl_modifications4_4_core;
+ &opengl_modifications4_5;
+ &opengl_modifications_va;
+ </object-type>
+ <object-type name="QOpenGLFunctions_ES2">
+ &opengl_modifications1_0;
+ &opengl_modifications1_1;
+ </object-type>
+
+ <object-type name="QOpenGLVersionFunctionsFactory">
+ <extra-includes>
+ <include file-name="QtOpenGL/qopenglfunctions_1_0.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_1_1.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_1_2.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_1_3.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_1_4.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_1_5.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_2_0.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_2_1.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_3_0.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_3_1.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_3_2_compatibility.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_3_2_core.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_3_3_compatibility.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_3_3_core.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_0_compatibility.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_0_core.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_1_compatibility.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_1_core.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_2_compatibility.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_2_core.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_3_compatibility.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_3_core.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_4_compatibility.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_4_core.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_5_compatibility.h" location="global"/>
+ <include file-name="QtOpenGL/qopenglfunctions_4_5_core.h" location="global"/>
+ </extra-includes>
+ <modify-function signature="get(const QOpenGLVersionProfile &amp;,QOpenGLContext *)">
+ <inject-code class="target" position="beginning" file="../glue/qtopengl.cpp"
+ snippet="qopenglversionfunctionsfactory-get"/>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QOpenGLFramebufferObject">
+ <enum-type name="Attachment"/>
+ <enum-type name="FramebufferRestorePolicy"/>
+ </object-type>
+ <value-type name="QOpenGLFramebufferObjectFormat"/>
+ <object-type name="QAbstractOpenGLFunctions"/>
+ <value-type name="QOpenGLPixelTransferOptions"/>
+ <object-type name="QOpenGLShader">
+ <enum-type name="ShaderTypeBit" flags="ShaderType"/>
+ </object-type>
+ <object-type name="QOpenGLPaintDevice"/>
+ <object-type name="QOpenGLShaderProgram">
+ <modify-function signature="setAttributeArray(int,const float*,int,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setAttributeArray(const char*,const float*,int,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setAttributeValue(int,const float*,int,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setAttributeValue(const char*,const float*,int,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setUniformValueArray(int,const float*,int,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setUniformValueArray(int,const GLint*,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setUniformValueArray(int,const GLuint*,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setUniformValueArray(const char*,const float*,int,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setUniformValueArray(const char*,const GLint*,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <modify-function signature="setUniformValueArray(const char*,const GLuint*,int)">
+ <modify-argument index="2"><array/></modify-argument>
+ </modify-function>
+ <!-- Add explicit signatures for the setUniformValue functions -->
+ <modify-function signature="^setUniformValue\(const char\*,(float|int|uint)\)$" remove="all"/>
+ <!-- No need for a signature for GLuint, since Qt (internally) calls the same function: glUniform1i -->
+ <add-function signature="setUniformValue1f(const char*, float)" return-type="void">
+ <inject-code file="../glue/qtopengl.cpp" snippet="qopenglshaderprogram_setuniformvalue_float"/>
+ </add-function>
+ <add-function signature="setUniformValue1i(const char*, GLint)" return-type="void">
+ <inject-code file="../glue/qtopengl.cpp" snippet="qopenglshaderprogram_setuniformvalue_int"/>
+ </add-function>
+ <add-function signature="setUniformValue1f(GLint, float)" return-type="void">
+ <inject-code file="../glue/qtopengl.cpp" snippet="qopenglshaderprogram_setuniformvalue_float"/>
+ </add-function>
+ <add-function signature="setUniformValue1i(GLint, GLint)" return-type="void">
+ <inject-code file="../glue/qtopengl.cpp" snippet="qopenglshaderprogram_setuniformvalue_int"/>
+ </add-function>
+ </object-type>
+ <object-type name="QOpenGLTexture">
+ <enum-type name="BindingTarget"/>
+ <enum-type name="CoordinateDirection"/>
+ <enum-type name="ComparisonFunction"/>
+ <enum-type name="ComparisonMode"/>
+ <enum-type name="CubeMapFace"/>
+ <enum-type name="DepthStencilMode"/>
+ <enum-type name="Feature" flags="Features"/>
+ <enum-type name="Filter"/>
+ <enum-type name="MipMapGeneration"/>
+ <enum-type name="PixelFormat"/>
+ <enum-type name="PixelType"/>
+ <enum-type name="SwizzleComponent"/>
+ <enum-type name="SwizzleValue"/>
+ <enum-type name="Target"/>
+ <enum-type name="TextureFormat"/>
+ <enum-type name="TextureFormatClass"/>
+ <enum-type name="TextureUnitReset"/>
+ <enum-type name="WrapMode"/>
+ <modify-function signature="borderColor(unsigned int*)const" remove="all"/>
+ <modify-function signature="borderColor(int*)const" remove="all"/>
+ <modify-function signature="borderColor(float*)const" remove="all"/>
+ </object-type>
+ <object-type name="QOpenGLTextureBlitter">
+ <enum-type name="Origin"/>
+ </object-type>
+ <object-type name="QOpenGLTimeMonitor"/>
+ <object-type name="QOpenGLTimerQuery"/>
+ <object-type name="QOpenGLWindow">
+ <enum-type name="UpdateBehavior"/>
+ </object-type>
+ <value-type name="QOpenGLVersionProfile"/>
+ <object-type name="QOpenGLVertexArrayObject">
+ <object-type name="Binder">
+ <add-function signature="__enter__()" return-type="QOpenGLVertexArrayObject::Binder">
+ <inject-code file="../glue/qtopengl.cpp" snippet="vao-binder-enter"/>
+ </add-function>
+ <add-function signature="__exit__(PyObject*,PyObject*,PyObject*)">
+ <inject-code file="../glue/qtopengl.cpp" snippet="vao-binder-exit"/>
+ </add-function>
+ </object-type>
+ </object-type>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_0.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_0.xml
new file mode 100644
index 000000000..152efad9e
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_0.xml
@@ -0,0 +1,15 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glGetStringi?\(.*$">
+ <modify-argument index="return">
+ <replace-type modified-type="QString"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="glGetString_return_QString"/>
+ </inject-code>
+</modify-function>
+<modify-function signature="^glTexParameterI?u?[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_0_compat.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_0_compat.xml
new file mode 100644
index 000000000..a5f8ee77a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_0_compat.xml
@@ -0,0 +1,67 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glBitmap\(.*$" remove="all"/>
+<modify-function signature="^glColor[34][a-z]{1,2}v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="glClipPlane(GLenum,const GLdouble*)">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glEvalCoord\d[a-z]{1,2}v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glFog[fi]v\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glIndex[a-z]v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glLoadMatrix[df]\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glLight[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glLightModel[fi]v\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glMap1[df]\(.*$">
+ <modify-argument index="6"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glMap2[df]\(.*$">
+ <modify-argument index="10"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glMaterial[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glMultMatrix[df]\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glNormal3.v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glPixelMap[a-z]{1,2}v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glPolygonStipple\(.*$" remove="all"/>
+<modify-function signature="^glRasterPos\d[a-z]v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glRect[dfis]v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glTexCoord\d[dfis]v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glTexEnv[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glTexGen[dfi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glVertex\d[dfis]v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_1.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_1.xml
new file mode 100644
index 000000000..1601a19c3
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_1.xml
@@ -0,0 +1,8 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<!-- Except glGenLists/glDeleteLists -->
+<modify-function signature="^glDelete[A-KM-Z].*s\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_1_compat.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_1_compat.xml
new file mode 100644
index 000000000..8e9293fd6
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_1_compat.xml
@@ -0,0 +1,11 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glPrioritizeTextures\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glIndexubv\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_2_compat.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_2_compat.xml
new file mode 100644
index 000000000..58d395e3a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_2_compat.xml
@@ -0,0 +1,10 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glColorTableParameter[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glConvolutionParameter[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_3_compat.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_3_compat.xml
new file mode 100644
index 000000000..90903b33b
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_3_compat.xml
@@ -0,0 +1,10 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^gl(Load|Mult)TransposeMatrix[df]\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glMultiTexCoord\d[a-z]v\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_4.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_4.xml
new file mode 100644
index 000000000..7cd5f74ea
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_4.xml
@@ -0,0 +1,11 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glMultiDrawArrays\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glPointParameter[fi]v\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_4_compat.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_4_compat.xml
new file mode 100644
index 000000000..56da84116
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications1_4_compat.xml
@@ -0,0 +1,13 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glFogCoord[df]v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glSecondaryColor3u?[bdfis]v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glWindowPos[23][dfis]v\(.*$">
+ <modify-argument index="1"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_0.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_0.xml
new file mode 100644
index 000000000..5b342087e
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_0.xml
@@ -0,0 +1,13 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glDrawBuffers\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glUniformMatrix\d[df]v\(.*$">
+ <modify-argument index="4"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glUniform\d?.v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_0_compat.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_0_compat.xml
new file mode 100644
index 000000000..b0c804c11
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_0_compat.xml
@@ -0,0 +1 @@
+&typesystem_opengl_modifications_va.xml;
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_1.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_1.xml
new file mode 100644
index 000000000..741fbf7d8
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications2_1.xml
@@ -0,0 +1,7 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glUniformMatrix\dx\d[a-z]v\(.*$">
+ <modify-argument index="4"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_0.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_0.xml
new file mode 100644
index 000000000..782400768
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_0.xml
@@ -0,0 +1,10 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glClearBufferu?[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glUniform\duiv\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_3.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_3.xml
new file mode 100644
index 000000000..c7e883b87
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_3.xml
@@ -0,0 +1,10 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glSamplerParameterI?u?[dfi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glVertexAttribP\duiv\(.*$">
+ <modify-argument index="4"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_3a.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_3a.xml
new file mode 100644
index 000000000..95956d164
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications3_3a.xml
@@ -0,0 +1,21 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+Present from 3.3..4.5 except 4.4 Core/4.5 Core
+-->
+<modify-function signature="^glColorP[34]uiv\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glMultiTexCoordP\duiv\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^gl(Normal|SecondaryColor)P3uiv\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glTexCoordP\duiv\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glVertexP\duiv\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_0.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_0.xml
new file mode 100644
index 000000000..a66a74895
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_0.xml
@@ -0,0 +1,10 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glPatchParameterfv\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glUniformSubroutinesuiv\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_1.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_1.xml
new file mode 100644
index 000000000..0fb6cd49a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_1.xml
@@ -0,0 +1,40 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^gl(DepthRange|Scissor|Viewport)Arrayv\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="glGetDoublei_v(GLenum,GLuint,GLdouble*)">
+ <modify-argument index="return" pyi-type="Union[float,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qopenglextrafunctions-glgetdoublei-v"/>
+</modify-function>
+<modify-function signature="glGetFloati_v(GLenum,GLuint,GLfloat*)">
+ <modify-argument index="return" pyi-type="Union[float,numpy.ndarray]">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" snippet="qopenglextrafunctions-glgetfloati-v"/>
+</modify-function>
+<modify-function signature="^glProgramUniform\du?[dfi]v\(.*$">
+ <modify-argument index="4"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glProgramUniformMatrix\d[df]v\(.*$">
+ <modify-argument index="5"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glProgramUniformMatrix\dx\d[df]v\(.*$">
+ <modify-argument index="5"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^gl(Scissor|Viewport)Indexedf?v\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glShaderBinary\(GLsizei,const GLuint\*,.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_3.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_3.xml
new file mode 100644
index 000000000..74298677d
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_3.xml
@@ -0,0 +1,7 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glInvalidate(Sub)?Framebuffer\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_4.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_4.xml
new file mode 100644
index 000000000..cf90e4e0b
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_4.xml
@@ -0,0 +1,20 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glBindBuffersBase\(.*$">
+ <modify-argument index="4"><array/></modify-argument>
+</modify-function>
+<modify-function signature="glBindBuffersRange(GLenum,GLuint,GLsizei,const GLuint*,const GLintptr*,const GLsizeiptr*)">
+ <modify-argument index="4"><array/></modify-argument>
+ <modify-argument index="5"><array/></modify-argument>
+ <modify-argument index="6"><array/></modify-argument>
+</modify-function>
+<modify-function signature="glBindVertexBuffers(GLuint,GLsizei,const GLuint*,const GLintptr*,const GLsizei*)">
+ <modify-argument index="3"><array/></modify-argument>
+ <modify-argument index="4"><array/></modify-argument>
+ <modify-argument index="5"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glBind(ImageTextures|Samplers|Textures)\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_4_core.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_4_core.xml
new file mode 100644
index 000000000..3f1291db7
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_4_core.xml
@@ -0,0 +1,7 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glDebugMessageControl\(.*$">
+ <modify-argument index="5"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_5.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_5.xml
new file mode 100644
index 000000000..826727736
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_5.xml
@@ -0,0 +1,21 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glClearNamedFramebufferu?[fi]v\(.*$">
+ <modify-argument index="4"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glInvalidateNamedFramebuffer(Sub)?Data\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glNamedFramebufferDrawBuffers\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="^glTextureParameterI?u?[fi]v\(.*$">
+ <modify-argument index="3"><array/></modify-argument>
+</modify-function>
+<modify-function signature="glVertexArrayVertexBuffers(GLuint, GLuint,GLsizei,const GLuint *,const GLintptr*,const GLsizei*)">
+ <modify-argument index="4"><array/></modify-argument>
+ <modify-argument index="5"><array/></modify-argument>
+ <modify-argument index="6"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_5_core.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_5_core.xml
new file mode 100644
index 000000000..5b7c30fe5
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications4_5_core.xml
@@ -0,0 +1,5 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+ Remove me!
+-->
diff --git a/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications_va.xml b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications_va.xml
new file mode 100644
index 000000000..624281645
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGL/typesystem_opengl_modifications_va.xml
@@ -0,0 +1,7 @@
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<modify-function signature="^glVertexAttrib[IL]?\dN?u?[bdfis]v\(.*$">
+ <modify-argument index="2"><array/></modify-argument>
+</modify-function>
diff --git a/sources/pyside6/PySide6/QtOpenGLWidgets/CMakeLists.txt b/sources/pyside6/PySide6/QtOpenGLWidgets/CMakeLists.txt
new file mode 100644
index 000000000..8c7386130
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGLWidgets/CMakeLists.txt
@@ -0,0 +1,33 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtOpenGLWidgets)
+
+set(QtOpenGLWidgets_SRC
+${QtOpenGLWidgets_GEN_DIR}/qopenglwidget_wrapper.cpp
+# module is always needed
+${QtOpenGLWidgets_GEN_DIR}/qtopenglwidgets_module_wrapper.cpp
+)
+
+set(QtOpenGLWidgets_include_dirs ${QtOpenGLWidgets_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}OpenGL_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtOpenGLWidgets_GEN_DIR})
+
+set(QtOpenGLWidgets_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}OpenGLWidgets_LIBRARIES})
+
+set(QtOpenGLWidgets_deps QtOpenGL QtWidgets)
+
+create_pyside_module(NAME QtOpenGLWidgets
+ INCLUDE_DIRS QtOpenGLWidgets_include_dirs
+ LIBRARIES QtOpenGLWidgets_libraries
+ DEPS QtOpenGLWidgets_deps
+ TYPESYSTEM_PATH QtOpenGLWidgets_SOURCE_DIR
+ SOURCES QtOpenGLWidgets_SRC)
diff --git a/sources/pyside6/PySide6/QtOpenGLWidgets/typesystem_openglwidgets.xml b/sources/pyside6/PySide6/QtOpenGLWidgets/typesystem_openglwidgets.xml
new file mode 100644
index 000000000..1e308a3f2
--- /dev/null
+++ b/sources/pyside6/PySide6/QtOpenGLWidgets/typesystem_openglwidgets.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtOpenGLWidgets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no" />
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no" />
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no" />
+
+ <object-type name="QOpenGLWidget">
+ <enum-type name="UpdateBehavior"/>
+ <enum-type name="TargetBuffer" since="6.5"/>
+ </object-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtPdf/CMakeLists.txt b/sources/pyside6/PySide6/QtPdf/CMakeLists.txt
new file mode 100644
index 000000000..5b9c1457d
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPdf/CMakeLists.txt
@@ -0,0 +1,42 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtPdf)
+
+set(QtPdf_SRC
+${QtPdf_GEN_DIR}/qpdfbookmarkmodel_wrapper.cpp
+${QtPdf_GEN_DIR}/qpdfdocument_wrapper.cpp
+${QtPdf_GEN_DIR}/qpdfdocumentrenderoptions_wrapper.cpp
+${QtPdf_GEN_DIR}/qpdfpagerenderer_wrapper.cpp
+${QtPdf_GEN_DIR}/qpdflink_wrapper.cpp
+${QtPdf_GEN_DIR}/qpdflinkmodel_wrapper.cpp
+${QtPdf_GEN_DIR}/qpdfpagenavigator_wrapper.cpp
+${QtPdf_GEN_DIR}/qpdfsearchmodel_wrapper.cpp
+${QtPdf_GEN_DIR}/qpdfselection_wrapper.cpp
+# module is always needed
+${QtPdf_GEN_DIR}/qtpdf_module_wrapper.cpp
+)
+
+set(QtPdf_include_dirs ${QtPdf_SOURCE_DIR}
+ ${QtPdf_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtNetwork_GEN_DIR})
+
+set(QtPdf_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Pdf_LIBRARIES})
+
+set(QtPdf_deps QtCore QtGui QtNetwork)
+
+create_pyside_module(NAME QtPdf
+ INCLUDE_DIRS QtPdf_include_dirs
+ LIBRARIES QtPdf_libraries
+ DEPS QtPdf_deps
+ TYPESYSTEM_PATH QtPdf_SOURCE_DIR
+ SOURCES QtPdf_SRC
+ TYPESYSTEM_NAME ${QtPdf_BINARY_DIR}/typesystem_pdf.xml)
diff --git a/sources/pyside6/PySide6/QtPdf/typesystem_pdf.xml b/sources/pyside6/PySide6/QtPdf/typesystem_pdf.xml
new file mode 100644
index 000000000..e008e4880
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPdf/typesystem_pdf.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!--
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtPdf"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <object-type name="QPdfBookmarkModel">
+ <enum-type name="Role" python-type="IntEnum"/>
+ </object-type>
+ <object-type name="QPdfDocument">
+ <enum-type name="Status"/>
+ <enum-type name="Error"/>
+ <enum-type name="MetaDataField"/>
+ <enum-type name="PageModelRole"/>
+ </object-type>
+ <value-type name="QPdfDocumentRenderOptions">
+ <enum-type name="RenderFlag" flags="RenderFlags" since="6.5"/>
+ <enum-type name="Rotation" since="6.5"/>
+ </value-type>
+ <object-type name="QPdfPageRenderer">
+ <enum-type name="RenderMode"/>
+ </object-type>
+ <value-type name="QPdfLink"/>
+ <object-type name="QPdfPageNavigator"/>
+ <object-type name="QPdfSearchModel">
+ <enum-type name="Role"/>
+ </object-type>
+ <object-type name="QPdfLinkModel" since="6.6">
+ <enum-type name="Role"/>
+ </object-type>
+ <object-type name="QPdfSelection"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtPdfWidgets/CMakeLists.txt b/sources/pyside6/PySide6/QtPdfWidgets/CMakeLists.txt
new file mode 100644
index 000000000..de1335f8a
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPdfWidgets/CMakeLists.txt
@@ -0,0 +1,39 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtPdfWidgets)
+
+set(QtPdfWidgets_SRC
+${QtPdfWidgets_GEN_DIR}/qpdfpageselector_wrapper.cpp
+${QtPdfWidgets_GEN_DIR}/qpdfview_wrapper.cpp
+# module is always needed
+${QtPdfWidgets_GEN_DIR}/qtpdfwidgets_module_wrapper.cpp
+)
+
+set(QtPdfWidgets_include_dirs ${QtPdfWidgets_SOURCE_DIR}
+ ${QtPdfWidgets_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Pdf_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtPdf_GEN_DIR})
+
+set(QtPdfWidgets_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}PdfWidgets_LIBRARIES})
+
+set(QtPdfWidgets_deps QtCore QtGui QtNetwork QtWidgets QtPdf)
+
+create_pyside_module(NAME QtPdfWidgets
+ INCLUDE_DIRS QtPdfWidgets_include_dirs
+ LIBRARIES QtPdfWidgets_libraries
+ DEPS QtPdfWidgets_deps
+ TYPESYSTEM_PATH QtPdfWidgets_SOURCE_DIR
+ SOURCES QtPdfWidgets_SRC
+ TYPESYSTEM_NAME ${QtPdfWidgets_BINARY_DIR}/typesystem_pdfwidgets.xml)
diff --git a/sources/pyside6/PySide6/QtPdfWidgets/typesystem_pdfwidgets.xml b/sources/pyside6/PySide6/QtPdfWidgets/typesystem_pdfwidgets.xml
new file mode 100644
index 000000000..5df72075c
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPdfWidgets/typesystem_pdfwidgets.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!--
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtPdfWidgets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+ <load-typesystem name="QtPdf/typesystem_pdf.xml" generate="no"/>
+ <object-type name="QPdfPageSelector" since="6.6"/>
+ <object-type name="QPdfView">
+ <enum-type name="PageMode"/>
+ <enum-type name="ZoomMode"/>
+ </object-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtPositioning/CMakeLists.txt b/sources/pyside6/PySide6/QtPositioning/CMakeLists.txt
new file mode 100644
index 000000000..cad6dcb74
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPositioning/CMakeLists.txt
@@ -0,0 +1,60 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtPositioning)
+
+set(QtPositioning_OPTIONAL_SRC )
+set(QtPositioning_DROPPED_ENTRIES )
+
+set(QtPositioning_SRC
+${QtPositioning_GEN_DIR}/qgeoaddress_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeoareamonitorinfo_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeoareamonitorsource_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeolocation_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeocircle_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeocoordinate_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeopath_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeopolygon_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeopositioninfo_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeopositioninfosource_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeopositioninfosourcefactory_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeorectangle_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeosatelliteinfo_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeosatelliteinfosource_wrapper.cpp
+${QtPositioning_GEN_DIR}/qgeoshape_wrapper.cpp
+${QtPositioning_GEN_DIR}/qnmeapositioninfosource_wrapper.cpp
+${QtPositioning_GEN_DIR}/qnmeasatelliteinfosource_wrapper.cpp
+# module is always needed
+${QtPositioning_GEN_DIR}/qtpositioning_module_wrapper.cpp
+)
+
+set(QtPositioning_include_dirs ${QtPositioning_SOURCE_DIR}
+ ${QtPositioning_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Positioning_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtPositioning_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Positioning_LIBRARIES})
+
+set(QtPositioning_deps QtCore)
+
+create_pyside_module(NAME QtPositioning
+ INCLUDE_DIRS QtPositioning_include_dirs
+ LIBRARIES QtPositioning_libraries
+ DEPS QtPositioning_deps
+ TYPESYSTEM_PATH QtPositioning_SOURCE_DIR
+ SOURCES QtPositioning_SRC
+ DROPPED_ENTRIES QtPositioning_DROPPED_ENTRIES)
+
+if (APPLE)
+ # The QtLocation permission plugin cannot be linked to QtCore.abi3.so because for a framework
+ # build of Qt, the QtCore framework bundle must be loaded before calling
+ # Q_IMPORT_PLUGIN(QDarwinLocationPermissionPlugin)
+ set(permission_plugin_name "QDarwinLocationPermissionPlugin")
+ set(permission_plugin "${QT_CMAKE_EXPORT_NAMESPACE}::${permission_plugin_name}")
+ set_target_properties(QtPositioning PROPERTIES "_qt_has_${permission_plugin_name}_usage_description" TRUE)
+ # importing the plugin
+ qt6_import_plugins(QtPositioning INCLUDE ${permission_plugin})
+endif()
diff --git a/sources/pyside6/PySide6/QtPositioning/typesystem_positioning.xml b/sources/pyside6/PySide6/QtPositioning/typesystem_positioning.xml
new file mode 100644
index 000000000..8dac3f00d
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPositioning/typesystem_positioning.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtPositioning"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <inject-code class="native" position="beginning" file="../glue/qtpositioning.cpp"
+ snippet="darwin_location_permission_plugin"/>
+ <value-type name="QGeoAddress"/>
+ <value-type name="QGeoAreaMonitorInfo"/>
+ <object-type name="QGeoAreaMonitorSource">
+ <enum-type name="Error"/>
+ <enum-type name="AreaMonitorFeature" flags="AreaMonitorFeatures"/>
+ </object-type>
+ <value-type name="QGeoLocation"/>
+ <value-type name="QGeoCircle"/>
+ <value-type name="QGeoCoordinate">
+ <enum-type name="CoordinateType"/>
+ <enum-type name="CoordinateFormat"/>
+ </value-type>
+ <value-type name="QGeoPath"/>
+ <value-type name="QGeoPolygon"/>
+ <value-type name="QGeoPositionInfo">
+ <enum-type name="Attribute"/>
+ </value-type>
+ <object-type name="QGeoPositionInfoSource">
+ <enum-type name="Error"/>
+ <enum-type name="PositioningMethod" flags="PositioningMethods"/>
+ </object-type>
+ <object-type name="QGeoPositionInfoSourceFactory"/>
+ <value-type name="QGeoRectangle"/>
+ <value-type name="QGeoSatelliteInfo">
+ <enum-type name="Attribute"/>
+ <enum-type name="SatelliteSystem"/>
+ </value-type>
+ <object-type name="QGeoSatelliteInfoSource">
+ <enum-type name="Error"/>
+ </object-type>
+ <value-type name="QGeoShape">
+ <enum-type name="ShapeType"/>
+ </value-type>
+ <object-type name="QNmeaPositionInfoSource">
+ <enum-type name="UpdateMode"/>
+ </object-type>
+ <object-type name="QNmeaSatelliteInfoSource">
+ <enum-type name="UpdateMode"/>
+ <enum-type name="SatelliteInfoParseStatus"/>
+ </object-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtPrintSupport/CMakeLists.txt b/sources/pyside6/PySide6/QtPrintSupport/CMakeLists.txt
new file mode 100644
index 000000000..fb0db5f83
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPrintSupport/CMakeLists.txt
@@ -0,0 +1,40 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtPrintSupport)
+
+set(QtPrintSupport_SRC
+${QtPrintSupport_GEN_DIR}/qabstractprintdialog_wrapper.cpp
+${QtPrintSupport_GEN_DIR}/qpagesetupdialog_wrapper.cpp
+${QtPrintSupport_GEN_DIR}/qprintdialog_wrapper.cpp
+${QtPrintSupport_GEN_DIR}/qprintengine_wrapper.cpp
+${QtPrintSupport_GEN_DIR}/qprinter_wrapper.cpp
+${QtPrintSupport_GEN_DIR}/qprinterinfo_wrapper.cpp
+${QtPrintSupport_GEN_DIR}/qprintpreviewdialog_wrapper.cpp
+${QtPrintSupport_GEN_DIR}/qprintpreviewwidget_wrapper.cpp
+# module is always needed
+${QtPrintSupport_GEN_DIR}/qtprintsupport_module_wrapper.cpp
+)
+
+set(QtPrintSupport_include_dirs ${QtPrintSupport_SOURCE_DIR}
+ ${QtPrintSupport_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}PrintSupport_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR})
+
+set(QtPrintSupport_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}PrintSupport_LIBRARIES})
+
+set(QtPrintSupport_deps QtWidgets)
+create_pyside_module(NAME QtPrintSupport
+ INCLUDE_DIRS QtPrintSupport_include_dirs
+ LIBRARIES QtPrintSupport_libraries
+ DEPS QtPrintSupport_deps
+ TYPESYSTEM_PATH QtPrintSupport_SOURCE_DIR
+ SOURCES QtPrintSupport_SRC
+ TYPESYSTEM_NAME ${QtPrintSupport_BINARY_DIR}/typesystem_printsupport.xml)
diff --git a/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport.xml b/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport.xml
new file mode 100644
index 000000000..46973a5f9
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtPrintSupport"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+ <load-typesystem name="QtPrintSupport/typesystem_printsupport_common.xml" generate="yes"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport_common.xml b/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport_common.xml
new file mode 100644
index 000000000..126902b73
--- /dev/null
+++ b/sources/pyside6/PySide6/QtPrintSupport/typesystem_printsupport_common.xml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtPrintSupport">
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+ <object-type name="QPageSetupDialog">
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="int">
+ <inject-code file="../glue/qtprintsupport.cpp" snippet="exec" />
+ </add-function>
+ </object-type>
+
+ <object-type name="QAbstractPrintDialog">
+ <enum-type name="PrintDialogOption" flags="PrintDialogOptions"/>
+ <enum-type name="PrintRange"/>
+ </object-type>
+
+ <object-type name="QPrintDialog">
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="int">
+ <inject-code file="../glue/qtprintsupport.cpp" snippet="exec" />
+ </add-function>
+ </object-type>
+ <object-type name="QPrintEngine">
+ <enum-type name="PrintEnginePropertyKey"/>
+ </object-type>
+ <value-type name="QPrinterInfo"/>
+ <rejection class="QPrinter" function-name="printerSelectionOption"/>
+ <rejection class="QPrinter" function-name="setPrinterSelectionOption"/>
+
+ <object-type name="QPrinter" >
+ <enum-type name="ColorMode"/>
+ <enum-type name="DuplexMode"/>
+ <enum-type name="OutputFormat"/>
+ <enum-type name="PageOrder"/>
+ <enum-type name="PaperSource"/>
+ <enum-type name="PrintRange"/>
+ <enum-type name="PrinterMode"/>
+ <enum-type name="PrinterState"/>
+ <enum-type name="Unit"/>
+ <modify-function signature="setEngines(QPrintEngine*,QPaintEngine*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <extra-includes>
+ <include file-name="QPrinterInfo" location="global"/>
+ </extra-includes>
+ <!-- fixme: Check if this is still required in Qt 6:
+ bool QPagedPaintDevice::setPageSize(QPageSize)
+ void QPagedPaintDevice::setPageSize(QPagedPaintDevice::PageSize) -->
+ <add-function signature="setPageSize(const QPageSize&amp;)" return-type="bool">
+ <inject-code file="../glue/qtprintsupport.cpp" snippet="setpagesize" />
+ </add-function>
+ </object-type>
+
+ <object-type name="QPrintPreviewDialog"/>
+ <object-type name="QPrintPreviewWidget">
+ <enum-type name="ViewMode"/>
+ <enum-type name="ZoomMode"/>
+ <modify-function signature="print()" rename="print_"/>
+ </object-type>
+
+</typesystem>
+
diff --git a/sources/pyside6/PySide6/QtQml/CMakeLists.txt b/sources/pyside6/PySide6/QtQml/CMakeLists.txt
new file mode 100644
index 000000000..87de1d7dd
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQml/CMakeLists.txt
@@ -0,0 +1,76 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtQml)
+
+qt_wrap_cpp(QPYQMLPARSERSTATUS_MOC "${pyside6_SOURCE_DIR}/qpyqmlparserstatus.h")
+qt_wrap_cpp(QPYQMLPROPERTYVALUESOURCE_MOC "${pyside6_SOURCE_DIR}/qpyqmlpropertyvaluesource.h")
+
+set(QtQml_static_sources "${QtQml_SOURCE_DIR}/pysideqmlvolatilebool.cpp"
+ "${QPYQMLPARSERSTATUS_MOC}"
+ "${QPYQMLPROPERTYVALUESOURCE_MOC}")
+
+set(QtQml_SRC
+${QtQml_GEN_DIR}/qjsengine_wrapper.cpp
+${QtQml_GEN_DIR}/qjsmanagedvalue_wrapper.cpp
+${QtQml_GEN_DIR}/qjsprimitivevalue_wrapper.cpp
+${QtQml_GEN_DIR}/qjsvalue_wrapper.cpp
+${QtQml_GEN_DIR}/qjsvalueiterator_wrapper.cpp
+${QtQml_GEN_DIR}/qpyqmlparserstatus_wrapper.cpp
+${QtQml_GEN_DIR}/qpyqmlpropertyvaluesource_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlabstracturlinterceptor_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlapplicationengine_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlcomponent_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlcontext_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlcontext_propertypair_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlerror_wrapper.cpp
+${QtQml_GEN_DIR}/qqmldebuggingenabler_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlengine_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlexpression_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlextensioninterface_wrapper.cpp
+${QtQml_GEN_DIR}/qqmltypesextensioninterface_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlextensionplugin_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlfile_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlfileselector_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlimageproviderbase_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlincubator_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlincubationcontroller_wrapper.cpp
+#${QtQml_GEN_DIR}/qqmllistproperty_wrapper.cpp
+${QtQml_GEN_DIR}/qqmllistreference_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlparserstatus_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlproperty_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlpropertymap_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlpropertyvaluesource_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlscriptstring_wrapper.cpp
+${QtQml_GEN_DIR}/qqmlnetworkaccessmanagerfactory_wrapper.cpp
+# module is always needed
+${QtQml_GEN_DIR}/qtqml_module_wrapper.cpp
+)
+
+configure_file("${QtQml_SOURCE_DIR}/QtQml_global.post.h.in"
+ "${QtQml_BINARY_DIR}/QtQml_global.post.h" @ONLY)
+
+set(QtQml_include_dirs ${QtQml_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Core_PRIVATE_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${libpysideqml_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtQml_GEN_DIR})
+
+set(QtQml_libraries pyside6 pyside6qml
+ ${Qt${QT_MAJOR_VERSION}Qml_LIBRARIES})
+
+set(QtQml_deps QtNetwork)
+
+create_pyside_module(NAME QtQml
+ INCLUDE_DIRS QtQml_include_dirs
+ LIBRARIES QtQml_libraries
+ DEPS QtQml_deps
+ TYPESYSTEM_PATH QtQml_SOURCE_DIR
+ SOURCES QtQml_SRC
+ STATIC_SOURCES QtQml_static_sources)
diff --git a/sources/pyside6/PySide6/QtQml/QtQml_global.post.h.in b/sources/pyside6/PySide6/QtQml/QtQml_global.post.h.in
new file mode 100644
index 000000000..64c563753
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQml/QtQml_global.post.h.in
@@ -0,0 +1,2 @@
+#include "qpyqmlparserstatus.h"
+#include "qpyqmlpropertyvaluesource.h"
diff --git a/sources/pyside6/PySide6/QtQml/pysideqmlvolatilebool.cpp b/sources/pyside6/PySide6/QtQml/pysideqmlvolatilebool.cpp
new file mode 100644
index 000000000..ca3dfebed
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQml/pysideqmlvolatilebool.cpp
@@ -0,0 +1,161 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "pysideqmlvolatilebool.h"
+
+#include <pep384ext.h>
+#include <signature.h>
+
+#include <QtCore/QDebug>
+
+// Volatile Bool used for QQmlIncubationController::incubateWhile(std::atomic<bool> *, int)
+
+// Generated headers containing the definition of struct
+// QtQml_VolatileBoolObject. It is injected to avoid "pyside6_qtqml_python.h"
+// depending on other headers.
+#include "pyside6_qtcore_python.h"
+#include "pyside6_qtqml_python.h"
+
+// VolatileBool (volatile bool) type definition.
+
+static PyObject *
+QtQml_VolatileBoolObject_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ static const char *kwlist[] = {"x", 0};
+ PyObject *x = Py_False;
+ long ok;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:bool", const_cast<char **>(kwlist), &x))
+ return nullptr;
+ ok = PyObject_IsTrue(x);
+ if (ok < 0)
+ return nullptr;
+
+ auto *self = PepExt_TypeCallAlloc<QtQml_VolatileBoolObject>(type, 0);
+
+ if (self != nullptr)
+ self->flag = new AtomicBool(ok);
+
+ return reinterpret_cast<PyObject *>(self);
+}
+
+static void QtQml_VolatileBoolObject_dealloc(PyObject *self)
+{
+ auto volatileBool = reinterpret_cast<QtQml_VolatileBoolObject *>(self);
+ delete volatileBool->flag;
+ Sbk_object_dealloc(self);
+}
+
+static PyObject *
+QtQml_VolatileBoolObject_get(QtQml_VolatileBoolObject *self)
+{
+ if (*self->flag) {
+ Py_RETURN_TRUE;
+ }
+ Py_RETURN_FALSE;
+}
+
+static PyObject *
+QtQml_VolatileBoolObject_set(QtQml_VolatileBoolObject *self, PyObject *args)
+{
+ PyObject *value = Py_False;
+ long ok;
+
+ if (!PyArg_ParseTuple(args, "O:bool", &value)) {
+ return nullptr;
+ }
+
+ ok = PyObject_IsTrue(value);
+ if (ok < 0)
+ return PyErr_Format(PyExc_TypeError, "Not a boolean value.");
+
+ *self->flag = ok > 0;
+
+ Py_RETURN_NONE;
+}
+
+static PyMethodDef QtQml_VolatileBoolObject_methods[] = {
+ {"get", reinterpret_cast<PyCFunction>(QtQml_VolatileBoolObject_get), METH_NOARGS,
+ "B.get() -> Bool. Returns the value of the volatile boolean"
+ },
+ {"set", reinterpret_cast<PyCFunction>(QtQml_VolatileBoolObject_set), METH_VARARGS,
+ "B.set(a) -> None. Sets the value of the volatile boolean"
+ },
+ {nullptr, nullptr, 0, nullptr} /* Sentinel */
+};
+
+static PyObject *
+QtQml_VolatileBoolObject_repr(QtQml_VolatileBoolObject *self)
+{
+ PyObject *s;
+
+ if (*self->flag)
+ s = PyBytes_FromFormat("%s(True)",
+ Py_TYPE(self)->tp_name);
+ else
+ s = PyBytes_FromFormat("%s(False)",
+ Py_TYPE(self)->tp_name);
+ Py_XINCREF(s);
+ return s;
+}
+
+static PyObject *
+QtQml_VolatileBoolObject_str(QtQml_VolatileBoolObject *self)
+{
+ PyObject *s;
+
+ if (*self->flag)
+ s = PyBytes_FromFormat("%s(True) -> %p",
+ Py_TYPE(self)->tp_name, self->flag);
+ else
+ s = PyBytes_FromFormat("%s(False) -> %p",
+ Py_TYPE(self)->tp_name, self->flag);
+ Py_XINCREF(s);
+ return s;
+}
+
+static PyTypeObject *createVolatileBoolType()
+{
+ PyType_Slot QtQml_VolatileBoolType_slots[] = {
+ {Py_tp_repr, reinterpret_cast<void *>(QtQml_VolatileBoolObject_repr)},
+ {Py_tp_str, reinterpret_cast<void *>(QtQml_VolatileBoolObject_str)},
+ {Py_tp_methods, reinterpret_cast<void *>(QtQml_VolatileBoolObject_methods)},
+ {Py_tp_new, reinterpret_cast<void *>(QtQml_VolatileBoolObject_new)},
+ {Py_tp_dealloc, reinterpret_cast<void *>(QtQml_VolatileBoolObject_dealloc)},
+ {0, 0}
+ };
+
+ PyType_Spec QtQml_VolatileBoolType_spec = {
+ "2:PySide6.QtQml.VolatileBool",
+ sizeof(QtQml_VolatileBoolObject),
+ 0,
+ Py_TPFLAGS_DEFAULT,
+ QtQml_VolatileBoolType_slots,
+ };
+
+ return SbkType_FromSpec(&QtQml_VolatileBoolType_spec);
+}
+
+PyTypeObject *QtQml_VolatileBool_TypeF(void)
+{
+ static auto *type = createVolatileBoolType();
+ return type;
+}
+
+static const char *VolatileBool_SignatureStrings[] = {
+ "PySide6.QtQml.VolatileBool.get(self)->bool",
+ "PySide6.QtQml.VolatileBool.set(self,a:object)",
+ nullptr}; // Sentinel
+
+void initQtQmlVolatileBool(PyObject *module)
+{
+ if (InitSignatureStrings(QtQml_VolatileBool_TypeF(), VolatileBool_SignatureStrings) < 0) {
+ PyErr_Print();
+ qWarning() << "Error initializing VolatileBool type.";
+ return;
+ }
+
+ Py_INCREF(QtQml_VolatileBool_TypeF());
+ PyModule_AddObject(module, PepType_GetNameStr(QtQml_VolatileBool_TypeF()),
+ reinterpret_cast<PyObject *>(QtQml_VolatileBool_TypeF()));
+}
diff --git a/sources/pyside6/PySide6/QtQml/pysideqmlvolatilebool.h b/sources/pyside6/PySide6/QtQml/pysideqmlvolatilebool.h
new file mode 100644
index 000000000..fd3707aba
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQml/pysideqmlvolatilebool.h
@@ -0,0 +1,15 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef PYSIDEQMLVOLATILEBOOL_H
+#define PYSIDEQMLVOLATILEBOOL_H
+
+#include <sbkpython.h>
+
+PyTypeObject *QtQml_VolatileBool_TypeF(void);
+
+#define VolatileBool_Check(op) (Py_TYPE(op) == QtQml_VolatileBool_TypeF())
+
+void initQtQmlVolatileBool(PyObject *module);
+
+#endif // PYSIDEQMLVOLATILEBOOL_H
diff --git a/sources/pyside6/PySide6/QtQml/typesystem_qml.xml b/sources/pyside6/PySide6/QtQml/typesystem_qml.xml
new file mode 100644
index 000000000..3392ef379
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQml/typesystem_qml.xml
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtQml"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+
+ <rejection class="QQmlPrivate"/>
+
+ <inject-code class="target" position="declaration">
+ // Volatile Bool Ptr type definition for QQmlIncubationController::incubateWhile(std::atomic&lt;bool&gt; *, int)
+ #include &lt;atomic&gt;
+
+ using AtomicBool = std::atomic&lt;bool&gt;;
+
+ struct QtQml_VolatileBoolObject {
+ PyObject_HEAD
+ AtomicBool *flag;
+ };
+ </inject-code>
+
+ <inject-code class="native" position="beginning">
+ #include &lt;pysideqml.h&gt;
+ #include &lt;pysideqmlregistertype.h&gt;
+ #include &lt;pysideqmlattached.h&gt;
+ #include "pysideqmlvolatilebool.h"
+ </inject-code>
+
+ <!-- This is to inform the generator that the VolatileBool python type exists -->
+ <custom-type name="VolatileBool" check-function="VolatileBool_Check"/>
+ <primitive-type name="bool volatile" target-lang-api-name="VolatileBool">
+ <!-- No conversion rules are specified here, because the generator does not handle
+ pointer to primitive types without function adjustment.
+ See commit ff0b861b59b41387e771d9cd565e13de8b2750d1 or search for changePStr
+ in generator tests folder. -->
+ </primitive-type>
+
+ <enum-type name="QQmlModuleImportSpecialVersions" doc-file="qqmlengine"/>
+
+ <!-- expose QQmlIncubationController::incubateWhile() (see
+ QtQml_VolatileBoolTypeF/pysideqmlvolatilebool.h) -->
+ <namespace-type name="std" generate="no">
+ <value-type name="atomic" generate="no"/>
+ </namespace-type>
+
+ <add-function signature="qmlAttachedPropertiesObject(PyTypeObject*@type_obj@,QObject*,bool=true)"
+ return-type="QObject*">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlattachedpropertiesobject"/>
+ </add-function>
+
+ <add-function signature="qmlRegisterType(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@)" return-type="int">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistertype"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst"
+ snippet="qmlregistertype"/>
+ <modify-argument index="2" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="qmlRegisterSingletonType(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@,PyObject*@callback@)" return-type="int">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistersingletontype_qobject_callback"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst"
+ snippet="qmlregistersingletontype_qobject_callback"/>
+ <modify-argument index="2" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="qmlRegisterSingletonType(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@)" return-type="int">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistersingletontype_qobject_nocallback"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst"
+ snippet="qmlregistersingletontype_qobject_nocallback"/>
+ <modify-argument index="2" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="qmlRegisterSingletonType(const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@,PyObject*@callback@)" return-type="int">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistersingletontype_qjsvalue"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst"
+ snippet="qmlregistersingletontype_qjsvalue"/>
+ <modify-argument index="1" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="qmlRegisterSingletonInstance(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@,PyObject*@callback@)" return-type="int">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregistersingletoninstance"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst"
+ snippet="qmlregistersingletoninstance"/>
+ <modify-argument index="2" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="qmlRegisterUncreatableType(PyTypeObject@type_obj@,const char*@uri@,int@version_major@,int@version_minor@,const char*@qml_name@,const char*@message@)" return-type="int">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlregisteruncreatabletype"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst"
+ snippet="qmlregisteruncreatabletype"/>
+ <modify-argument index="2" pyi-type="str"/>
+ </add-function>
+
+ <add-function signature="QmlElement(PyObject*)" return-type="PyObject*">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlelement"/>
+ </add-function>
+
+ <add-function signature="QmlAnonymous(PyObject*)" return-type="PyObject*">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlanonymous"/>
+ </add-function>
+
+ <add-function signature="QmlSingleton(PyObject*)" return-type="PyObject*">
+ <inject-code class="target" file="../glue/qtqml.cpp" snippet="qmlsingleton"/>
+ </add-function>
+
+ <function signature="qjsEngine(const QObject*)">
+ <modify-function>
+ <modify-argument index="return" pyi-type="Optional[PySide6.QtQml.QJSEngine]"/>
+ </modify-function>
+ </function>
+ <function signature="qmlClearTypeRegistrations()" doc-file="qqmlengine"/>
+ <function signature="qmlContext(const QObject*)">
+ <modify-function>
+ <modify-argument index="return" pyi-type="Optional[PySide6.QtQml.QQmlContext]"/>
+ </modify-function>
+ </function>
+ <function signature="qmlEngine(const QObject*)">
+ <modify-function>
+ <modify-argument index="return" pyi-type="Optional[PySide6.QtQml.QQmlEngine]"/>
+ </modify-function>
+ </function>
+ <function signature="qmlProtectModule(const char*,int)" doc-file="qqmlengine"/>
+ <function signature="qmlRegisterModule(const char*,int,int)" doc-file="qqmlengine"/>
+ <function signature="qmlTypeId(const char*,int,int,const char*)" doc-file="qqmlengine"/>
+ <function signature="qmlRegisterType(const QUrl &amp;,const char *,int,int,const char *)"
+ doc-file="qqmlengine"/>
+ <function signature="qmlRegisterSingletonType(const QUrl &amp;,const char *,int,int,const char *)"
+ doc-file="qqmlengine"/>
+ <function signature="qmlRegisterUncreatableMetaObject(const QMetaObject&amp;,const char*,int,int, const char*,const QString&amp;)"
+ doc-file="qqmlengine"/>
+
+ <enum-type identified-by-value="QML_HAS_ATTACHED_PROPERTIES">
+ <extra-includes>
+ <include file-name="QtQml" location="global"/>
+ </extra-includes>
+ </enum-type>
+
+ <inject-code class="target" position="end" file="../glue/qtqml.cpp" snippet="init"/>
+
+ <object-type name="QJSEngine">
+ <enum-type name="Extension" flags="Extensions"/>
+ <enum-type name="ObjectOwnership"/>
+ <add-function signature="toScriptValue(const QVariant&amp;)" return-type="QJSValue">
+ <inject-code class="target" position="end" file="../glue/qtqml.cpp" snippet="qjsengine-toscriptvalue"/>
+ </add-function>
+ </object-type>
+ <object-type name="QJSManagedValue">
+ <enum-type name="Type"/>
+ </object-type>
+ <value-type name="QJSPrimitiveValue">
+ <enum-type name="Type"/>
+ </value-type>
+ <value-type name="QJSValue">
+ <enum-type name="ErrorType"/>
+ <enum-type name="SpecialValue"/>
+ <enum-type name="ObjectConversionBehavior" since="6.1"/>
+ </value-type>
+ <object-type name="QJSValueIterator"/>
+ <object-type name="QQmlAbstractUrlInterceptor">
+ <enum-type name="DataType"/>
+ </object-type>
+ <object-type name="QQmlApplicationEngine">
+ <!-- PYSIDE-1681: QQmlApplicationEngine constructor, load() and similar need
+ allow-thread in case there is a message handler installed
+ (qInstallMessageHandler) -->
+ <modify-function signature="^QQmlApplicationEngine\(.*\)$" allow-thread="yes"/>
+ <!-- PYSIDE-1736 In the presence of load(QString)/load(QUrl), check for Path/string
+ first to avoid an implicit conversion from string to QUrl. -->
+ <modify-function signature="load(const QString &amp;)" allow-thread="yes" overload-number="1">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="load(const QUrl &amp;)" allow-thread="yes" overload-number="2"/>
+ <modify-function signature="loadFromModule(QAnyStringView,QAnyStringView)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QQmlComponent">
+ <enum-type name="CompilationMode"/>
+ <enum-type name="Status"/>
+ <modify-function signature="QQmlComponent(QObject*)" allow-thread="yes"/>
+ <modify-function signature="QQmlComponent(QQmlEngine*,QObject*)" allow-thread="yes"/>
+ <modify-function signature="QQmlComponent(QQmlEngine*,QString,QObject*)" allow-thread="yes"/>
+ <modify-function signature="QQmlComponent(QQmlEngine*,QString,QQmlComponent::CompilationMode,QObject*)" allow-thread="yes"/>
+ <modify-function signature="QQmlComponent(QQmlEngine*,QUrl,QObject*)" allow-thread="yes"/>
+ <modify-function signature="QQmlComponent(QQmlEngine*,QUrl,QQmlComponent::CompilationMode,QObject*)" allow-thread="yes"/>
+ <modify-function signature="loadFromModule(QAnyStringView,QAnyStringView,QQmlComponent::CompilationMode)" allow-thread="yes"/>
+ <modify-function signature="loadUrl(QUrl)" allow-thread="yes"/>
+ <modify-function signature="loadUrl(QUrl,QQmlComponent::CompilationMode)" allow-thread="yes"/>
+ <modify-function signature="setData(QByteArray,QUrl)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QQmlContext">
+ <value-type name="PropertyPair"/>
+ </object-type>
+ <value-type name="QQmlError">
+ <add-function signature="__repr__" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtqml.cpp" snippet="qmlerrror-repr"/>
+ </add-function>
+ </value-type>
+ <object-type name="QQmlDebuggingEnabler">
+ <enum-type name="StartMode"/>
+ </object-type>
+
+ <object-type name="QQmlEngine">
+ <modify-function signature="addImageProvider(const QString&amp;,QQmlImageProviderBase*)">
+ <modify-argument index="2">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addImportPath(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <modify-function signature="addPluginPath(const QString &amp;)">
+ <modify-argument index="1"><replace-type modified-type="PyPathLike"/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qfile-path-1"/>
+ </modify-function>
+ <add-function signature="singletonInstance(int@qmlTypeId@)"
+ return-type="QObject*">
+ <!-- Suppress return value heuristics -->
+ <modify-argument index="return"
+ pyi-type="Union[PySide6.QtCore.QObject, PySide6.QtQml.QJSValue, None]">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ <inject-code class="target" file="../glue/qtqml.cpp"
+ snippet="qqmlengine-singletoninstance-qmltypeid"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst"
+ snippet="qqmlengine-singletoninstance-qmltypeid"/>
+ </add-function>
+ <add-function signature="singletonInstance(QString@uri@,QString@typeName@)"
+ return-type="QObject*">
+ <!-- Suppress return value heuristics -->
+ <modify-argument index="return"
+ pyi-type="Union[PySide6.QtCore.QObject, PySide6.QtQml.QJSValue, None]">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ <inject-code class="target" file="../glue/qtqml.cpp"
+ snippet="qqmlengine-singletoninstance-typename"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtqml_functions.rst"
+ snippet="qqmlengine-singletoninstance-typename"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QQmlExpression">
+ <modify-function signature="evaluate(bool*)" allow-thread="yes">
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[Any, bool]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+ </object-type>
+ <interface-type name="QQmlTypesExtensionInterface"/>
+ <interface-type name="QQmlExtensionInterface"/>
+ <object-type name="QQmlExtensionPlugin"/>
+ <!-- Possible qRegisterMetaType issues ? -->
+ <object-type name="QQmlFile">
+ <enum-type name="Status"/>
+ </object-type>
+ <object-type name="QQmlFileSelector"/>
+ <object-type name="QQmlImageProviderBase">
+ <enum-type name="Flag" flags="Flags"/>
+ <enum-type name="ImageType"/>
+ </object-type>
+ <object-type name="QQmlIncubator">
+ <enum-type name="IncubationMode"/>
+ <enum-type name="Status"/>
+ </object-type>
+ <object-type name="QQmlIncubationController">
+ <extra-includes>
+ <include file-name="pysideqmlvolatilebool.h" location="local"/>
+ </extra-includes>
+ <modify-function signature="incubateWhile(std::atomic&lt;bool&gt;*,int)" allow-thread="yes">
+ <modify-argument index="1">
+ The replace type is needed to use the VolatileBool_Check macro instead of
+ a template conversion function with "volatile bool" as argument.
+ <replace-type modified-type="VolatileBool"/>
+ <conversion-rule class="native">
+ auto volatileBool = reinterpret_cast&lt;QtQml_VolatileBoolObject *&gt;(%PYARG_1);
+ std::atomic&lt;bool&gt; *%out = volatileBool->flag;
+ </conversion-rule>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <!-- TODO: QQmlListProperty is a template class, and thus should probably be treated like a
+ container-type tag, which implies custom code for conversion. Not sure there's a use case to
+ allow instantiating or deriving from the class though, given that a separate custom ListProperty
+ type is provided by the module. Plus meta type registration would have to be taken into account
+ for the QML parts.
+ <value-type name="QQmlListProperty"/>-->
+ <value-type name="QQmlListReference"/>
+ <object-type name="QQmlParserStatus"/>
+ <object-type name="QPyQmlParserStatus"/>
+ <value-type name="QQmlProperty">
+ <enum-type name="PropertyTypeCategory"/>
+ <enum-type name="Type"/>
+ </value-type>
+ <object-type name="QQmlPropertyMap"/>
+ <object-type name="QQmlPropertyValueSource"/>
+ <object-type name="QPyQmlPropertyValueSource"/>
+ <value-type name="QQmlScriptString">
+ <modify-function signature="numberLiteral(bool*)const" allow-thread="yes">
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[float, bool]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="booleanLiteral(bool*)const" allow-thread="yes">
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, bool]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_bool*"/>
+ </inject-code>
+ </modify-function>
+ </value-type>
+ <object-type name="QQmlNetworkAccessManagerFactory">
+ <modify-function signature="create(QObject*)">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <!-- Suppress anonymous enum warning -->
+ <suppress-warning text="Anonymous enum (QmlCurrentSingletonTypeRegistrationVersion) does not have a type entry"/>
+ <suppress-warning text="Enum 'QQmlModuleImportSpecialVersions' does not have a type entry"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtQuick/CMakeLists.txt b/sources/pyside6/PySide6/QtQuick/CMakeLists.txt
new file mode 100644
index 000000000..775230242
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuick/CMakeLists.txt
@@ -0,0 +1,119 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtQuick)
+
+set(QtQuick_DROPPED_ENTRIES)
+
+set(QtQuick_registerType "${QtQuick_SOURCE_DIR}/pysidequickregistertype.cpp")
+
+# Exclude sources that have clashing static helper functions named "renderstate_..."
+set(QtQuick_SRC_UNITY_EXCLUDED_SRC
+ ${QtQuick_GEN_DIR}/qsgrendernode_renderstate_wrapper.cpp
+ ${QtQuick_GEN_DIR}/qsgmaterialshader_renderstate_wrapper.cpp
+)
+
+set_property(SOURCE ${QtQuick_SRC_UNITY_EXCLUDED_SRC}
+ PROPERTY SKIP_UNITY_BUILD_INCLUSION ON)
+
+set(QtQuick_SRC
+${QtQuick_SRC_UNITY_EXCLUDED_SRC}
+${QtQuick_GEN_DIR}/qquickasyncimageprovider_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickgraphicsconfiguration_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickgraphicsdevice_wrapper.cpp
+${QtQuick_GEN_DIR}/qquicktexturefactory_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickimageprovider_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickimageresponse_wrapper.cpp
+${QtQuick_GEN_DIR}/qquicktransform_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickitem_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickitem_updatepaintnodedata_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickitemgrabresult_wrapper.cpp
+${QtQuick_GEN_DIR}/qsharedpointer_qquickitemgrabresult_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickpainteditem_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickrendercontrol_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickrendertarget_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickrhiitemrenderer_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickrhiitem_wrapper.cpp
+${QtQuick_GEN_DIR}/qquicktextdocument_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickview_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickwindow_wrapper.cpp
+${QtQuick_GEN_DIR}/qquickwindow_graphicsstateinfo_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgbasicgeometrynode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgclipnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgdynamictexture_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgflatcolormaterial_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_attribute_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_attributeset_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_coloredpoint2d_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_point2d_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_texturedpoint2d_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometry_wrapper.cpp
+${QtQuick_GEN_DIR}/qsggeometrynode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgimagenode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgmaterial_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgmaterialshader_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgmaterialshader_graphicspipelinestate_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgmaterialtype_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgninepatchnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgnodevisitor_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgopacitynode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgopaquetexturematerial_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgsimplematerial_wrapper.cpp
+#${QtQuick_GEN_DIR}/qsgsimplematerialshader_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgrectanglenode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgrendernode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgrootnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgsimplerectnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgsimpletexturenode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgrendererinterface_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgtextnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgtexture_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgtexturematerial_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgtextureprovider_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgtransformnode_wrapper.cpp
+${QtQuick_GEN_DIR}/qsgvertexcolormaterial_wrapper.cpp
+# module is always needed
+${QtQuick_GEN_DIR}/qtquick_module_wrapper.cpp
+)
+
+set(QtQuick_include_dirs ${QtQuick_SOURCE_DIR}
+ ${QtQml_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Core_PRIVATE_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Quick_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtQml_GEN_DIR}
+ ${QtQuick_GEN_DIR})
+
+set(QtQuick_libraries pyside6 pyside6qml
+ ${Qt${QT_MAJOR_VERSION}Quick_LIBRARIES})
+
+set(QtQuick_deps QtGui QtNetwork QtQml)
+
+check_qt_opengl("Quick" QtQuick_include_dirs QtQuick_deps
+ QtQuick_DROPPED_ENTRIES)
+
+if (Qt${QT_MAJOR_VERSION}OpenGL_FOUND)
+ list(APPEND QtQuick_SRC
+ ${QtQuick_GEN_DIR}/qquickframebufferobject_wrapper.cpp
+ ${QtQuick_GEN_DIR}/qquickframebufferobject_renderer_wrapper.cpp)
+else()
+ list(APPEND QtQuick_DROPPED_ENTRIES QQuickFramebufferObject)
+endif()
+
+create_pyside_module(NAME QtQuick
+ INCLUDE_DIRS QtQuick_include_dirs
+ LIBRARIES QtQuick_libraries
+ DEPS QtQuick_deps
+ TYPESYSTEM_PATH QtQuick_SOURCE_DIR
+ SOURCES QtQuick_SRC
+ STATIC_SOURCES QtQuick_registerType
+ DROPPED_ENTRIES QtQuick_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp b/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp
new file mode 100644
index 000000000..f7749b4e7
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.cpp
@@ -0,0 +1,76 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "pysidequickregistertype.h"
+
+#include <pyside.h>
+#include <pysideqmlregistertype.h>
+#include <pyside_p.h>
+#include <shiboken.h>
+
+#include <QtQuick/QQuickPaintedItem>
+
+#if QT_CONFIG(opengl) || QT_CONFIG(opengles2) || QT_CONFIG(opengles3)
+# include <QtQuick/QQuickFramebufferObject>
+#endif
+
+bool pyTypeObjectInheritsFromClass(PyTypeObject *pyObjType, const char *classPtrName)
+{
+ PyTypeObject *classPyType = Shiboken::Conversions::getPythonTypeObject(classPtrName);
+ bool isDerived = PySequence_Contains(pyObjType->tp_mro,
+ reinterpret_cast<PyObject *>(classPyType));
+ return isDerived;
+}
+
+template <class WrappedClass>
+bool registerTypeIfInheritsFromClass(const char *classPtrName,
+ PyTypeObject *typeToRegister,
+ QQmlPrivate::RegisterTypeAndRevisions *type)
+{
+ if (!pyTypeObjectInheritsFromClass(typeToRegister, classPtrName))
+ return false;
+ type->parserStatusCast =
+ QQmlPrivate::StaticCastSelector<WrappedClass, QQmlParserStatus>::cast();
+ type->valueSourceCast =
+ QQmlPrivate::StaticCastSelector<WrappedClass, QQmlPropertyValueSource>::cast();
+ type->valueInterceptorCast =
+ QQmlPrivate::StaticCastSelector<WrappedClass, QQmlPropertyValueInterceptor>::cast();
+ return true;
+}
+
+bool quickRegisterType(PyObject *pyObj, QQmlPrivate::RegisterTypeAndRevisions *type)
+{
+ using namespace Shiboken;
+
+ PyTypeObject *pyObjType = reinterpret_cast<PyTypeObject *>(pyObj);
+ PyTypeObject *qQuickItemPyType =
+ Shiboken::Conversions::getPythonTypeObject("QQuickItem*");
+ bool isQuickItem = PySequence_Contains(pyObjType->tp_mro,
+ reinterpret_cast<PyObject *>(qQuickItemPyType));
+
+ // Register only classes that inherit QQuickItem or its children.
+ if (!isQuickItem)
+ return false;
+
+ return registerTypeIfInheritsFromClass<QQuickPaintedItem>("QQuickPaintedItem*",
+ pyObjType, type)
+#if QT_CONFIG(opengl) || QT_CONFIG(opengles2) || QT_CONFIG(opengles3)
+ || registerTypeIfInheritsFromClass<QQuickFramebufferObject>("QQuickFramebufferObject*",
+ pyObjType, type)
+#endif
+ || registerTypeIfInheritsFromClass<QQuickItem>("QQuickItem*",
+ pyObjType, type);
+}
+
+void PySide::initQuickSupport(PyObject *module)
+{
+ Q_UNUSED(module);
+ // We need to manually register a pointer version of these types in order for them to be used as property types.
+ qRegisterMetaType<QQuickPaintedItem*>("QQuickPaintedItem*");
+#if QT_CONFIG(opengl) || QT_CONFIG(opengles2) || QT_CONFIG(opengles3)
+ qRegisterMetaType<QQuickFramebufferObject*>("QQuickFramebufferObject*");
+#endif
+ qRegisterMetaType<QQuickItem*>("QQuickItem*");
+
+ Qml::setQuickRegisterItemFunction(quickRegisterType);
+}
diff --git a/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h b/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h
new file mode 100644
index 000000000..89e0ced67
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuick/pysidequickregistertype.h
@@ -0,0 +1,14 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef PYSIDE_QUICK_REGISTER_TYPE_H
+#define PYSIDE_QUICK_REGISTER_TYPE_H
+
+#include <sbkpython.h>
+
+namespace PySide
+{
+void initQuickSupport(PyObject *module);
+}
+
+#endif // PYSIDE_QUICK_REGISTER_TYPE_H
diff --git a/sources/pyside6/PySide6/QtQuick/typesystem_quick.xml b/sources/pyside6/PySide6/QtQuick/typesystem_quick.xml
new file mode 100644
index 000000000..61aed6005
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuick/typesystem_quick.xml
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtQuick"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <!-- QQuickFramebufferObject::Renderer needs QOpenGLFramebufferObject -->
+ <?if !no_QtOpenGL?>
+ <load-typesystem name="QtOpenGL/typesystem_opengl.xml" generate="no"/>
+ <?endif?>
+ <load-typesystem name="QtQml/typesystem_qml.xml" generate="no"/>
+
+ <smart-pointer-type name="QSharedPointer" type="shared" getter="data"
+ reset-method="reset"/>
+
+ <extra-includes>
+ <include file-name="pysidequickregistertype.h" location="local"/>
+ </extra-includes>
+
+ <inject-code class="target" position="end" file="../glue/qtquick.cpp" snippet="qtquick"/>
+
+ <object-type name="QQuickAsyncImageProvider">
+ <modify-function signature="requestImageResponse(const QString&amp;,const QSize&amp;)">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QQuickFramebufferObject">
+ <object-type name="Renderer"/>
+ <modify-function signature="createRenderer()const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <value-type name="QQuickGraphicsConfiguration"/>
+ <value-type name="QQuickGraphicsDevice">
+ <!-- PYSIDE-1726, after qtbase/696d94b132b2f352b5e6b889ad91c2437417fae8,
+ the functions are defined with dummy types when Vulkan is not present. -->
+ <modify-function signature="^fromPhysicalDevice\(.*$" remove="all"/>
+ <modify-function signature="^fromDeviceObjects\(.*$" remove="all"/>
+ </value-type>
+
+ <object-type name="QQuickTextureFactory"/>
+ <object-type name="QQuickImageProvider"/>
+ <object-type name="QQuickImageResponse"/>
+
+ <object-type name="QQuickTransform"/>
+ <object-type name="QQuickItem" delete-in-main-thread="true" polymorphic-base="true">
+ <value-type name="UpdatePaintNodeData"/>
+ <enum-type name="Flag" flags="Flags"/>
+ <enum-type name="ItemChange"/>
+ <enum-type name="TransformOrigin"/>
+ <modify-function signature="itemTransform(QQuickItem*,bool*)const" allow-thread="yes">
+ <modify-argument index="2">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, PySide6.QtGui.QTransform]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="updatePaintNode(QSGNode*,QQuickItem::UpdatePaintNodeData*)">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <!-- TODO: Find a way to wrap `union ItemChangeData {}` -->
+ </object-type>
+
+ <object-type name="QQuickRhiItemRenderer" since="6.7"/>
+ <object-type name="QQuickRhiItem" since="6.7">
+ <enum-type name="TextureFormat"/>
+ </object-type>
+
+ <object-type name="QQuickItemGrabResult"/>
+
+ <object-type name="QQuickPaintedItem">
+ <enum-type name="RenderTarget"/>
+ <enum-type name="PerformanceHint" flags="PerformanceHints"/>
+ </object-type>
+
+ <object-type name="QQuickRenderControl"/>
+ <value-type name="QQuickRenderTarget">
+ <!-- PYSIDE-1726, after qtbase/696d94b132b2f352b5e6b889ad91c2437417fae8,
+ the function is defined with dummy types when Vulkan is not present. -->
+ <modify-function signature="^fromVulkanImage\(.*$" remove="all"/>
+ </value-type>
+
+ <object-type name="QQuickTextDocument">
+ <enum-type name="Status" since="6.7"/>
+ </object-type>
+
+ <object-type name="QQuickView">
+ <enum-type name="ResizeMode"/>
+ <enum-type name="Status"/>
+ </object-type>
+
+ <object-type name="QQuickWindow">
+ <enum-type name="CreateTextureOption" flags="CreateTextureOptions"/>
+ <enum-type name="RenderStage"/>
+ <enum-type name="SceneGraphError"/>
+ <enum-type name="TextRenderType"/>
+ <value-type name="GraphicsStateInfo"/>
+ </object-type>
+
+ <object-type name="QSGBasicGeometryNode">
+ <modify-function signature="setGeometry(QSGGeometry*)">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QSGClipNode"/>
+ <object-type name="QSGDynamicTexture"/>
+ <object-type name="QSGFlatColorMaterial"/>
+ <object-type name="QSGGeometry">
+ <extra-includes>
+ <include file-name="algorithm" location="global"/>
+ </extra-includes>
+ <enum-type name="DataPattern"/>
+ <enum-type name="AttributeType"/>
+ <enum-type name="DrawingMode" python-type="IntEnum"/>
+ <enum-type name="Type"/>
+ <value-type name="Attribute"/>
+ <value-type name="AttributeSet"/>
+ <value-type name="ColoredPoint2D"/>
+ <value-type name="Point2D"/>
+ <value-type name="TexturedPoint2D"/>
+ <modify-function signature="vertexDataAsPoint2D()">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <inject-code class="target" file="../glue/qtquick.cpp" snippet="qsgeometry-vertexdataaspoint2d"/>
+ </modify-function>
+ <add-function signature="setVertexDataAsPoint2D(const QList&lt;QSGGeometry::Point2D&gt;&amp;@points@)">
+ <inject-code class="target" file="../glue/qtquick.cpp" snippet="qsgeometry-setvertexdataaspoint2d"/>
+ <inject-documentation format="target" mode="append">
+ Sets the vertex data from a list of QSGGeometry.Point2D.
+ The list size must match the allocated number of vertexes
+ as returned by QSGGeometry.vertexCount().
+ </inject-documentation>
+ </add-function>
+
+ </object-type>
+ <object-type name="QSGGeometryNode">
+ <modify-function signature="setMaterial(QSGMaterial*)">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setOpaqueMaterial(QSGMaterial*)">
+ <modify-argument index="1">
+ <define-ownership class="target" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QSGImageNode">
+ <enum-type name="TextureCoordinatesTransformFlag" flags="TextureCoordinatesTransformMode"/>
+ </object-type>
+
+ <object-type name="QSGMaterial">
+ <enum-type name="Flag" flags="Flags"/>
+ </object-type>
+ <object-type name="QSGMaterialShader">
+ <enum-type name="Stage"/>
+ <enum-type name="Flag" flags="Flags"/>
+ <value-type name="RenderState">
+ <enum-type name="DirtyState" flags="DirtyStates"/>
+ </value-type>
+ <value-type name="GraphicsPipelineState">
+ <enum-type name="BlendFactor"/>
+ <enum-type name="ColorMaskComponent" flags="ColorMask"/>
+ <enum-type name="CullMode"/>
+ <enum-type name="PolygonMode"/>
+ </value-type>
+ <modify-function signature="updateSampledImage(QSGMaterialShader::RenderState&amp;,int,QSGTexture**,QSGMaterial*,QSGMaterial*)" remove="all"/>
+ <!-- Private QRhi class -->
+ <modify-function signature="setShader(QSGMaterialShader::Stage,QShader)" remove="all"/>
+ </object-type>
+ <object-type name="QSGMaterialType"/>
+ <object-type name="QSGNinePatchNode"/>
+ <object-type name="QSGNode">
+ <enum-type name="DirtyStateBit" flags="DirtyState"/>
+ <enum-type name="Flag" flags="Flags"/>
+ <enum-type name="NodeType"/>
+ </object-type>
+ <object-type name="QSGNodeVisitor"/>
+
+ <object-type name="QSGOpacityNode"/>
+ <object-type name="QSGOpaqueTextureMaterial"/>
+ <object-type name="QSGSimpleRectNode"/>
+ <object-type name="QSGSimpleTextureNode">
+ <enum-type name="TextureCoordinatesTransformFlag" flags="TextureCoordinatesTransformMode"/>
+ </object-type>
+ <object-type name="QSGTextNode" since="6.7">
+ <enum-type name="TextStyle"/>
+ <enum-type name="RenderType"/>
+ </object-type>
+ <object-type name="QSGRectangleNode"/>
+ <object-type name="QSGRendererInterface">
+ <enum-type name="GraphicsApi"/>
+ <enum-type name="Resource"/>
+ <enum-type name="ShaderType"/>
+ <enum-type name="ShaderCompilationType" flags="ShaderCompilationTypes"/>
+ <enum-type name="ShaderSourceType" flags="ShaderSourceTypes"/>
+ <enum-type name="RenderMode"/>
+ </object-type>
+ <object-type name="QSGRenderNode">
+ <enum-type name="StateFlag" flags="StateFlags"/>
+ <enum-type name="RenderingFlag" flags="RenderingFlags"/>
+ <object-type name="RenderState"/>
+ </object-type>
+ <object-type name="QSGRootNode"/>
+ <object-type name="QSGTexture">
+ <enum-type name="AnisotropyLevel"/>
+ <enum-type name="Filtering"/>
+ <enum-type name="WrapMode"/>
+ </object-type>
+ <object-type name="QSGTextureMaterial"/>
+ <object-type name="QSGTextureProvider"/>
+ <object-type name="QSGTransformNode"/>
+ <object-type name="QSGVertexColorMaterial"/>
+
+ <!-- These currently don't work because they are template classes, and the generator chokes on
+ them. Making these work properly would require fixing the parsing of template classes,
+ allowing creation of State structures and passing them to the template classes, as well as
+ implementing some mechanism of registration of the custom template classes, kind of how
+ it's done for qt quick items.
+ <object-type name="QSGSimpleMaterial"/>
+ <object-type name="QSGSimpleMaterialShader"/>
+ -->
+
+ <suppress-warning text="^signature.*fromVulkanImage.*not found.*$"/>
+ <suppress-warning text="^signature.*fromPhysicalDevice.*not found.*$"/>
+ <suppress-warning text="^signature.*fromDeviceObjects.*not found.*$"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtQuick3D/CMakeLists.txt b/sources/pyside6/PySide6/QtQuick3D/CMakeLists.txt
new file mode 100644
index 000000000..37f8ebfb1
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuick3D/CMakeLists.txt
@@ -0,0 +1,54 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtQuick3D)
+
+set (QtQuick3D_DROPPED_ENTRIES)
+
+set(QtQuick3D_SRC
+${QtQuick3D_GEN_DIR}/qquick3d_wrapper.cpp
+${QtQuick3D_GEN_DIR}/qquick3dobject_wrapper.cpp
+${QtQuick3D_GEN_DIR}/qquick3dgeometry_wrapper.cpp
+${QtQuick3D_GEN_DIR}/qquick3dgeometry_attribute_wrapper.cpp
+${QtQuick3D_GEN_DIR}/qquick3dgeometry_targetattribute_wrapper.cpp
+${QtQuick3D_GEN_DIR}/qquick3dinstancing_wrapper.cpp
+${QtQuick3D_GEN_DIR}/qquick3dinstancing_instancetableentry_wrapper.cpp
+${QtQuick3D_GEN_DIR}/qquick3drenderextension_wrapper.cpp
+${QtQuick3D_GEN_DIR}/qquick3dtexturedata_wrapper.cpp
+# module is always needed
+${QtQuick3D_GEN_DIR}/qtquick3d_module_wrapper.cpp
+)
+
+set(QtQuick3D_include_dirs ${QtQuick3D_SOURCE_DIR}
+ ${QtQml_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Core_PRIVATE_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_PRIVATE_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Quick_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Quick3D_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtQml_GEN_DIR}
+ ${QtQuick_GEN_DIR}
+ ${QtQuick3D_GEN_DIR})
+
+set(QtQuick3D_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Quick3D_LIBRARIES})
+
+set(QtQuick3D_deps QtGui QtNetwork QtQml QtQuick)
+
+check_qt_opengl("Quick3D" QtQuick3D_include_dirs QtQuick3D_deps
+ QtQuick3D_DROPPED_ENTRIES)
+
+create_pyside_module(NAME QtQuick3D
+ INCLUDE_DIRS QtQuick3D_include_dirs
+ LIBRARIES QtQuick3D_libraries
+ DEPS QtQuick3D_deps
+ TYPESYSTEM_PATH QtQuick3D_SOURCE_DIR
+ SOURCES QtQuick3D_SRC
+ DROPPED_ENTRIES QtQuick3D_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml b/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml
new file mode 100644
index 000000000..fe8f4e700
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtQuick3D"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtQuick/typesystem_quick.xml" generate="no"/>
+
+ <object-type name="QQuick3D"/>
+ <object-type name="QQuick3DObject">
+ <enum-type name="ItemChange"/>
+ <modify-function signature="QQuick3DObject(QQuick3DObject*)" remove="all"/>
+ </object-type>
+ <object-type name="QQuick3DGeometry">
+ <value-type name="Attribute">
+ <enum-type name="Semantic"/>
+ <enum-type name="ComponentType"/>
+ </value-type>
+ <value-type name="TargetAttribute" since="6.6"/>
+ <enum-type name="PrimitiveType"/>
+ </object-type>
+ <object-type name="QQuick3DInstancing">
+ <value-type name="InstanceTableEntry"/>
+ </object-type>
+ <object-type name="QQuick3DTextureData">
+ <enum-type name="Format"/>
+ </object-type>
+ <object-type name="QQuick3DRenderExtension" since="6.7"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtQuickControls2/CMakeLists.txt b/sources/pyside6/PySide6/QtQuickControls2/CMakeLists.txt
new file mode 100644
index 000000000..9951d2e1e
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuickControls2/CMakeLists.txt
@@ -0,0 +1,46 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtQuickControls2)
+
+set (QtQuickControls2_DROPPED_ENTRIES)
+
+set(QtQuickControls2_SRC
+${QtQuickControls2_GEN_DIR}/qquickstyle_wrapper.cpp
+${QtQuickControls2_GEN_DIR}/qquickattachedpropertypropagator_wrapper.cpp
+# module is always needed
+${QtQuickControls2_GEN_DIR}/qtquickcontrols2_module_wrapper.cpp
+)
+
+
+set(QtQuickControls2_include_dirs ${QtQuickControls2_SOURCE_DIR}
+ ${QtQml_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Quick_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}QuickControls2_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtQml_GEN_DIR}
+ ${QtQuick_GEN_DIR}
+ ${QtQuickControls2_GEN_DIR})
+
+set(QtQuickControls2_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}QuickControls2_LIBRARIES})
+
+set(QtQuickControls2_deps QtGui QtNetwork QtQml QtQuick)
+
+check_qt_opengl("QuickControls2" QtQuickControls2_include_dirs QtQuickControls2_deps
+ QtQuickControls2_DROPPED_ENTRIES)
+
+create_pyside_module(NAME QtQuickControls2
+ INCLUDE_DIRS QtQuickControls2_include_dirs
+ LIBRARIES QtQuickControls2_libraries
+ DEPS QtQuickControls2_deps
+ TYPESYSTEM_PATH QtQuickControls2_SOURCE_DIR
+ SOURCES QtQuickControls2_SRC
+ DROPPED_ENTRIES QtQuickControls2_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtQuickControls2/typesystem_quickcontrols2.xml b/sources/pyside6/PySide6/QtQuickControls2/typesystem_quickcontrols2.xml
new file mode 100644
index 000000000..72fc05226
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuickControls2/typesystem_quickcontrols2.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtQuickControls2"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtQuick/typesystem_quick.xml" generate="no"/>
+
+ <object-type name="QQuickStyle"/>
+ <object-type name="QQuickAttachedPropertyPropagator"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtQuickTest/CMakeLists.txt b/sources/pyside6/PySide6/QtQuickTest/CMakeLists.txt
new file mode 100644
index 000000000..8e3fb4d57
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuickTest/CMakeLists.txt
@@ -0,0 +1,44 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtQuickTest)
+
+set (QtQuickTest_DROPPED_ENTRIES)
+
+set(QtQuickTest_SRC
+# module is always needed
+${QtQuickTest_GEN_DIR}/qtquicktest_module_wrapper.cpp
+)
+
+set(QtQuickTest_include_dirs ${QtQuickTest_SOURCE_DIR}
+ ${QtQml_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}OpenGL_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Quick_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtOpenGL_GEN_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtQml_GEN_DIR}
+ ${QtQuick_GEN_DIR}
+ ${QtQuickTest_GEN_DIR})
+
+set(QtQuickTest_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}QuickTest_LIBRARIES})
+
+set(QtQuickTest_deps QtGui QtNetwork QtQml QtQuick)
+
+check_qt_opengl("QuickTest" QtQuickTest_include_dirs QtQuickTest_deps
+ QtQuickTest_DROPPED_ENTRIES)
+
+create_pyside_module(NAME QtQuickTest
+ INCLUDE_DIRS QtQuickTest_include_dirs
+ LIBRARIES QtQuickTest_libraries
+ DEPS QtQuickTest_deps
+ TYPESYSTEM_PATH QtQuickTest_SOURCE_DIR
+ SOURCES QtQuickTest_SRC
+ DROPPED_ENTRIES QtQuickTest_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtQuickTest/typesystem_quicktest.xml b/sources/pyside6/PySide6/QtQuickTest/typesystem_quicktest.xml
new file mode 100644
index 000000000..b6ef754e7
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuickTest/typesystem_quicktest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtQuickTest"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+
+ <extra-includes>
+ <include file-name="QtQuickTest/quicktest.h" location="global"/>
+ <include file-name="QtCore/QDir" location="global"/>
+ <include file-name="pysideqobject.h" location="global"/>
+ <include file-name="vector" location="global"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning"
+ file="../glue/qtquicktest.cpp" snippet="call-quick-test-main"/>
+
+ <add-function signature="QUICK_TEST_MAIN(QString@name@,QStringList@argv@={},QString@dir@={})"
+ return-type="int">
+ <inject-code file="../glue/qtquicktest.cpp" snippet="quick-test-main"/>
+ <inject-documentation format="target" mode="append"
+ file="../doc/qtquicktest.rst"
+ snippet="quick_test_main_documentation"/>
+ </add-function>
+ <add-function signature="QUICK_TEST_MAIN_WITH_SETUP(QString@name@,PyTypeObject*@setup@,QStringList@argv@={},QString@dir@={})"
+ return-type="int">
+ <inject-code file="../glue/qtquicktest.cpp" snippet="quick-test-main_with_setup"/>
+ <inject-documentation format="target" mode="append"
+ file="../doc/qtquicktest.rst"
+ snippet="quick_test_main_with_setup_documentation"/>
+ </add-function>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtQuickWidgets/CMakeLists.txt b/sources/pyside6/PySide6/QtQuickWidgets/CMakeLists.txt
new file mode 100644
index 000000000..883010bee
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuickWidgets/CMakeLists.txt
@@ -0,0 +1,48 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtQuickWidgets)
+
+set (QtQuickWidgets_DROPPED_ENTRIES)
+
+set(QtQuickWidgets_SRC
+${QtQuickWidgets_GEN_DIR}/qquickwidget_wrapper.cpp
+# module is always needed
+${QtQuickWidgets_GEN_DIR}/qtquickwidgets_module_wrapper.cpp
+)
+
+set(QtQuickWidgets_include_dirs ${QtQuickWidgets_SOURCE_DIR}
+ ${QtQml_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}OpenGL_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Quick_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}QuickWidgets_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtOpenGL_GEN_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtQuick_GEN_DIR}
+ ${QtQml_GEN_DIR}
+ ${QtQuickWidgets_GEN_DIR})
+
+set(QtQuickWidgets_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}QuickWidgets_LIBRARIES})
+
+set(QtQuickWidgets_deps QtGui QtQml QtQuick QtWidgets QtNetwork)
+
+check_qt_opengl("QuickWidgets" QtQuickWidgets_include_dirs QtQuickWidgets_deps
+ QtQuickWidgets_DROPPED_ENTRIES)
+
+create_pyside_module(NAME QtQuickWidgets
+ INCLUDE_DIRS QtQuickWidgets_include_dirs
+ LIBRARIES QtQuickWidgets_libraries
+ DEPS QtQuickWidgets_deps
+ TYPESYSTEM_PATH QtQuickWidgets_SOURCE_DIR
+ SOURCES QtQuickWidgets_SRC
+ DROPPED_ENTRIES QtQuickWidgets_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtQuickWidgets/typesystem_quickwidgets.xml b/sources/pyside6/PySide6/QtQuickWidgets/typesystem_quickwidgets.xml
new file mode 100644
index 000000000..4f4484cb0
--- /dev/null
+++ b/sources/pyside6/PySide6/QtQuickWidgets/typesystem_quickwidgets.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtQuickWidgets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtQuick/typesystem_quick.xml" generate="no"/>
+ <load-typesystem name="QtQml/typesystem_qml.xml" generate="no"/>
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+
+ <object-type name="QQuickWidget">
+ <enum-type name="ResizeMode"/>
+ <enum-type name="Status"/>
+ </object-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt b/sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt
new file mode 100644
index 000000000..07835b2f6
--- /dev/null
+++ b/sources/pyside6/PySide6/QtRemoteObjects/CMakeLists.txt
@@ -0,0 +1,53 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtRemoteObjects)
+
+set(QtRemoteObjects_SRC
+${QtRemoteObjects_GEN_DIR}/qabstractitemmodelreplica_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qconnectionabstractserver_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectabstractpersistedstore_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectdynamicreplica_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjecthost_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjecthostbase_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectnode_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectpendingcall_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectpendingcallwatcher_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectregistry_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectregistryhost_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectreplica_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qtremoteobjects_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectsettingsstore_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qremoteobjectsourcelocationinfo_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qtroclientfactory_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qtroclientiodevice_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qtroiodevicebase_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qtroserverfactory_wrapper.cpp
+${QtRemoteObjects_GEN_DIR}/qtroserveriodevice_wrapper.cpp
+
+# module is always needed
+${QtRemoteObjects_GEN_DIR}/qtremoteobjects_module_wrapper.cpp
+)
+
+set(QtRemoteObjects_include_dirs ${QtRemoteObjects_SOURCE_DIR}
+ ${QtRemoteObjects_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}RemoteObjects_INCLUDE_DIRS}
+ ${SHIBOKEN_INCLUDE_DIR}
+ ${libpyside_SOURCE_DIR}
+ ${SHIBOKEN_PYTHON_INCLUDE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR})
+
+set(QtRemoteObjects_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}RemoteObjects_LIBRARIES})
+
+set(QtRemoteObjects_deps QtCore QtNetwork)
+
+create_pyside_module(NAME QtRemoteObjects
+ INCLUDE_DIRS QtRemoteObjects_include_dirs
+ LIBRARIES QtRemoteObjects_libraries
+ DEPS QtRemoteObjects_deps
+ TYPESYSTEM_PATH QtRemoteObjects_SOURCE_DIR
+ SOURCES QtRemoteObjects_SRC
+ TYPESYSTEM_NAME ${QtRemoteObjects_BINARY_DIR}/typesystem_remoteobjects.xml
+ )
diff --git a/sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml b/sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml
new file mode 100644
index 000000000..86e4d9093
--- /dev/null
+++ b/sources/pyside6/PySide6/QtRemoteObjects/typesystem_remoteobjects.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtRemoteObjects"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="templates/core_common.xml" generate="no"/>
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+
+ <rejection class="QRemoteObjectStringLiterals"/>
+ <rejection class="*" function-name="getTypeNameAndMetaobjectFromClassInfo"/>
+ <rejection class="QtRemoteObjects" field-name="staticMetaObject"/>
+ <namespace-type name="QtRemoteObjects">
+ <enum-type name="InitialAction"/>
+ <enum-type name="QRemoteObjectPacketTypeEnum"/>
+ </namespace-type>
+ <object-type name="QAbstractItemModelReplica"/>
+ <object-type name="QConnectionAbstractServer"/>
+ <object-type name="QRemoteObjectAbstractPersistedStore"/>
+ <object-type name="QRemoteObjectDynamicReplica"/>
+ <object-type name="QRemoteObjectHost"/>
+ <object-type name="QRemoteObjectHostBase">
+ <enum-type name="AllowedSchemas"/>
+ </object-type>
+ <object-type name="QRemoteObjectNode">
+ <enum-type name="ErrorCode"/>
+ </object-type>
+ <object-type name="QRemoteObjectPendingCall">
+ <enum-type name="Error"/>
+ </object-type>
+ <object-type name="QRemoteObjectPendingCallWatcher"/>
+ <object-type name="QRemoteObjectRegistry"/>
+ <object-type name="QRemoteObjectRegistryHost"/>
+ <object-type name="QRemoteObjectReplica">
+ <enum-type name="State"/>
+ <!-- protected: <enum-type name="ConstructorType"/> -->
+ </object-type>
+ <object-type name="QRemoteObjectSettingsStore"/>
+ <value-type name="QRemoteObjectSourceLocationInfo"/>
+ <object-type name="QtROClientFactory"/>
+ <object-type name="QtROClientIoDevice"/>
+ <object-type name="QtROIoDeviceBase"/>
+ <object-type name="QtROServerFactory"/>
+ <object-type name="QtROServerIoDevice"/>
+
+ <suppress-warning text="^.*Typedef used on signal QRemoteObject.*$"/>
+ <suppress-warning text="^QRemoteObjectPendingCallWatcher inherits from a non polymorphic type.*$"/>
+ <suppress-warning text="^Enum 'QRemoteObjectReplica::ConstructorType'.*does not have a type entry.*$"/>
+ <suppress-warning text="Stripping argument #1 of void QRemoteObjectReplica::QRemoteObjectReplica(QRemoteObjectReplica::ConstructorType) due to unmatched type &quot;QRemoteObjectReplica::ConstructorType&quot; with default expression &quot;DefaultConstructor&quot;."/>
+ <suppress-warning text="skipping protected field 'QRemoteObjectReplica::d_impl' with unmatched type 'QSharedPointer'"/>
+ <!-- QtNetwork is pulled in via QtRemoteObjectsDepends. -->
+ <suppress-warning text="^Scoped enum 'Q(Ocsp)|(Dtls).*' does not have a type entry.*$"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtScxml/CMakeLists.txt b/sources/pyside6/PySide6/QtScxml/CMakeLists.txt
new file mode 100644
index 000000000..1b0eab0ce
--- /dev/null
+++ b/sources/pyside6/PySide6/QtScxml/CMakeLists.txt
@@ -0,0 +1,52 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtScxml)
+
+set(QtScxml_OPTIONAL_SRC )
+set(QtScxml_DROPPED_ENTRIES )
+
+set(QtScxml_SRC
+${QtScxml_GEN_DIR}/qscxmlcompiler_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlcompiler_loader_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlcppdatamodel_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmldatamodel_foreachloopbody_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmldatamodel_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlevent_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmldynamicscxmlservicefactory_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlinvokableservice_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlinvokableservicefactory_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlnulldatamodel_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlstaticscxmlservicefactory_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlstatemachine_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmltabledata_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlerror_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlexecutablecontent_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlexecutablecontent_assignmentinfo_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlexecutablecontent_evaluatorinfo_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlexecutablecontent_foreachinfo_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlexecutablecontent_invokeinfo_wrapper.cpp
+${QtScxml_GEN_DIR}/qscxmlexecutablecontent_parameterinfo_wrapper.cpp
+# module is always needed
+${QtScxml_GEN_DIR}/qtscxml_module_wrapper.cpp
+)
+
+set(QtScxml_include_dirs ${QtScxml_SOURCE_DIR}
+ ${QtScxml_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Scxml_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtScxml_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Scxml_LIBRARIES})
+
+set(QtScxml_deps QtCore)
+
+create_pyside_module(NAME QtScxml
+ INCLUDE_DIRS QtScxml_include_dirs
+ LIBRARIES QtScxml_libraries
+ DEPS QtScxml_deps
+ TYPESYSTEM_PATH QtScxml_SOURCE_DIR
+ SOURCES QtScxml_SRC
+ DROPPED_ENTRIES QtScxml_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtScxml/typesystem_scxml.xml b/sources/pyside6/PySide6/QtScxml/typesystem_scxml.xml
new file mode 100644
index 000000000..ba8820570
--- /dev/null
+++ b/sources/pyside6/PySide6/QtScxml/typesystem_scxml.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtScxml"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <object-type name="QScxmlCompiler">
+ <object-type name="Loader"/>
+ </object-type>
+ <object-type name="QScxmlCppDataModel"/>
+ <!-- PYSIDE-2340: Force value conversion for QScxmlStateMachine::connectToEvent()
+ which expects "func(const QScxmlEvent &)" -->
+ <value-type name="QScxmlEvent">
+ <enum-type name="EventType"/>
+ </value-type>
+ <object-type name="QScxmlDynamicScxmlServiceFactory"/>
+ <object-type name="QScxmlInvokableService"/>
+ <object-type name="QScxmlInvokableServiceFactory"/>
+ <object-type name="QScxmlStaticScxmlServiceFactory"/>
+ <object-type name="QScxmlStateMachine">
+ <modify-function signature="submitEvent(QScxmlEvent*)">
+ <modify-argument index="1">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QScxmlTableData"/>
+ <object-type name="QScxmlDataModel">
+ <!-- Needs to have exports fixed -->
+ <interface-type name="ForeachLoopBody"/>
+ <modify-function signature="^evaluateTo(String|Bool|Variant)\(.*bool ?\*.*$">
+ <modify-argument index="2">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,arg,bool*"/>
+ </inject-code>
+ </modify-function>
+ </object-type>
+ <value-type name="QScxmlError"/>
+ <namespace-type name="QScxmlExecutableContent">
+ <value-type name="AssignmentInfo"/>
+ <value-type name="EvaluatorInfo"/>
+ <value-type name="ForeachInfo"/>
+ <value-type name="InvokeInfo"/>
+ <value-type name="ParameterInfo"/>
+ </namespace-type>
+ <object-type name="QScxmlNullDataModel"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtSensors/CMakeLists.txt b/sources/pyside6/PySide6/QtSensors/CMakeLists.txt
new file mode 100644
index 000000000..0152d2884
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSensors/CMakeLists.txt
@@ -0,0 +1,94 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtSensors)
+
+set(QtSensors_OPTIONAL_SRC )
+set(QtSensors_DROPPED_ENTRIES )
+
+set(QtSensors_SRC
+# overrides QObject::metaObject() by private method
+# ${QtSensors_GEN_DIR}/qsensorgesture_wrapper.cpp
+# ${QtSensors_GEN_DIR}/qsensorgesturemanager_wrapper.cpp
+# ${QtSensors_GEN_DIR}/qsensorgestureplugininterface_wrapper.cpp
+# ${QtSensors_GEN_DIR}/qsensorgesturerecognizer_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qaccelerometer_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qaccelerometerfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qaccelerometerreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qambientlightfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qambientlightreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qambientlightsensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qambienttemperaturefilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qambienttemperaturereading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qambienttemperaturesensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qcompass_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qcompassfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qcompassreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qgyroscope_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qgyroscopefilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qgyroscopereading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qhumidityfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qhumidityreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qhumiditysensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qirproximityfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qirproximityreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qirproximitysensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qlidfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qlidreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qlidsensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qlightfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qlightreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qlightsensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qmagnetometer_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qmagnetometerfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qmagnetometerreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qorientationfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qorientationreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qorientationsensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qpressurefilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qpressurereading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qpressuresensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qproximityfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qproximityreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qproximitysensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qrotationfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qrotationreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qrotationsensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qsensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qsensorfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qsensorreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qoutputrange_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qsensorbackend_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qsensorbackendfactory_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qsensormanager_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qsensorchangesinterface_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qsensorplugininterface_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qtapfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qtapreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qtapsensor_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qtiltfilter_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qtiltreading_wrapper.cpp
+ ${QtSensors_GEN_DIR}/qtiltsensor_wrapper.cpp
+# module is always needed
+ ${QtSensors_GEN_DIR}/qtsensors_module_wrapper.cpp
+)
+
+set(QtSensors_include_dirs ${QtSensors_SOURCE_DIR}
+ ${QtSensors_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Sensors_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtSensors_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Sensors_LIBRARIES})
+
+set(QtSensors_deps QtCore)
+
+create_pyside_module(NAME QtSensors
+ INCLUDE_DIRS QtSensors_include_dirs
+ LIBRARIES QtSensors_libraries
+ DEPS QtSensors_deps
+ TYPESYSTEM_PATH QtSensors_SOURCE_DIR
+ SOURCES QtSensors_SRC
+ DROPPED_ENTRIES QtSensors_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtSensors/typesystem_sensors.xml b/sources/pyside6/PySide6/QtSensors/typesystem_sensors.xml
new file mode 100644
index 000000000..4efd08277
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSensors/typesystem_sensors.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtSensors"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+<!-- overrides QObject::metaObject() by private method
+ <object-type name="QSensorGesture"/>
+-->
+<!-- Disabled by
+ 5991224e6713eef4a456c408fcf797662fa2a66c in qt/qtsensors :
+ https://codereview.qt-project.org/c/qt/qtsensors/+/364924
+ <object-type name="QSensorGestureManager"/>
+ <object-type name="QSensorGesturePluginInterface"/>
+ <object-type name="QSensorGestureRecognizer"/>
+-->
+ <object-type name="QAccelerometer">
+ <enum-type name="AccelerationMode"/>
+ </object-type>
+ <object-type name="QAccelerometerFilter"/>
+ <object-type name="QAccelerometerReading"/>
+ <object-type name="QAmbientLightFilter"/>
+ <object-type name="QAmbientLightReading">
+ <enum-type name="LightLevel"/>
+ </object-type>
+ <object-type name="QAmbientLightSensor"/>
+ <object-type name="QAmbientTemperatureFilter"/>
+ <object-type name="QAmbientTemperatureReading"/>
+ <object-type name="QAmbientTemperatureSensor"/>
+ <object-type name="QCompass"/>
+ <object-type name="QCompassFilter"/>
+ <object-type name="QCompassReading"/>
+ <object-type name="QGyroscope"/>
+ <object-type name="QGyroscopeFilter"/>
+ <object-type name="QGyroscopeReading"/>
+ <object-type name="QHumidityFilter"/>
+ <object-type name="QHumidityReading"/>
+ <object-type name="QHumiditySensor"/>
+ <object-type name="QIRProximityFilter"/>
+ <object-type name="QIRProximityReading"/>
+ <object-type name="QIRProximitySensor"/>
+ <object-type name="QLidFilter"/>
+ <object-type name="QLidReading"/>
+ <object-type name="QLidSensor"/>
+ <object-type name="QLightFilter"/>
+ <object-type name="QLightReading"/>
+ <object-type name="QLightSensor"/>
+ <object-type name="QMagnetometer"/>
+ <object-type name="QMagnetometerFilter"/>
+ <object-type name="QMagnetometerReading"/>
+ <object-type name="QOrientationFilter"/>
+ <object-type name="QOrientationReading">
+ <enum-type name="Orientation"/>
+ </object-type>
+ <object-type name="QOrientationSensor"/>
+ <object-type name="QPressureFilter"/>
+ <object-type name="QPressureReading"/>
+ <object-type name="QPressureSensor"/>
+ <object-type name="QProximityFilter"/>
+ <object-type name="QProximityReading"/>
+ <object-type name="QProximitySensor"/>
+ <object-type name="QRotationFilter"/>
+ <object-type name="QRotationReading"/>
+ <object-type name="QRotationSensor"/>
+ <object-type name="QSensor">
+ <enum-type name="Feature"/>
+ <enum-type name="AxesOrientationMode"/>
+ </object-type>
+ <object-type name="QSensorFilter"/>
+ <object-type name="QSensorReading"/>
+ <value-type name="qoutputrange"/>
+ <object-type name="QSensorBackend"/>
+ <object-type name="QSensorBackendFactory"/>
+ <object-type name="QSensorManager"/>
+ <object-type name="QSensorChangesInterface"/>
+ <object-type name="QSensorPluginInterface"/>
+ <object-type name="QTapFilter"/>
+ <object-type name="QTapReading">
+ <enum-type name="TapDirection"/>
+ </object-type>
+ <object-type name="QTapSensor"/>
+ <object-type name="QTiltFilter"/>
+ <object-type name="QTiltReading"/>
+ <object-type name="QTiltSensor"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtSerialBus/CMakeLists.txt b/sources/pyside6/PySide6/QtSerialBus/CMakeLists.txt
new file mode 100644
index 000000000..310a8b0f0
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSerialBus/CMakeLists.txt
@@ -0,0 +1,66 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtSerialBus)
+
+set(QtSerialBus_OPTIONAL_SRC )
+set(QtSerialBus_DROPPED_ENTRIES )
+
+set(QtSerialBus_SRC
+ ${QtSerialBus_GEN_DIR}/qcanbus_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanbusdevice_filter_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanbusdevice_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanbusdeviceinfo_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanbusfactory_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanbusframe_timestamp_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanbusframe_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcandbcfileparser_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanframeprocessor_parseresult_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanframeprocessor_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanmessagedescription_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcansignaldescription_multiplexvaluerange_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcansignaldescription_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qcanuniqueiddescription_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusclient_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusdataunit_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusdevice_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusdeviceidentification_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusexceptionresponse_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbuspdu_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusreply_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusrequest_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusresponse_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusrtuserialclient_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusrtuserialserver_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbusserver_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbustcpclient_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbustcpconnectionobserver_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qmodbustcpserver_wrapper.cpp
+ ${QtSerialBus_GEN_DIR}/qtcanbus_wrapper.cpp
+# module is always needed
+ ${QtSerialBus_GEN_DIR}/qtserialbus_module_wrapper.cpp
+)
+
+set(QtSerialBus_include_dirs ${QtSerialBus_SOURCE_DIR}
+ ${QtSerialBus_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}SerialPort_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}SerialBus_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtSerialPort_GEN_DIR})
+
+set(QtSerialBus_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}SerialBus_LIBRARIES})
+
+set(QtSerialBus_deps QtCore QtNetwork QtSerialPort)
+
+create_pyside_module(NAME QtSerialBus
+ INCLUDE_DIRS QtSerialBus_include_dirs
+ LIBRARIES QtSerialBus_libraries
+ DEPS QtSerialBus_deps
+ TYPESYSTEM_PATH QtSerialBus_SOURCE_DIR
+ SOURCES QtSerialBus_SRC
+ DROPPED_ENTRIES QtSerialBus_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtSerialBus/typesystem_serialbus.xml b/sources/pyside6/PySide6/QtSerialBus/typesystem_serialbus.xml
new file mode 100644
index 000000000..fdd2b1483
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSerialBus/typesystem_serialbus.xml
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.QtSerialBus"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+ <load-typesystem name="QtSerialPort/typesystem_serialport.xml" generate="no"/>
+
+ <namespace-type name="QtCanBus">
+ <enum-type name="DataSource"/>
+ <enum-type name="DataFormat"/>
+ <enum-type name="MultiplexState"/>
+ <enum-type name="UniqueId"/>
+ </namespace-type>
+
+ <object-type name="QCanBus">
+ <!-- Remove errorMessage argument, return tuple instead. -->
+ <modify-function signature="availableDevices(QString,QString*)const">
+ <modify-argument index="2">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="tuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning"
+ file="../glue/qtserialbus.cpp" snippet="qcanbus-available-devices"/>
+ <inject-documentation format="target" mode="append">
+ The function returns a tuple of (device_list, error_string).
+ </inject-documentation>
+ </modify-function>
+ <modify-function signature="createDevice(QString,QString,QString*)const">
+ <modify-argument index="3">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return"> <!-- Suppress return value heuristics -->
+ <define-ownership class="target" owner="default"/>
+ <replace-type modified-type="tuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning"
+ file="../glue/qtserialbus.cpp" snippet="qcanbus-createdevice"/>
+ <inject-documentation format="target" mode="append">
+ The function returns a tuple of (device, error_string).
+ </inject-documentation>
+ </modify-function>
+ </object-type>
+ <object-type name="QCanBusDevice">
+ <enum-type name="CanBusError"/>
+ <enum-type name="CanBusDeviceState"/>
+ <enum-type name="CanBusStatus"/>
+ <enum-type name="ConfigurationKey"/>
+ <enum-type name="Direction" flags="Directions"/>
+ <modify-function signature="deviceInfo()const" access="final"/>
+ <value-type name="Filter">
+ <enum-type name="FormatFilter" flags="FormatFilters"/>
+ </value-type>
+ </object-type>
+ <value-type name="QCanBusDeviceInfo"> <!-- deleted default constructor -->
+ <modify-function signature="swap(QCanBusDeviceInfo&amp;)" remove="all"/>
+ </value-type>
+ <object-type name="QCanBusFactory"/>
+ <value-type name="QCanBusFrame">
+ <enum-type name="FrameType"/>
+ <enum-type name="FrameError" flags="FrameErrors"/>
+ <value-type name="TimeStamp"/>
+ </value-type>
+ <object-type name="QCanDbcFileParser">
+ <enum-type name="Error"/>
+ </object-type>
+ <object-type name="QCanFrameProcessor">
+ <enum-type name="Error"/>
+ <value-type name="ParseResult"/>
+ </object-type>
+ <value-type name="QCanMessageDescription"/>
+ <value-type name="QCanSignalDescription">
+ <value-type name="MultiplexValueRange"/>
+ </value-type>
+ <value-type name="QCanUniqueIdDescription"/>
+ <object-type name="QModbusClient"/>
+ <value-type name="QModbusDataUnit">
+ <enum-type name="RegisterType"/>
+ </value-type>
+ <object-type name="QModbusDevice">
+ <enum-type name="Error"/>
+ <enum-type name="State"/>
+ <enum-type name="ConnectionParameter"/>
+ <enum-type name="IntermediateError"/>
+ </object-type>
+ <value-type name="QModbusDeviceIdentification">
+ <enum-type name="ObjectId"/>
+ <enum-type name="ReadDeviceIdCode"/>
+ <enum-type name="ConformityLevel"/>
+ </value-type>
+ <object-type name="QModbusPdu">
+ <enum-type name="ExceptionCode"/>
+ <enum-type name="FunctionCode"/>
+ <modify-field name="ExceptionByte" remove="true"/> <!-- Link error -->
+ </object-type>
+ <object-type name="QModbusExceptionResponse"/>
+ <object-type name="QModbusResponse"/>
+ <object-type name="QModbusReply">
+ <enum-type name="ReplyType"/>
+ </object-type>
+ <object-type name="QModbusRequest"/>
+ <object-type name="QModbusRtuSerialClient"/>
+ <object-type name="QModbusRtuSerialServer"/>
+ <object-type name="QModbusServer">
+ <enum-type name="Option"/>
+ </object-type>
+ <object-type name="QModbusTcpClient"/>
+ <object-type name="QModbusTcpConnectionObserver"/>
+ <object-type name="QModbusTcpServer"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtSerialPort/CMakeLists.txt b/sources/pyside6/PySide6/QtSerialPort/CMakeLists.txt
new file mode 100644
index 000000000..564fc9969
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSerialPort/CMakeLists.txt
@@ -0,0 +1,34 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtSerialPort)
+
+set(QtSerialPort_OPTIONAL_SRC )
+set(QtSerialPort_DROPPED_ENTRIES )
+
+set(QtSerialPort_SRC
+ ${QtSerialPort_GEN_DIR}/qserialport_wrapper.cpp
+ ${QtSerialPort_GEN_DIR}/qserialportinfo_wrapper.cpp
+# module is always needed
+ ${QtSerialPort_GEN_DIR}/qtserialport_module_wrapper.cpp
+)
+
+set(QtSerialPort_include_dirs ${QtSerialPort_SOURCE_DIR}
+ ${QtSerialPort_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}SerialPort_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtSerialPort_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}SerialPort_LIBRARIES})
+
+set(QtSerialPort_deps QtCore)
+
+create_pyside_module(NAME QtSerialPort
+ INCLUDE_DIRS QtSerialPort_include_dirs
+ LIBRARIES QtSerialPort_libraries
+ DEPS QtSerialPort_deps
+ TYPESYSTEM_PATH QtSerialPort_SOURCE_DIR
+ SOURCES QtSerialPort_SRC
+ DROPPED_ENTRIES QtSerialPort_DROPPED_ENTRIES)
diff --git a/sources/pyside6/PySide6/QtSerialPort/typesystem_serialport.xml b/sources/pyside6/PySide6/QtSerialPort/typesystem_serialport.xml
new file mode 100644
index 000000000..0cbd3c7f7
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSerialPort/typesystem_serialport.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtSerialPort"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <object-type name="QSerialPort">
+ <enum-type name="BaudRate" python-type="IntEnum"/>
+ <enum-type name="DataBits"/>
+ <enum-type name="Direction" flags="Directions"/>
+ <enum-type name="FlowControl"/>
+ <enum-type name="Parity"/>
+ <enum-type name="PinoutSignal" flags="PinoutSignals"/>
+ <enum-type name="SerialPortError"/>
+ <enum-type name="StopBits"/>
+ </object-type>
+ <value-type name="QSerialPortInfo"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtSpatialAudio/CMakeLists.txt b/sources/pyside6/PySide6/QtSpatialAudio/CMakeLists.txt
new file mode 100644
index 000000000..966c0ffe8
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSpatialAudio/CMakeLists.txt
@@ -0,0 +1,40 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtSpatialAudio)
+
+set(QtSpatialAudio_SRC
+${QtSpatialAudio_GEN_DIR}/qambientsound_wrapper.cpp
+${QtSpatialAudio_GEN_DIR}/qaudioengine_wrapper.cpp
+${QtSpatialAudio_GEN_DIR}/qaudiolistener_wrapper.cpp
+${QtSpatialAudio_GEN_DIR}/qaudioroom_wrapper.cpp
+${QtSpatialAudio_GEN_DIR}/qspatialsound_wrapper.cpp
+
+# module is always needed
+${QtSpatialAudio_GEN_DIR}/qtspatialaudio_module_wrapper.cpp
+)
+
+set(QtSpatialAudio_include_dirs ${QtSpatialAudio_SOURCE_DIR}
+ ${QtSpatialAudio_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Multimedia_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}SpatialAudio_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtMultimedia_GEN_DIR})
+
+set(QtSpatialAudio_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}SpatialAudio_LIBRARIES})
+
+set(QtSpatialAudio_deps QtCore QtGui QtNetwork QtMultimedia)
+
+create_pyside_module(NAME QtSpatialAudio
+ INCLUDE_DIRS QtSpatialAudio_include_dirs
+ LIBRARIES QtSpatialAudio_libraries
+ DEPS QtSpatialAudio_deps
+ TYPESYSTEM_PATH QtSpatialAudio_SOURCE_DIR
+ SOURCES QtSpatialAudio_SRC)
diff --git a/sources/pyside6/PySide6/QtSpatialAudio/typesystem_spatialaudio.xml b/sources/pyside6/PySide6/QtSpatialAudio/typesystem_spatialaudio.xml
new file mode 100644
index 000000000..b9c2557af
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSpatialAudio/typesystem_spatialaudio.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtSpatialAudio"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+ <load-typesystem name="QtMultimedia/typesystem_multimedia.xml" generate="no"/>
+
+ <object-type name="QAmbientSound">
+ <enum-type name="Loops"/>
+ </object-type>
+
+ <object-type name="QAudioEngine">
+ <enum-type name="OutputMode"/>
+ </object-type>
+
+ <object-type name="QAudioListener"/>
+
+ <object-type name="QAudioRoom">
+ <enum-type name="Material"/>
+ <enum-type name="Wall"/>
+ </object-type>
+
+ <object-type name="QSpatialSound">
+ <enum-type name="Loops"/>
+ <enum-type name="DistanceModel"/>
+ </object-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtSql/CMakeLists.txt b/sources/pyside6/PySide6/QtSql/CMakeLists.txt
new file mode 100644
index 000000000..fedebe642
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSql/CMakeLists.txt
@@ -0,0 +1,52 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtSql)
+
+set(QtSql_SRC
+${QtSql_GEN_DIR}/qsql_wrapper.cpp
+${QtSql_GEN_DIR}/qsqldatabase_wrapper.cpp
+${QtSql_GEN_DIR}/qsqldriver_wrapper.cpp
+${QtSql_GEN_DIR}/qsqldrivercreatorbase_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlerror_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlfield_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlindex_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlquery_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlquerymodel_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlrecord_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlrelation_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlrelationaldelegate_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlrelationaltablemodel_wrapper.cpp
+${QtSql_GEN_DIR}/qsqlresult_wrapper.cpp
+${QtSql_GEN_DIR}/qsqltablemodel_wrapper.cpp
+# module is always needed
+${QtSql_GEN_DIR}/qtsql_module_wrapper.cpp
+)
+
+configure_file("${QtSql_SOURCE_DIR}/QtSql_global.pre.h.in"
+ "${QtSql_BINARY_DIR}/QtSql_global.pre.h" @ONLY)
+
+set(QtSql_include_dirs ${QtSql_SOURCE_DIR}
+ ${QtSql_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Sql_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR})
+
+# Link to QtWidgets to enable QSqlRelationalDelegate
+set(QtSql_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Widgets_LIBRARIES}
+ ${Qt${QT_MAJOR_VERSION}Sql_LIBRARIES})
+
+set(QtSql_deps QtWidgets)
+
+create_pyside_module(NAME QtSql
+ INCLUDE_DIRS QtSql_include_dirs
+ LIBRARIES QtSql_libraries
+ DEPS QtSql_deps
+ TYPESYSTEM_PATH QtSql_SOURCE_DIR
+ SOURCES QtSql_SRC)
diff --git a/sources/pyside6/PySide6/QtSql/QtSql_global.pre.h.in b/sources/pyside6/PySide6/QtSql/QtSql_global.pre.h.in
new file mode 100644
index 000000000..c56bc78c1
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSql/QtSql_global.pre.h.in
@@ -0,0 +1,5 @@
+// QT_WIDGETS_LIB must be defined for QSqlRelationalDelegate to become visible.
+
+#if @Qt6Widgets_FOUND@
+# define QT_WIDGETS_LIB
+#endif
diff --git a/sources/pyside6/PySide6/QtSql/typesystem_sql.xml b/sources/pyside6/PySide6/QtSql/typesystem_sql.xml
new file mode 100644
index 000000000..70c3e6f69
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSql/typesystem_sql.xml
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtSql"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+ <rejection class="QSqlDriverCreator"/>
+ <rejection class="QSqlDriverPlugin"/>
+
+ <namespace-type name="QSql">
+ <enum-type name="Location"/>
+ <enum-type name="ParamTypeFlag" flags="ParamType"/>
+ <enum-type name="TableType"/>
+ <enum-type name="NumericalPrecisionPolicy"/>
+ <extra-includes>
+ <include file-name="QtSql/qtsqlglobal.h" location="global"/>
+ </extra-includes>
+ </namespace-type>
+
+ <value-type name="QSqlDatabase">
+ <extra-includes>
+ <include file-name="QSqlQuery" location="global"/>
+ <include file-name="QSqlError" location="global"/>
+ <include file-name="QSqlIndex" location="global"/>
+ <include file-name="QSqlRecord" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <modify-function signature="exec(QString)const" allow-thread="yes"/>
+ <add-function signature="exec_(QString @query@ = QString())const" return-type="QSqlQuery">
+ <inject-code file="../glue/qtsql.cpp" snippet="qsqldatabase-exec"/>
+ </add-function>
+ <modify-function signature="open()" allow-thread="yes"/>
+ <modify-function signature="open(const QString&amp;, const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="commit()" allow-thread="yes"/>
+ <modify-function signature="rollback()" allow-thread="yes"/>
+ <modify-function signature="transaction()" allow-thread="yes"/>
+ <modify-function signature="registerSqlDriver(const QString&amp;,QSqlDriverCreatorBase*)">
+ <modify-argument index="2">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+
+ <value-type name="QSqlQuery">
+ <enum-type name="BatchExecutionMode"/>
+ <extra-includes>
+ <include file-name="QSqlError" location="global"/>
+ <include file-name="QSqlRecord" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <!-- exec() -->
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="bool">
+ <inject-code file="../glue/qtsql.cpp" snippet="simple-exec"/>
+ </add-function>
+ <!-- exec(QString) -->
+ <modify-function signature="exec(const QString&amp;)" allow-thread="yes"/>
+ <add-function signature="exec_(const QString&amp;)" return-type="bool">
+ <inject-code file="../glue/qtsql.cpp" snippet="qsqlquery-exec"/>
+ </add-function>
+ <modify-function signature="prepare(const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="clear()" allow-thread="yes"/>
+ <modify-function signature="last()" allow-thread="yes"/>
+ <modify-function signature="first()" allow-thread="yes"/>
+ <modify-function signature="previous()" allow-thread="yes"/>
+ <modify-function signature="next()" allow-thread="yes"/>
+ <modify-function signature="seek(int,bool)" allow-thread="yes"/>
+ </value-type>
+
+ <value-type name="QSqlRecord">
+ <extra-includes>
+ <include file-name="QSqlField" location="global"/>
+ </extra-includes>
+ </value-type>
+
+ <value-type name="QSqlError">
+ <enum-type name="ErrorType"/>
+ </value-type>
+
+ <value-type name="QSqlIndex"/>
+
+ <value-type name="QSqlRelation"/>
+
+ <object-type name="QSqlRelationalDelegate"/>
+
+ <value-type name="QSqlField">
+ <enum-type name="RequiredStatus"/>
+ </value-type>
+
+ <object-type name="QSqlDriver">
+ <enum-type name="DbmsType"/>
+ <enum-type name="DriverFeature"/>
+ <enum-type name="IdentifierType"/>
+ <enum-type name="NotificationSource"/>
+ <enum-type name="StatementType"/>
+ <extra-includes>
+ <include file-name="QSqlQuery" location="global"/>
+ <include file-name="QSqlError" location="global"/>
+ <include file-name="QSqlIndex" location="global"/>
+ <include file-name="QSqlRecord" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <modify-function signature="beginTransaction()" allow-thread="yes"/>
+ <modify-function signature="commitTransaction()" allow-thread="yes"/>
+ <modify-function signature="rollbackTransaction()" allow-thread="yes"/>
+ <modify-function signature="open(const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,int,const QString&amp;)" allow-thread="yes"/>
+ <!-- ### This is too low level for Python, and pointer would be useless for the Python programmer -->
+ <modify-function signature="handle()const" remove="all"/>
+ <!-- ### -->
+ </object-type>
+
+ <object-type name="QSqlQueryModel">
+ <extra-includes>
+ <include file-name="QSqlError" location="global"/>
+ <include file-name="QSqlQuery" location="global"/>
+ <include file-name="QSqlRecord" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <!-- FIXME: PYSIDE7: Handle setQuery(QSqlQuery&&) in some way?
+ QTBUG-91766/PYSIDE-2394. allow-thread for PYSIDE-1931 -->
+ <modify-function signature="setQuery(QSqlQuery)" allow-thread="yes"
+ deprecated="false"/>
+ <modify-function signature="setQuery(QString,QSqlDatabase)" allow-thread="yes"/>
+ <!-- FIXME: PYSIDE7: Probably needs a fix, make QSqlQuery an object type?
+ QTBUG-105048/PYSIDE-2300 -->
+ <declare-function signature="query()" return-type="QSqlQuery"/>
+ </object-type>
+ <object-type name="QSqlRelationalTableModel">
+ <enum-type name="JoinMode"/>
+ <extra-includes>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <modify-function signature="select()" allow-thread="yes"/> <!-- PYSIDE-1931 -->
+ </object-type>
+ <object-type name="QSqlResult">
+ <enum-type name="BindingSyntax"/>
+ <enum-type name="VirtualHookOperation"/>
+ <extra-includes>
+ <include file-name="QSqlError" location="global"/>
+ <include file-name="QSqlQuery" location="global"/>
+ <include file-name="QSqlRecord" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <!-- ### This isn't part of Qt public API -->
+ <modify-function signature="virtual_hook(int,void*)" remove="all"/>
+ <!-- ### -->
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="bool">
+ <inject-code file="../glue/qtsql.cpp" snippet="qsqlresult-exec"/>
+ </add-function>
+ <modify-function signature="fetchLast()" allow-thread="yes"/>
+ <modify-function signature="fetchFirst()" allow-thread="yes"/>
+ <modify-function signature="fetchNext()" allow-thread="yes"/>
+ <modify-function signature="fetchPrevious()" allow-thread="yes"/>
+ <modify-function signature="fetch(int)" allow-thread="yes"/>
+ <modify-function signature="prepare(QString)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QSqlTableModel">
+ <enum-type name="EditStrategy"/>
+ <extra-includes>
+ <include file-name="QSqlIndex" location="global"/>
+ <include file-name="QStringList" location="global"/>
+ <include file-name="QSize" location="global"/>
+ </extra-includes>
+ <modify-function signature="select()" allow-thread="yes"/> <!-- PYSIDE-1931 -->
+ </object-type>
+ <object-type name="QSqlDriverCreatorBase">
+ <extra-includes>
+ <include file-name="QSqlDriver" location="global"/>
+ </extra-includes>
+ </object-type>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtStateMachine/CMakeLists.txt b/sources/pyside6/PySide6/QtStateMachine/CMakeLists.txt
new file mode 100644
index 000000000..2b4cc348d
--- /dev/null
+++ b/sources/pyside6/PySide6/QtStateMachine/CMakeLists.txt
@@ -0,0 +1,42 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtStateMachine)
+
+set(QtStateMachine_SRC
+${QtStateMachine_GEN_DIR}/qabstractstate_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qabstracttransition_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qeventtransition_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qkeyeventtransition_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qmouseeventtransition_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qfinalstate_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qhistorystate_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qsignaltransition_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qstate_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qstatemachine_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qstatemachine_signalevent_wrapper.cpp
+${QtStateMachine_GEN_DIR}/qstatemachine_wrappedevent_wrapper.cpp
+# module is always needed
+${QtStateMachine_GEN_DIR}/qtstatemachine_module_wrapper.cpp
+)
+
+set(QtStateMachine_include_dirs ${QtStateMachine_SOURCE_DIR}
+ ${QtStateMachine_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR})
+
+set(QtStateMachine_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}StateMachine_LIBRARIES})
+
+set(QtStateMachine_deps QtGui)
+
+create_pyside_module(NAME QtStateMachine
+ INCLUDE_DIRS QtStateMachine_include_dirs
+ LIBRARIES QtStateMachine_libraries
+ DEPS QtStateMachine_deps
+ TYPESYSTEM_PATH QtStateMachine_SOURCE_DIR
+ SOURCES QtStateMachine_SRC
+ TYPESYSTEM_NAME ${QtStateMachine_BINARY_DIR}/typesystem_statemachine.xml)
diff --git a/sources/pyside6/PySide6/QtStateMachine/typesystem_statemachine.xml b/sources/pyside6/PySide6/QtStateMachine/typesystem_statemachine.xml
new file mode 100644
index 000000000..0e29f240f
--- /dev/null
+++ b/sources/pyside6/PySide6/QtStateMachine/typesystem_statemachine.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtStateMachine"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+
+ <object-type name="QAbstractState">
+ <modify-function signature="machine()const">
+ <modify-argument index="this">
+ <parent index="return" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QAbstractTransition">
+ <enum-type name="TransitionType"/>
+
+ <modify-function signature="QAbstractTransition(QState*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addAnimation(QAbstractAnimation*)">
+ <modify-argument index="1">
+ <reference-count action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="removeAnimation(QAbstractAnimation*)">
+ <modify-argument index="1">
+ <reference-count action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="setTargetState(QAbstractState*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="targetState()const">
+ <modify-argument index="return">
+ <reference-count action="set" variable-name="setTargetState(QAbstractState*)1"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="targetStates()const">
+ <modify-argument index="return">
+ <reference-count action="set" variable-name="setTargetState(QAbstractState*)1"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="setTargetStates(QList&lt;QAbstractState*&gt;)">
+ <modify-argument index="1">
+ <reference-count action="set" variable-name="setTargetState(QAbstractState*)1"/>
+ </modify-argument>
+ </modify-function>
+
+ </object-type>
+
+ <object-type name="QEventTransition">
+ <modify-function signature="QEventTransition(QState*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="QEventTransition(QObject*,QEvent::Type,QState*)">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ </object-type>
+
+ <object-type name="QKeyEventTransition"/>
+ <object-type name="QMouseEventTransition"/>
+
+ <object-type name="QFinalState"/>
+
+ <object-type name="QHistoryState">
+ <enum-type name="HistoryType"/>
+ <modify-documentation xpath='description/code'>
+ &lt;code>machine = QStateMachine()
+
+s1 = QState()
+s11 = QState(s1)
+s12 = QState(s1)
+
+s1h = QHistoryState(s1)
+s1h.setDefaultState(s11)
+
+machine.addState(s1)
+
+s2 = QState()
+machine.addState(s2)
+
+button = QPushButton()
+# Clicking the button will cause the state machine to enter the child state
+# that s1 was in the last time s1 was exited, or the history state's default
+# state if s1 has never been entered.
+s1.addTransition(button.clicked, s1h)&lt;/code>
+ </modify-documentation>
+ </object-type>
+
+ <object-type name="QSignalTransition">
+ <add-function signature="QSignalTransition(PyObject*,QState*)" return-type="QSignalTransition*">
+ <modify-argument index="2">
+ <replace-default-expression with="0"/>
+ </modify-argument>
+ <inject-code file="../glue/qtstatemachine.cpp" snippet="qsignaltransition"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QState">
+ <enum-type name="ChildMode"/>
+ <enum-type name="RestorePolicy"/>
+ <modify-function signature="addTransition(QAbstractTransition*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="assignProperty(QObject*,const char*,QVariant)">
+ <modify-argument index="2" pyi-type="str"/>
+ </modify-function>
+
+ <modify-function signature="addTransition(const QObject*,const char*,QAbstractState*)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="2" pyi-type="str"/>
+ <inject-code class="target" position="beginning" file="../glue/qtstatemachine.cpp"
+ snippet="qstate-addtransition-1"/>
+ </modify-function>
+ <modify-function signature="addTransition(QAbstractState*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <!-- FIXME: the proper signature for this added function would be something like
+ addTransition(PySide2.QtCore.Signal, QAbstractState*)
+ but that depends on bug #362. -->
+ <add-function signature="addTransition(PyObject*,QAbstractState*)" return-type="QSignalTransition*">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtstatemachine.cpp"
+ snippet="qstate-addtransition-2"/>
+ </add-function>
+
+ <modify-function signature="removeTransition(QAbstractTransition*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QStateMachine">
+ <enum-type name="Error"/>
+ <enum-type name="EventPriority"/>
+
+ <object-type name="SignalEvent"/>
+ <object-type name="WrappedEvent"/>
+
+ <modify-function signature="addState(QAbstractState*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeState(QAbstractState*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ <add-function signature="configuration()" return-type="QSet&lt;QAbstractState*&gt;">
+ <inject-code class="target" position="beginning" file="../glue/qtstatemachine.cpp"
+ snippet="qstatemachine-configuration"/>
+ </add-function>
+
+ <!-- Replaced by a added function -->
+ <modify-function signature="defaultAnimations()const" remove="all"/>
+ <add-function signature="defaultAnimations()" return-type="QList&lt;QAbstractAnimation*&gt;">
+ <inject-code class="target" position="beginning" file="../glue/qtstatemachine.cpp"
+ snippet="qstatemachine-defaultanimations"/>
+ </add-function>
+ </object-type>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtSvg/CMakeLists.txt b/sources/pyside6/PySide6/QtSvg/CMakeLists.txt
new file mode 100644
index 000000000..5451380cc
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSvg/CMakeLists.txt
@@ -0,0 +1,34 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtSvg)
+
+set(QtSvg_SRC
+${QtSvg_GEN_DIR}/qsvggenerator_wrapper.cpp
+${QtSvg_GEN_DIR}/qsvgrenderer_wrapper.cpp
+${QtSvg_GEN_DIR}/qtsvg_wrapper.cpp
+# module is always needed
+${QtSvg_GEN_DIR}/qtsvg_module_wrapper.cpp
+)
+
+set(QtSvg_include_dirs ${QtSvg_SOURCE_DIR}
+ ${QtSvg_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Svg_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR})
+
+set(QtSvg_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Svg_LIBRARIES})
+
+
+set(QtSvg_deps QtGui)
+
+create_pyside_module(NAME QtSvg
+ INCLUDE_DIRS QtSvg_include_dirs
+ LIBRARIES QtSvg_libraries
+ DEPS QtSvg_deps
+ TYPESYSTEM_PATH QtSvg_SOURCE_DIR
+ SOURCES QtSvg_SRC)
diff --git a/sources/pyside6/PySide6/QtSvg/typesystem_svg.xml b/sources/pyside6/PySide6/QtSvg/typesystem_svg.xml
new file mode 100644
index 000000000..4803f4d93
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSvg/typesystem_svg.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtSvg"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+
+ <object-type name="QSvgRenderer"/>
+ <namespace-type name="QtSvg" since="6.7">
+ <enum-type name="Option" flags="Options"/>
+ </namespace-type>
+
+ <object-type name="QSvgGenerator">
+ <enum-type name="SvgVersion" since="6.5"/>
+ <modify-function signature="setOutputDevice(QIODevice*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="outputDevice()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtSvgWidgets/CMakeLists.txt b/sources/pyside6/PySide6/QtSvgWidgets/CMakeLists.txt
new file mode 100644
index 000000000..6bd3aedc1
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSvgWidgets/CMakeLists.txt
@@ -0,0 +1,36 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtSvgWidgets)
+
+set(QtSvgWidgets_SRC
+${QtSvgWidgets_GEN_DIR}/qgraphicssvgitem_wrapper.cpp
+${QtSvgWidgets_GEN_DIR}/qsvgwidget_wrapper.cpp
+# module is always needed
+${QtSvgWidgets_GEN_DIR}/qtsvgwidgets_module_wrapper.cpp
+)
+
+set(QtSvgWidgets_include_dirs ${QtSvgWidgets_SOURCE_DIR}
+ ${QtSvgWidgets_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Svg_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}SvgWidgets_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtSvg_GEN_DIR})
+
+set(QtSvgWidgets_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}SvgWidgets_LIBRARIES})
+
+set(QtSvgWidgets_deps QtSvg QtWidgets)
+
+create_pyside_module(NAME QtSvgWidgets
+ INCLUDE_DIRS QtSvgWidgets_include_dirs
+ LIBRARIES QtSvgWidgets_libraries
+ DEPS QtSvgWidgets_deps
+ TYPESYSTEM_PATH QtSvgWidgets_SOURCE_DIR
+ SOURCES QtSvgWidgets_SRC)
diff --git a/sources/pyside6/PySide6/QtSvgWidgets/typesystem_svgwidgets.xml b/sources/pyside6/PySide6/QtSvgWidgets/typesystem_svgwidgets.xml
new file mode 100644
index 000000000..36bda1ea3
--- /dev/null
+++ b/sources/pyside6/PySide6/QtSvgWidgets/typesystem_svgwidgets.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtSvgWidgets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtSvg/typesystem_svg.xml" generate="no"/>
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+ <object-type name="QSvgWidget"/>
+
+ <object-type name="QGraphicsSvgItem">
+ <modify-function signature="QGraphicsSvgItem(QGraphicsItem*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QGraphicsSvgItem(const QString&amp;,QGraphicsItem*)">
+ <modify-argument index="this">
+ <parent index="2" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtTest/CMakeLists.txt b/sources/pyside6/PySide6/QtTest/CMakeLists.txt
new file mode 100644
index 000000000..86bb2a731
--- /dev/null
+++ b/sources/pyside6/PySide6/QtTest/CMakeLists.txt
@@ -0,0 +1,46 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtTest)
+
+set(QtTest_SRC
+${QtTest_GEN_DIR}/qtest_pysideqtoucheventsequence_wrapper.cpp
+${QtTest_GEN_DIR}/qabstractitemmodeltester_wrapper.cpp
+${QtTest_GEN_DIR}/qsignalspy_wrapper.cpp
+${QtTest_GEN_DIR}/qtest_wrapper.cpp
+# module is always needed
+${QtTest_GEN_DIR}/qttest_module_wrapper.cpp
+)
+
+configure_file("${QtTest_SOURCE_DIR}/QtTest_global.pre.h.in"
+ "${QtTest_BINARY_DIR}/QtTest_global.pre.h" @ONLY)
+
+configure_file("${QtTest_SOURCE_DIR}/QtTest_global.post.h.in"
+ "${QtTest_BINARY_DIR}/QtTest_global.post.h" @ONLY)
+
+set(QtTest_include_dirs ${QtTest_SOURCE_DIR}
+ ${QtTest_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Test_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR})
+
+# Link to QtGui/QtWidgets to enable gui/widget-specific inline functions
+set(QtTest_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Test_LIBRARIES}
+ ${Qt${QT_MAJOR_VERSION}Widgets_LIBRARIES}
+ ${Qt${QT_MAJOR_VERSION}Gui_LIBRARIES}
+ ${Qt${QT_MAJOR_VERSION}Core_LIBRARIES})
+
+set(QtTest_deps QtWidgets)
+
+create_pyside_module(NAME QtTest
+ INCLUDE_DIRS QtTest_include_dirs
+ LIBRARIES QtTest_libraries
+ DEPS QtTest_deps
+ TYPESYSTEM_PATH QtTest_SOURCE_DIR
+ SOURCES QtTest_SRC)
diff --git a/sources/pyside6/PySide6/QtTest/QtTest_global.post.h.in b/sources/pyside6/PySide6/QtTest/QtTest_global.post.h.in
new file mode 100644
index 000000000..ccd18153c
--- /dev/null
+++ b/sources/pyside6/PySide6/QtTest/QtTest_global.post.h.in
@@ -0,0 +1 @@
+#include "pysideqtesttouch.h"
diff --git a/sources/pyside6/PySide6/QtTest/QtTest_global.pre.h.in b/sources/pyside6/PySide6/QtTest/QtTest_global.pre.h.in
new file mode 100644
index 000000000..da5534b82
--- /dev/null
+++ b/sources/pyside6/PySide6/QtTest/QtTest_global.pre.h.in
@@ -0,0 +1,5 @@
+// QT_WIDGETS_LIB changes code generation in pysideqtesttouch.h
+
+#if @Qt6Widgets_FOUND@
+# define QT_WIDGETS_LIB
+#endif
diff --git a/sources/pyside6/PySide6/QtTest/typesystem_test.xml b/sources/pyside6/PySide6/QtTest/typesystem_test.xml
new file mode 100644
index 000000000..2fc4f23cd
--- /dev/null
+++ b/sources/pyside6/PySide6/QtTest/typesystem_test.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtTest"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+ <rejection class="QTest::Internal"/>
+ <rejection class="QTestPrivate"/>
+
+ <rejection class="QTest" function-name="qCompare"/>
+ <rejection class="QTest" function-name="qVerify"/>
+ <rejection class="QTest" function-name="toHexRepresentation"/>
+ <rejection class="QTest" function-name="qFail"/>
+ <rejection class="QTest" function-name="qInit"/>
+ <rejection class="QTest" function-name="qExec"/>
+ <rejection class="QTest" function-name="qData"/>
+ <rejection class="QTest" function-name="qWarn"/>
+ <rejection class="QTest" function-name="toString"/>
+ <rejection class="QTest" function-name="useVerifyThrowsException"/>
+
+ <rejection class="QTest" function-name="compare_helper"/>
+ <rejection class="QTest" function-name="toPrettyUnicode"/>
+
+ <rejection class="QTest" field-name="lastMouseTimestamp"/>
+
+ <!-- Qt5: this new stuff below belongs to QtGui. I keep it here for now, after a long odyssey.
+
+ The problem that costed my days of bug hunting is the fact that shiboken gives
+ misleading error messages. The messages that I could not get rid of were
+
+ signature 'generateTouchEvent(QWidget*,QInputDevice*,bool)' for function modification in 'QTest' not found. Possible candidates:
+ signature 'generateTouchEvent(QWindow*,QInputDevice*,bool)' for function modification in 'QTest' not found. Possible candidates:
+
+ I always thought that for some reason the functions were not recognized, or the arguments somehow
+ do not match their declaration. Only late in the project, I learnt that also
+ a simply missing type name in the argument list leads to this message.
+
+ <object-type name="QInputDevice">
+ <enum-type name="CapabilityFlag" flags="Capabilities"/>
+ <enum-type name="DeviceType"/>
+ </object-type>
+ ^^^ this is now moved into QtGui -->
+
+ <object-type name="QAbstractItemModelTester">
+ <enum-type name="FailureReportingMode"/>
+ </object-type>
+
+ <object-type name="QSignalSpy"> <!-- Inherits QList<QVariantList> -->
+ <extra-includes>
+ <include file-name="pysidesignal.h" location="global"/>
+ </extra-includes>
+ <declare-function signature="count()const" return-type="qsizetype"/>
+ <declare-function signature="size()const" return-type="qsizetype"/>
+ <declare-function signature="at(qsizetype)const" return-type="QVariantList"/>
+ <add-function signature="QSignalSpy(PySideSignalInstance@signal@)">
+ <inject-code class="target" position="beginning" file="../glue/qttest.cpp" snippet="qsignalspy-signal"/>
+ <inject-documentation format="target" mode="append">
+ Constructs a new QSignalSpy that listens for emissions of the signal.
+ </inject-documentation>
+ </add-function>
+ </object-type>
+
+ <namespace-type name="QTest">
+ <!-- Qt5: private <enum-type name="AttributeIndex" since="4.6"/> -->
+ <enum-type name="KeyAction"/>
+ <!-- Qt5: private <enum-type name="LogElementType" since="4.6"/> -->
+ <enum-type name="MouseAction"/>
+ <enum-type name="QBenchmarkMetric" since="4.7"/>
+ <enum-type name="TestFailMode"/>
+ <enum-type name="ComparisonOperation" since="6.4"/>
+ <extra-includes>
+ <include file-name="QtTest" location="global"/>
+ </extra-includes>
+
+ <object-type name="PySideQTouchEventSequence" target-lang-name="QTouchEventSequence" since="4.6" >
+ <modify-function signature="press(int,const QPoint&amp;,QWidget*)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="press(int,const QPoint&amp;,QWindow*)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="move(int,const QPoint&amp;,QWidget*)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="move(int,const QPoint&amp;,QWindow*)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="release(int,const QPoint&amp;,QWidget*)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="release(int,const QPoint&amp;,QWindow*)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="stationary(int)">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <modify-function signature="generateTouchEvent(QWidget*,QPointingDevice*,bool)" rename="touchEvent" since="4.6">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="target"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="generateTouchEvent(QWindow*,QPointingDevice*,bool)" rename="touchEvent" since="4.6">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="target"/>
+ </modify-argument>
+ </modify-function>
+ </namespace-type>
+
+ <rejection class="QTestEventList"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtTextToSpeech/CMakeLists.txt b/sources/pyside6/PySide6/QtTextToSpeech/CMakeLists.txt
new file mode 100644
index 000000000..9f0bd2fc3
--- /dev/null
+++ b/sources/pyside6/PySide6/QtTextToSpeech/CMakeLists.txt
@@ -0,0 +1,31 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtTextToSpeech)
+
+set(QtTextToSpeech_SRC
+${QtTextToSpeech_GEN_DIR}/qtexttospeech_wrapper.cpp
+${QtTextToSpeech_GEN_DIR}/qtexttospeechengine_wrapper.cpp
+${QtTextToSpeech_GEN_DIR}/qvoice_wrapper.cpp
+# module is always needed
+${QtTextToSpeech_GEN_DIR}/qttexttospeech_module_wrapper.cpp
+)
+
+set(QtTextToSpeech_include_dirs ${QtTextToSpeech_SOURCE_DIR}
+ ${QtTextToSpeech_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}TextToSpeech_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtTextToSpeech_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}TextToSpeech_LIBRARIES})
+
+set(QtTextToSpeech_deps QtCore QtMultimedia)
+
+create_pyside_module(NAME QtTextToSpeech
+ INCLUDE_DIRS QtTextToSpeech_include_dirs
+ LIBRARIES QtTextToSpeech_libraries
+ DEPS QtTextToSpeech_deps
+ TYPESYSTEM_PATH QtTextToSpeech_SOURCE_DIR
+ SOURCES QtTextToSpeech_SRC)
diff --git a/sources/pyside6/PySide6/QtTextToSpeech/typesystem_texttospeech.xml b/sources/pyside6/PySide6/QtTextToSpeech/typesystem_texttospeech.xml
new file mode 100644
index 000000000..70751e9d9
--- /dev/null
+++ b/sources/pyside6/PySide6/QtTextToSpeech/typesystem_texttospeech.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2017 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtTextToSpeech"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+
+ <object-type name="QTextToSpeech">
+ <enum-type name="State"/>
+ <enum-type name="BoundaryHint"/>
+ <enum-type name="ErrorReason"/>
+ <enum-type name="Capability" flags="Capabilities" since="6.6"/>
+ </object-type>
+ <object-type name="QTextToSpeechEngine"/>
+ <value-type name="QVoice">
+ <enum-type name="Gender"/>
+ <enum-type name="Age"/>
+ </value-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtUiTools/CMakeLists.txt b/sources/pyside6/PySide6/QtUiTools/CMakeLists.txt
new file mode 100644
index 000000000..e16d2d585
--- /dev/null
+++ b/sources/pyside6/PySide6/QtUiTools/CMakeLists.txt
@@ -0,0 +1,45 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtUiTools)
+
+set(QtUiTools_SRC
+${QtUiTools_GEN_DIR}/quiloader_wrapper.cpp
+# module is always needed
+${QtUiTools_GEN_DIR}/qtuitools_module_wrapper.cpp
+)
+
+set(QtUiTools_glue_sources
+ "${QtUiTools_SOURCE_DIR}/glue/plugins.h"
+)
+
+set(QtUiTools_include_dirs ${QtUiTools_SOURCE_DIR}
+ ${QtUiTools_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Xml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Designer_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}UiTools_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${plugins_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR})
+
+set(QtUiTools_libraries pyside6
+ uiplugin
+ ${Qt${QT_MAJOR_VERSION}UiTools_LIBRARIES})
+
+set(QtUiTools_deps QtWidgets)
+
+configure_file("${QtUiTools_SOURCE_DIR}/QtUiTools_global.pre.h.in"
+ "${QtUiTools_BINARY_DIR}/QtUiTools_global.pre.h" @ONLY)
+
+create_pyside_module(NAME QtUiTools
+ INCLUDE_DIRS QtUiTools_include_dirs
+ LIBRARIES QtUiTools_libraries
+ DEPS QtUiTools_deps
+ TYPESYSTEM_PATH QtUiTools_SOURCE_DIR
+ SOURCES QtUiTools_SRC
+ GLUE_SOURCES QtUiTools_glue_sources)
diff --git a/sources/pyside6/PySide6/QtUiTools/QtUiTools_global.pre.h.in b/sources/pyside6/PySide6/QtUiTools/QtUiTools_global.pre.h.in
new file mode 100644
index 000000000..addfe080f
--- /dev/null
+++ b/sources/pyside6/PySide6/QtUiTools/QtUiTools_global.pre.h.in
@@ -0,0 +1,7 @@
+// Those classes are only forward-declared in QtUiLoader
+
+#include <QtWidgets/QLayout>
+#include <QtWidgets/QWidget>
+#include <QtGui/QAction>
+#include <QtGui/QActionGroup>
+#include <QtCore/QDir>
diff --git a/sources/pyside6/PySide6/QtUiTools/glue/plugins.h b/sources/pyside6/PySide6/QtUiTools/glue/plugins.h
new file mode 100644
index 000000000..04ec149ff
--- /dev/null
+++ b/sources/pyside6/PySide6/QtUiTools/glue/plugins.h
@@ -0,0 +1,31 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef _PLUGIN_H_
+#define _PLUGIN_H_
+
+#include "customwidgets.h"
+
+#include <QtCore/qpluginloader.h>
+
+static inline PyCustomWidgets *findPlugin()
+{
+ const auto &instances = QPluginLoader::staticInstances();
+ for (QObject *o : instances) {
+ if (auto plugin = qobject_cast<PyCustomWidgets *>(o))
+ return plugin;
+ }
+ return nullptr;
+}
+
+static void registerCustomWidget(PyObject *obj)
+{
+ static PyCustomWidgets *const plugin = findPlugin();
+
+ if (plugin)
+ plugin->registerWidgetType(obj);
+ else
+ qWarning("Qt for Python: Failed to find the static QUiLoader plugin.");
+}
+
+#endif
diff --git a/sources/pyside6/PySide6/QtUiTools/typesystem_uitools.xml b/sources/pyside6/PySide6/QtUiTools/typesystem_uitools.xml
new file mode 100644
index 000000000..9cfa176c8
--- /dev/null
+++ b/sources/pyside6/PySide6/QtUiTools/typesystem_uitools.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+
+<typesystem package="PySide6.QtUiTools"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+
+ <object-type name="QUiLoader">
+ <extra-includes>
+ <include file-name="glue/plugins.h" location="local"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtuitools.cpp" snippet="uitools-loadui"/>
+ <inject-code file="../glue/qtuitools.cpp" snippet="quiloader"/>
+ <add-function signature="registerCustomWidget(PyObject*@customWidgetType@)" return-type="void">
+ <inject-documentation format="target" mode="append" file="../doc/qtuitools.rst"
+ snippet="quiloader-registercustomwidget"/>
+ <inject-code class="target" position="beginning" file="../glue/qtuitools.cpp"
+ snippet="quiloader-registercustomwidget"/>
+ </add-function>
+ <modify-function signature="createAction(QObject*,const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="1" action="add"/>
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="createActionGroup(QObject*,const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="1" action="add"/>
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="createLayout(const QString&amp;,QObject*,const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="2" action="add"/>
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="createWidget(const QString&amp;,QWidget*,const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="2" action="add"/>
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="load(QIODevice*,QWidget*)">
+ <modify-argument index="2">
+ <replace-default-expression with="0"/>
+ <rename to="parentWidget"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <define-ownership class="target" owner="target"/>
+ </modify-argument>
+ <inject-code file="../glue/qtuitools.cpp" snippet="quiloader-load-1"/>
+ </modify-function>
+
+ <!-- Syntax sugar -->
+ <add-function signature="load(PyPathLike,QWidget*@parentWidget@=nullptr)" return-type="QWidget*">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="target"/>
+ </modify-argument>
+ <inject-code file="../glue/qtuitools.cpp" snippet="quiloader-load-2"/>
+ </add-function>
+ </object-type>
+
+ <!--
+ After the removal of the 'pysideuic' Python module, many users were unable to generate and
+ load UI classes dynamically.
+ This function was created to provide an equivalent solution to the 'loadUiType' function from
+ Riverbank's PyQt.
+ -->
+ <add-function signature="loadUiType(const QString&amp; @uifile@)" return-type="PyObject*">
+ <inject-code file="../glue/qtuitools.cpp" snippet="loaduitype"/>
+ <inject-documentation format="target" mode="append" file="../doc/qtuitools.rst"
+ snippet="loaduitype"/>
+ </add-function>
+
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtWebChannel/CMakeLists.txt b/sources/pyside6/PySide6/QtWebChannel/CMakeLists.txt
new file mode 100644
index 000000000..4c06edd2f
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebChannel/CMakeLists.txt
@@ -0,0 +1,30 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtWebChannel)
+
+set(QtWebChannel_SRC
+${QtWebChannel_GEN_DIR}/qwebchannel_wrapper.cpp
+${QtWebChannel_GEN_DIR}/qwebchannelabstracttransport_wrapper.cpp
+# module is always needed
+${QtWebChannel_GEN_DIR}/qtwebchannel_module_wrapper.cpp
+)
+
+set(QtWebChannel_include_dirs ${QtWebChannel_SOURCE_DIR}
+ ${QtWebChannel_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}WebChannel_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR})
+
+set(QtWebChannel_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}WebChannel_LIBRARIES})
+
+set(QtWebChannel_deps QtCore)
+
+create_pyside_module(NAME QtWebChannel
+ INCLUDE_DIRS QtWebChannel_include_dirs
+ LIBRARIES QtWebChannel_libraries
+ DEPS QtWebChannel_deps
+ TYPESYSTEM_PATH QtWebChannel_SOURCE_DIR
+ SOURCES QtWebChannel_SRC)
diff --git a/sources/pyside6/PySide6/QtWebChannel/typesystem_webchannel.xml b/sources/pyside6/PySide6/QtWebChannel/typesystem_webchannel.xml
new file mode 100644
index 000000000..c08a9b187
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebChannel/typesystem_webchannel.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtWebChannel"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+
+ <object-type name="QWebChannel"/>
+ <object-type name="QWebChannelAbstractTransport">
+ <extra-includes>
+ <include file-name="QJsonObject" location="global"/>
+ </extra-includes>
+ </object-type>
+ <!-- Not sure if this will be useful, but commented out for now because
+ the QML module is not yet wrapped.
+ <object-type name="QQmlWebChannel"/> -->
+
+ <!-- QtQml/QtNetwork are pulled in via QtQtWebChannelDepends. -->
+ <suppress-warning text="^Scoped enum 'Q(Ocsp)|(Dtls)|(Qml).*' does not have a type entry.*$"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtWebEngineCore/CMakeLists.txt b/sources/pyside6/PySide6/QtWebEngineCore/CMakeLists.txt
new file mode 100644
index 000000000..0cdaf2f91
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebEngineCore/CMakeLists.txt
@@ -0,0 +1,75 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtWebEngineCore)
+
+set(QtWebEngineCore_SRC
+${QtWebEngineCore_GEN_DIR}/qwebenginecertificateerror_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineclientcertificateselection_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineclientcertificatestore_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginecontextmenurequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginecookiestore_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginecookiestore_filterrequest_wrapper.cpp
+# FIXME ${QtWebEngineCore_GEN_DIR}/qwebenginedesktopmediarequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginedownloadrequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginefilesystemaccessrequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginefindtextresult_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginefullscreenrequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineglobalsettings_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineglobalsettings_dnsmode_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginehistory_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginehistoryitem_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginehistorymodel_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginehttprequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginenavigationrequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineloadinginfo_wrapper.cpp
+# FIXME ${QtWebEngineCore_GEN_DIR}/qwebenginemediasourcemodel_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginenewwindowrequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginenotification_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginepage_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineprofile_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginequotarequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineregisterprotocolhandlerrequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginescript_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginescriptcollection_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginesettings_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineurlrequestinfo_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineurlrequestinterceptor_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineurlrequestjob_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineurlscheme_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebengineurlschemehandler_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginewebauthpinrequest_wrapper.cpp
+${QtWebEngineCore_GEN_DIR}/qwebenginewebauthuxrequest_wrapper.cpp
+# module is always needed
+${QtWebEngineCore_GEN_DIR}/qtwebenginecore_module_wrapper.cpp
+)
+
+set(QtWebEngineCore_include_dirs
+ ${QtWebEngineCore_SOURCE_DIR}
+ ${QtWebEngineCore_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}PrintSupport_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}WebChannel_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtPrintSupport_GEN_DIR}
+ ${QtWebChannel_GEN_DIR})
+
+set(QtWebEngineCore_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}WebEngineCore_LIBRARIES})
+
+set(QtWebEngineCore_deps QtCore QtGui QtNetwork QtPrintSupport QtWebChannel)
+
+create_pyside_module(NAME QtWebEngineCore
+ INCLUDE_DIRS QtWebEngineCore_include_dirs
+ LIBRARIES QtWebEngineCore_libraries
+ DEPS QtWebEngineCore_deps
+ TYPESYSTEM_PATH QtWebEngineCore_SOURCE_DIR
+ SOURCES QtWebEngineCore_SRC)
+
diff --git a/sources/pyside6/PySide6/QtWebEngineCore/typesystem_webenginecore.xml b/sources/pyside6/PySide6/QtWebEngineCore/typesystem_webenginecore.xml
new file mode 100644
index 000000000..da9259ccc
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebEngineCore/typesystem_webenginecore.xml
@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtWebEngineCore"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+ <load-typesystem name="QtPrintSupport/typesystem_printsupport.xml" generate="no"/>
+ <load-typesystem name="QtWebChannel/typesystem_webchannel.xml" generate="no"/>
+
+ <rejection class="extensions"/>
+
+ <function signature="qWebEngineChromiumVersion()"/>
+ <function signature="qWebEngineChromiumSecurityPatchVersion()"/>
+ <function signature="qWebEngineVersion()"/>
+
+ <value-type name="QWebEngineClientCertificateSelection"/>
+ <object-type name="QWebEngineClientCertificateStore"/>
+
+ <object-type name="QWebEngineCookieStore">
+ <inject-code class="native" position="beginning" file="../glue/qtwebenginecore.cpp"
+ snippet="qwebenginecookiestore-functor"/>
+ <value-type name="FilterRequest" />
+ <add-function signature="setCookieFilter(PyCallable* @filterCallback@)">
+ <inject-code class="target" position="beginning" file="../glue/qtwebenginecore.cpp"
+ snippet="qwebenginecookiestore-setcookiefilter"/>
+ </add-function>
+ </object-type>
+
+ <value-type name="QWebEngineCertificateError">
+ <enum-type name="Type"/>
+ </value-type>
+
+ <object-type name="QWebEngineContextMenuRequest">
+ <enum-type name="EditFlag" flags="EditFlags"/>
+ <enum-type name="MediaFlag" flags="MediaFlags"/>
+ <enum-type name="MediaType"/>
+ </object-type>
+
+ <object-type name="QWebEngineDownloadRequest">
+ <enum-type name="DownloadInterruptReason"/>
+ <enum-type name="DownloadState"/>
+ <enum-type name="SavePageFormat"/>
+ </object-type>
+
+ <value-type name="QWebEngineFileSystemAccessRequest">
+ <enum-type name="AccessFlag" flags="AccessFlags"/>
+ <enum-type name="HandleType"/>
+ <!-- No default constructor -->
+ <modify-function signature="swap(QWebEngineFileSystemAccessRequest&amp;)" remove="all"/>
+ </value-type>
+
+ <value-type name="QWebEngineFullScreenRequest"/>
+
+ <object-type name="QWebEngineHistory"/>
+ <value-type name="QWebEngineHistoryItem">
+ <!-- No default constructor -->
+ <modify-function signature="swap(QWebEngineHistoryItem&amp;)" remove="all"/>
+ </value-type>
+ <object-type name="QWebEngineHistoryModel">
+ <enum-type name="Roles"/>
+ </object-type>
+
+ <object-type name="QWebEngineNavigationRequest">
+ <enum-type name="NavigationType"/>
+ <enum-type name="NavigationRequestAction"/>
+ </object-type>
+
+ <object-type name="QWebEngineNotification"/>
+
+ <object-type name="QWebEnginePage">
+ <enum-type name="LifecycleState"/>
+ <enum-type name="WebAction"/>
+ <enum-type name="FindFlag" flags="FindFlags"/>
+ <enum-type name="WebWindowType"/>
+ <enum-type name="PermissionPolicy"/>
+ <enum-type name="NavigationType"/>
+ <enum-type name="Feature"/>
+ <enum-type name="FileSelectionMode"/>
+ <enum-type name="JavaScriptConsoleMessageLevel"/>
+ <enum-type name="RenderProcessTerminationStatus"/>
+ <add-function signature="javaScriptPromptPyOverride(QUrl@securityOrigin@,QString@msg@,QString@defaultValue@)"
+ return-type="std::pair&lt;bool,QString&gt;" python-override="true"/>
+ <modify-function signature="javaScriptPrompt(QUrl,QString,QString,QString*)">
+ <inject-code class="shell" position="override" file="../glue/qtwebenginecore.cpp"
+ snippet="qwebenginepage-javascriptprompt-virtual-redirect"/>
+ <modify-argument index="return" pyi-type="Tuple[bool, str]"/>
+ <modify-argument index="4"><remove-default-expression/><remove-argument/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwebenginecore.cpp"
+ snippet="qwebenginepage-javascriptprompt-return"/>
+ </modify-function>
+ <add-function signature="findText(const QString &amp;,QWebEnginePage::FindFlags,PyObject*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwebenginewidgets.cpp" snippet="qwebenginepage-findtext"/>
+ </add-function>
+ <add-function signature="toPlainText(PyObject*) const">
+ <inject-code class="target" position="beginning" file="../glue/qtwebenginewidgets.cpp" snippet="qwebenginepage-convertto"/>
+ </add-function>
+ <add-function signature="toHtml(PyObject*) const">
+ <inject-code class="target" position="beginning" file="../glue/qtwebenginewidgets.cpp" snippet="qwebenginepage-convertto"/>
+ </add-function>
+ <add-function signature="runJavaScript(const QString &amp;,quint32,PyObject*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwebenginewidgets.cpp" snippet="qwebenginepage-runjavascript"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QWebEngineProfile">
+ <extra-includes>
+ <include file-name="QtWebEngineCore/QWebEngineNotification" location="global"/>
+ </extra-includes>
+ <inject-code class="native" position="beginning" file="../glue/qtwebenginecore.cpp"
+ snippet="qwebengineprofile-functor"/>
+ <enum-type name="HttpCacheType"/>
+ <enum-type name="PersistentCookiesPolicy"/>
+ <add-function signature="setNotificationPresenter(PyCallable* @notificationPresenter@)">
+ <inject-code class="target" position="beginning" file="../glue/qtwebenginecore.cpp" snippet="qwebengineprofile-setnotificationpresenter"/>
+ </add-function>
+ </object-type>
+
+ <object-type name="QWebEngineNewWindowRequest">
+ <enum-type name="DestinationType"/>
+ </object-type>
+
+ <value-type name="QWebEngineScript">
+ <enum-type name="InjectionPoint"/>
+ <enum-type name="ScriptWorldId" python-type="IntEnum"/>
+ </value-type>
+
+ <object-type name="QWebEngineScriptCollection"/>
+
+ <object-type name="QWebEngineSettings">
+ <enum-type name="FontFamily"/>
+ <enum-type name="FontSize"/>
+ <enum-type name="UnknownUrlSchemePolicy"/>
+ <enum-type name="WebAttribute"/>
+ </object-type>
+
+ <object-type name="QWebEngineHttpRequest">
+ <enum-type name="Method"/>
+ </object-type>
+
+ <value-type name="QWebEngineLoadingInfo">
+ <enum-type name="ErrorDomain"/>
+ <enum-type name="LoadStatus"/>
+ </value-type>
+
+ <value-type name="QWebEngineRegisterProtocolHandlerRequest"/>
+
+ <value-type name="QWebEngineFindTextResult"/>
+
+ <object-type name="QWebEngineQuotaRequest"/>
+
+ <object-type name="QWebEngineUrlRequestInfo">
+ <enum-type name="NavigationType"/>
+ <enum-type name="ResourceType"/>
+ </object-type>
+
+ <object-type name="QWebEngineUrlRequestInterceptor"/>
+
+ <object-type name="QWebEngineUrlRequestJob">
+ <enum-type name="Error"/>
+ </object-type>
+ <value-type name="QWebEngineUrlScheme">
+ <enum-type name="Syntax"/>
+ <enum-type name="SpecialPort"/>
+ <enum-type name="Flag" flags="Flags"/>
+ </value-type>
+
+ <object-type name="QWebEngineUrlSchemeHandler"/>
+
+ <!-- FIXME not in snapshot yet
+ <value-type name="QWebEngineDesktopMediaRequest" since="6.7"/>
+ <object-type name="QWebEngineMediaSourceModel" since="6.7"/>
+ -->
+ <value-type name="QWebEngineWebAuthPinRequest" since="6.7"/>
+ <object-type name="QWebEngineWebAuthUxRequest" since="6.7">
+ <enum-type name="WebAuthUxState"/>
+ <enum-type name="PinEntryReason"/>
+ <enum-type name="PinEntryError"/>
+ <enum-type name="RequestFailureReason"/>
+ </object-type>
+ <namespace-type name="QWebEngineGlobalSettings">
+ <enum-type name="SecureDnsMode"/>
+ <value-type name="DnsMode"/>
+ </namespace-type>
+
+ <!-- QtQml is pulled in via QtWebEngineCoreDepends. -->
+ <suppress-warning text="^Scoped enum 'QQml.*' does not have a type entry.*$"/>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtWebEngineQuick/CMakeLists.txt b/sources/pyside6/PySide6/QtWebEngineQuick/CMakeLists.txt
new file mode 100644
index 000000000..d87dc55a4
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebEngineQuick/CMakeLists.txt
@@ -0,0 +1,43 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtWebEngineQuick)
+
+set(QtWebEngineQuick_SRC
+${QtWebEngineQuick_GEN_DIR}/qquickwebengineprofile_wrapper.cpp
+${QtWebEngineQuick_GEN_DIR}/qtwebenginequick_wrapper.cpp
+# module is always needed
+${QtWebEngineQuick_GEN_DIR}/qtwebenginequick_module_wrapper.cpp
+)
+
+set(QtWebEngineQuick_include_dirs
+ ${QtWebEngineQuick_SOURCE_DIR}
+ ${QtWebEngineQuick_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}PrintSupport_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Qml_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}WebChannel_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtWebEngineCore_GEN_DIR}
+ ${QtPrintSupport_GEN_DIR}
+ ${QtQml_GEN_DIR}
+ ${QtWebChannel_GEN_DIR})
+
+set(QtWebEngineQuick_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}WebEngineQuick_LIBRARIES})
+
+set(QtWebEngineQuick_deps QtQml QtWebEngineCore)
+
+create_pyside_module(NAME QtWebEngineQuick
+ INCLUDE_DIRS QtWebEngineQuick_include_dirs
+ LIBRARIES QtWebEngineQuick_libraries
+ DEPS QtWebEngineQuick_deps
+ TYPESYSTEM_PATH QtWebEngineQuick_SOURCE_DIR
+ SOURCES QtWebEngineQuick_SRC)
diff --git a/sources/pyside6/PySide6/QtWebEngineQuick/typesystem_webenginequick.xml b/sources/pyside6/PySide6/QtWebEngineQuick/typesystem_webenginequick.xml
new file mode 100644
index 000000000..2e7d22334
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebEngineQuick/typesystem_webenginequick.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtWebEngineQuick"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtQml/typesystem_qml.xml" generate="no"/>
+ <load-typesystem name="QtWebEngineCore/typesystem_webenginecore.xml" generate="no"/>
+
+ <namespace-type name="QtWebEngineQuick"/> <!-- initialize() -->
+
+ <object-type name="QQuickWebEngineProfile">
+ <enum-type name="HttpCacheType"/>
+ <enum-type name="PersistentCookiesPolicy"/>
+ </object-type>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtWebEngineWidgets/CMakeLists.txt b/sources/pyside6/PySide6/QtWebEngineWidgets/CMakeLists.txt
new file mode 100644
index 000000000..9da97243c
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebEngineWidgets/CMakeLists.txt
@@ -0,0 +1,45 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtWebEngineWidgets)
+
+set(QtWebEngineWidgets_SRC
+${QtWebEngineWidgets_GEN_DIR}/qwebengineview_wrapper.cpp
+# module is always needed
+${QtWebEngineWidgets_GEN_DIR}/qtwebenginewidgets_module_wrapper.cpp
+)
+
+set(QtWebEngineWidgets_include_dirs
+ ${QtWebEngineWidgets_SOURCE_DIR}
+ ${QtWebEngineWidgets_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}PrintSupport_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}WebEngineWidgets_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}WebChannel_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR}
+ ${QtWidgets_GEN_DIR}
+ ${QtWebEngineWidgets_GEN_DIR}
+ ${QtNetwork_GEN_DIR}
+ ${QtWebEngineCore_GEN_DIR}
+ ${QtPrintSupport_GEN_DIR}
+ ${QtWebChannel_GEN_DIR})
+
+set(QtWebEngineWidgets_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}WebEngineWidgets_LIBRARIES})
+
+set(QtWebEngineWidgets_deps QtGui QtWidgets QtNetwork QtPrintSupport QtWebChannel QtWebEngineCore)
+
+create_pyside_module(NAME QtWebEngineWidgets
+ INCLUDE_DIRS QtWebEngineWidgets_include_dirs
+ LIBRARIES QtWebEngineWidgets_libraries
+ DEPS QtWebEngineWidgets_deps
+ TYPESYSTEM_PATH QtWebEngineWidgets_SOURCE_DIR
+ SOURCES QtWebEngineWidgets_SRC)
+
+
+
diff --git a/sources/pyside6/PySide6/QtWebEngineWidgets/typesystem_webenginewidgets.xml b/sources/pyside6/PySide6/QtWebEngineWidgets/typesystem_webenginewidgets.xml
new file mode 100644
index 000000000..61874856b
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebEngineWidgets/typesystem_webenginewidgets.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtWebEngineWidgets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtWidgets/typesystem_widgets.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+ <load-typesystem name="QtWebEngineCore/typesystem_webenginecore.xml" generate="no"/>
+ <load-typesystem name="QtPrintSupport/typesystem_printsupport.xml" generate="no"/>
+
+ <object-type name="QWebEngineView">
+ <add-function signature="findText(const QString &amp;,QWebEnginePage::FindFlags,PyObject*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwebenginewidgets.cpp" snippet="qwebenginepage-findtext"/>
+ </add-function>
+ </object-type>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtWebSockets/CMakeLists.txt b/sources/pyside6/PySide6/QtWebSockets/CMakeLists.txt
new file mode 100644
index 000000000..5ff07555b
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebSockets/CMakeLists.txt
@@ -0,0 +1,37 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtWebSockets)
+
+set(QtWebSockets_SRC
+${QtWebSockets_GEN_DIR}/qmaskgenerator_wrapper.cpp
+${QtWebSockets_GEN_DIR}/qwebsocket_wrapper.cpp
+${QtWebSockets_GEN_DIR}/qwebsocketcorsauthenticator_wrapper.cpp
+${QtWebSockets_GEN_DIR}/qwebsockethandshakeoptions_wrapper.cpp
+${QtWebSockets_GEN_DIR}/qwebsocketprotocol_wrapper.cpp
+${QtWebSockets_GEN_DIR}/qwebsocketserver_wrapper.cpp
+# module is always needed
+${QtWebSockets_GEN_DIR}/qtwebsockets_module_wrapper.cpp
+)
+
+set(QtWebSockets_include_dirs ${QtWebSockets_SOURCE_DIR}
+ ${QtWebSockets_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Network_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}WebSockets_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtWebSockets_GEN_DIR}
+ ${QtNetwork_GEN_DIR})
+
+set(QtWebSockets_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}WebSockets_LIBRARIES})
+
+set(QtWebSockets_deps QtNetwork)
+
+create_pyside_module(NAME QtWebSockets
+ INCLUDE_DIRS QtWebSockets_include_dirs
+ LIBRARIES QtWebSockets_libraries
+ DEPS QtWebSockets_deps
+ TYPESYSTEM_PATH QtWebSockets_SOURCE_DIR
+ SOURCES QtWebSockets_SRC)
diff --git a/sources/pyside6/PySide6/QtWebSockets/typesystem_websockets.xml b/sources/pyside6/PySide6/QtWebSockets/typesystem_websockets.xml
new file mode 100644
index 000000000..2d8d95898
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWebSockets/typesystem_websockets.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtWebSockets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no"/>
+ <load-typesystem name="QtNetwork/typesystem_network.xml" generate="no"/>
+
+ <object-type name="QMaskGenerator"/>
+
+ <object-type name="QWebSocket">
+ <extra-includes>
+ <include file-name="QTcpSocket" location="global"/>
+ </extra-includes>
+ </object-type>
+
+ <object-type name="QWebSocketCorsAuthenticator"/>
+
+ <value-type name="QWebSocketHandshakeOptions" since="6.4"/>
+
+ <namespace-type name="QWebSocketProtocol">
+ <enum-type name="Version"/>
+ <enum-type name="CloseCode"/>
+ </namespace-type>
+
+ <object-type name="QWebSocketServer">
+ <enum-type name="SslMode"/>
+ <extra-includes>
+ <include file-name="QWebSocketCorsAuthenticator" location="global"/>
+ </extra-includes>
+ </object-type>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtWidgets/CMakeLists.txt b/sources/pyside6/PySide6/QtWidgets/CMakeLists.txt
new file mode 100644
index 000000000..1a77181f2
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWidgets/CMakeLists.txt
@@ -0,0 +1,226 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtWidgets)
+
+set(QtWidgets_SRC
+${QtWidgets_GEN_DIR}/qaccessiblewidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qabstractbutton_wrapper.cpp
+${QtWidgets_GEN_DIR}/qabstractgraphicsshapeitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qabstractitemdelegate_wrapper.cpp
+${QtWidgets_GEN_DIR}/qabstractitemview_wrapper.cpp
+${QtWidgets_GEN_DIR}/qabstractscrollarea_wrapper.cpp
+${QtWidgets_GEN_DIR}/qabstractslider_wrapper.cpp
+${QtWidgets_GEN_DIR}/qabstractspinbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qapplication_wrapper.cpp
+${QtWidgets_GEN_DIR}/qboxlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qbuttongroup_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcalendarwidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcheckbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcolordialog_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcolormap_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcolumnview_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcombobox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcommandlinkbutton_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcommonstyle_wrapper.cpp
+${QtWidgets_GEN_DIR}/qcompleter_wrapper.cpp
+${QtWidgets_GEN_DIR}/qdatawidgetmapper_wrapper.cpp
+${QtWidgets_GEN_DIR}/qdateedit_wrapper.cpp
+${QtWidgets_GEN_DIR}/qdatetimeedit_wrapper.cpp
+${QtWidgets_GEN_DIR}/qdial_wrapper.cpp
+${QtWidgets_GEN_DIR}/qdialog_wrapper.cpp
+${QtWidgets_GEN_DIR}/qdialogbuttonbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qdockwidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qdoublespinbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qerrormessage_wrapper.cpp
+${QtWidgets_GEN_DIR}/qfiledialog_wrapper.cpp
+${QtWidgets_GEN_DIR}/qfileiconprovider_wrapper.cpp
+${QtWidgets_GEN_DIR}/qfilesystemmodel_wrapper.cpp
+${QtWidgets_GEN_DIR}/qfocusframe_wrapper.cpp
+${QtWidgets_GEN_DIR}/qfontcombobox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qfontdialog_wrapper.cpp
+${QtWidgets_GEN_DIR}/qformlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qformlayout_takerowresult_wrapper.cpp
+${QtWidgets_GEN_DIR}/qframe_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgesture_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgestureevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgesturerecognizer_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsanchor_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsanchorlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsblureffect_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicscolorizeeffect_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsdropshadoweffect_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicseffect_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsellipseitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsgridlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsitemanimation_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsitemgroup_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicslayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicslayoutitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicslinearlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicslineitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsobject_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsopacityeffect_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicspathitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicspixmapitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicspolygonitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsproxywidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsrectitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsrotation_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscale_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscene_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscenecontextmenuevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscenedragdropevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicssceneevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscenehelpevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscenehoverevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscenemouseevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscenemoveevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicssceneresizeevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsscenewheelevent_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicssimpletextitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicstextitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicstransform_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicsview_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgraphicswidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgridlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qgroupbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qhboxlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qheaderview_wrapper.cpp
+${QtWidgets_GEN_DIR}/qinputdialog_wrapper.cpp
+${QtWidgets_GEN_DIR}/qitemdelegate_wrapper.cpp
+${QtWidgets_GEN_DIR}/qitemeditorcreatorbase_wrapper.cpp
+${QtWidgets_GEN_DIR}/qitemeditorfactory_wrapper.cpp
+${QtWidgets_GEN_DIR}/qkeysequenceedit_wrapper.cpp
+${QtWidgets_GEN_DIR}/qlabel_wrapper.cpp
+${QtWidgets_GEN_DIR}/qlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qlayoutitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qlcdnumber_wrapper.cpp
+${QtWidgets_GEN_DIR}/qlineedit_wrapper.cpp
+${QtWidgets_GEN_DIR}/qlistview_wrapper.cpp
+${QtWidgets_GEN_DIR}/qlistwidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qlistwidgetitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qmainwindow_wrapper.cpp
+${QtWidgets_GEN_DIR}/qmdiarea_wrapper.cpp
+${QtWidgets_GEN_DIR}/qmdisubwindow_wrapper.cpp
+${QtWidgets_GEN_DIR}/qmenu_wrapper.cpp
+${QtWidgets_GEN_DIR}/qmenubar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qmessagebox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qpangesture_wrapper.cpp
+${QtWidgets_GEN_DIR}/qpinchgesture_wrapper.cpp
+${QtWidgets_GEN_DIR}/qplaintextdocumentlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qplaintextedit_wrapper.cpp
+${QtWidgets_GEN_DIR}/qprogressbar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qprogressdialog_wrapper.cpp
+${QtWidgets_GEN_DIR}/qproxystyle_wrapper.cpp
+${QtWidgets_GEN_DIR}/qpushbutton_wrapper.cpp
+${QtWidgets_GEN_DIR}/qradiobutton_wrapper.cpp
+${QtWidgets_GEN_DIR}/qrhiwidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qrubberband_wrapper.cpp
+${QtWidgets_GEN_DIR}/qscrollarea_wrapper.cpp
+${QtWidgets_GEN_DIR}/qscrollbar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qscroller_wrapper.cpp
+${QtWidgets_GEN_DIR}/qscrollerproperties_wrapper.cpp
+${QtWidgets_GEN_DIR}/qsizegrip_wrapper.cpp
+${QtWidgets_GEN_DIR}/qsizepolicy_wrapper.cpp
+${QtWidgets_GEN_DIR}/qslider_wrapper.cpp
+${QtWidgets_GEN_DIR}/qspaceritem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qspinbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qsplashscreen_wrapper.cpp
+${QtWidgets_GEN_DIR}/qsplitter_wrapper.cpp
+${QtWidgets_GEN_DIR}/qsplitterhandle_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstackedlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstackedwidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstatusbar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyle_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleditemdelegate_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstylefactory_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstylehintreturn_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstylehintreturnmask_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstylehintreturnvariant_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoption_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionbutton_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptioncombobox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptioncomplex_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiondockwidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionfocusrect_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionframe_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiongraphicsitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiongroupbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionheader_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionheaderv2_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionmenuitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionprogressbar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionrubberband_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionsizegrip_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionslider_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionspinbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiontab_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiontabbarbase_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiontabwidgetframe_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiontitlebar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiontoolbar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiontoolbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptiontoolbutton_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstyleoptionviewitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qstylepainter_wrapper.cpp
+${QtWidgets_GEN_DIR}/qswipegesture_wrapper.cpp
+${QtWidgets_GEN_DIR}/qsystemtrayicon_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtabbar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtableview_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtablewidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtablewidgetitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtablewidgetselectionrange_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtabwidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtapandholdgesture_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtapgesture_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtextbrowser_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtextedit_extraselection_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtextedit_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtilerules_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtimeedit_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtoolbar_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtoolbox_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtoolbutton_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtooltip_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtreeview_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtreewidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtreewidgetitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qtreewidgetitemiterator_wrapper.cpp
+${QtWidgets_GEN_DIR}/qundoview_wrapper.cpp
+${QtWidgets_GEN_DIR}/qvboxlayout_wrapper.cpp
+${QtWidgets_GEN_DIR}/qwhatsthis_wrapper.cpp
+${QtWidgets_GEN_DIR}/qwidget_wrapper.cpp
+${QtWidgets_GEN_DIR}/qwidgetaction_wrapper.cpp
+${QtWidgets_GEN_DIR}/qwidgetitem_wrapper.cpp
+${QtWidgets_GEN_DIR}/qwizard_wrapper.cpp
+${QtWidgets_GEN_DIR}/qwizardpage_wrapper.cpp
+
+${SPECIFIC_OS_FILES}
+# module is always needed
+${QtWidgets_GEN_DIR}/qtwidgets_module_wrapper.cpp
+)
+
+set(QtWidgets_include_dirs ${QtWidgets_SOURCE_DIR}
+ ${QtWidgets_BINARY_DIR}
+ ${pyside6_SOURCE_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Gui_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Widgets_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ ${QtGui_GEN_DIR})
+
+set(QtWidgets_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Widgets_LIBRARIES})
+
+set(QtWidgets_deps QtGui)
+
+create_pyside_module(NAME QtWidgets
+ INCLUDE_DIRS QtWidgets_include_dirs
+ LIBRARIES QtWidgets_libraries
+ DEPS QtWidgets_deps
+ TYPESYSTEM_PATH QtWidgets_SOURCE_DIR
+ SOURCES QtWidgets_SRC
+ TYPESYSTEM_NAME ${QtWidgets_BINARY_DIR}/typesystem_widgets.xml)
diff --git a/sources/pyside6/PySide6/QtWidgets/typesystem_widgets.xml b/sources/pyside6/PySide6/QtWidgets/typesystem_widgets.xml
new file mode 100644
index 000000000..93a7151fc
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWidgets/typesystem_widgets.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtWidgets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtGui/typesystem_gui.xml" generate="no"/>
+ <load-typesystem name="QtWidgets/typesystem_widgets_common.xml" generate="yes"/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml b/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml
new file mode 100644
index 000000000..b1188a514
--- /dev/null
+++ b/sources/pyside6/PySide6/QtWidgets/typesystem_widgets_common.xml
@@ -0,0 +1,3420 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtWidgets"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="templates/core_common.xml" generate="no"/>
+ <load-typesystem name="templates/widgets_common.xml" generate="no"/>
+
+
+
+ <!-- Qt5: Beware forgetting the following rejection!
+ There are anonymous enums "enum { Type = 1 }" etc. in these QGraphics classes, but they
+ don't show up as "enum_1", but pretend they were a real enum field, not a value.
+
+ """
+ Generating class model... [WARNING]
+ enum 'QGraphicsItem::UserType' does not have a type entry or is not an enum
+ enum 'QGraphicsWidget::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsProxyWidget::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsEllipseItem::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsPixmapItem::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsSimpleTextItem::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsTextItem::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsItemGroup::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsRectItem::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsLineItem::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsPathItem::Type' does not have a type entry or is not an enum
+ enum 'QGraphicsPolygonItem::Type' does not have a type entry or is not an enum
+ """
+ -->
+ <rejection class="QMdi"/>
+
+ <function signature="qDrawShadeLine(QPainter*,int,int,int,int,const QPalette&amp;,bool,int,int)"/>
+ <function signature="qDrawShadeLine(QPainter*,const QPoint,const QPoint,const QPalette&amp;,bool,int,int)"/>
+ <function signature="qDrawShadeRect(QPainter*,int,int,int,int,const QPalette&amp;,bool,int,int,const QBrush*)"/>
+ <function signature="qDrawShadeRect(QPainter*,const QRect &amp;,const QPalette&amp;,bool,int,int,const QBrush*)"/>
+ <function signature="qDrawShadePanel(QPainter*,int,int,int,int,const QPalette&amp;,bool,int,const QBrush*)"/>
+ <function signature="qDrawShadePanel(QPainter*,const QRect&amp;,const QPalette&amp;,bool,int,const QBrush*)"/>
+ <function signature="qDrawWinButton(QPainter*,int,int,int,int,const QPalette&amp;,bool,const QBrush*)"/>
+ <function signature="qDrawWinButton(QPainter*,const QRect&amp;,const QPalette&amp;,bool,const QBrush*)"/>
+ <function signature="qDrawWinPanel(QPainter*,int,int,int,int,const QPalette&amp;,bool,const QBrush*)"/>
+ <function signature="qDrawWinPanel(QPainter*,const QRect&amp;,const QPalette&amp;,bool,const QBrush*)"/>
+ <function signature="qDrawPlainRect(QPainter*,int,int,int,int,const QColor&amp;,int,const QBrush*)"/>
+ <function signature="qDrawPlainRect(QPainter*,const QRect&amp;,const QColor&amp;,int,const QBrush*)"/>
+ <function signature="qDrawPlainRoundedRect(QPainter*,int,int,int,int,qreal,qreal,const QColor&amp;,int,const QBrush*)" since="6.7"/>
+ <function signature="qDrawPlainRoundedRect(QPainter*,const QRect&amp;,qreal,qreal,const QColor&amp;,int,const QBrush *)" since="6.7"/>
+
+ <object-type name="QStyleOption" polymorphic-id-expression="%B-&gt;type == QStyleOption::SO_Default"
+ polymorphic-name-function="styleOptionType">
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp"
+ snippet="qstyleoption-typename"/>
+ <enum-type name="OptionType"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionGraphicsItem"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionGraphicsItem *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionSizeGrip"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionSizeGrip *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionButton"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionButton *&gt;(%B) != nullptr">
+ <enum-type name="ButtonFeature" flags="ButtonFeatures"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionComboBox"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionComboBox *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionComplex"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionComplex *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionDockWidget"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionDockWidget *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionFocusRect" polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionFocusRect *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionFrame"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionFrame *&gt;(%B) != nullptr">
+ <enum-type name="FrameFeature" flags="FrameFeatures"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionGroupBox"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionGroupBox *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionHeader"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionHeader *&gt;(%B) != nullptr">
+ <enum-type name="SectionPosition"/>
+ <enum-type name="SelectedPosition"/>
+ <enum-type name="SortIndicator"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionHeaderV2">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionMenuItem"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionMenuItem *&gt;(%B) != nullptr">
+ <enum-type name="CheckType"/>
+ <enum-type name="MenuItemType"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionProgressBar"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionProgressBar *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionRubberBand"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionRubberBand *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionSlider"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionSlider *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionSpinBox"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionSpinBox *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionTab"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionTab *&gt;(%B) != nullptr">
+ <enum-type name="CornerWidget" flags="CornerWidgets"/>
+ <enum-type name="SelectedPosition"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ <enum-type name="TabFeature" flags="TabFeatures"/>
+ <enum-type name="TabPosition"/>
+ </object-type>
+ <object-type name="QStyleOptionTabBarBase"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionTabBarBase *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionTabWidgetFrame"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionTabWidgetFrame *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionTitleBar" polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionTitleBar *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleOptionToolBar"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionToolBar *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ <enum-type name="ToolBarFeature" flags="ToolBarFeatures"/>
+ <enum-type name="ToolBarPosition"/>
+ </object-type>
+ <object-type name="QStyleOptionToolBox"
+ polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionToolBox *&gt;(%B) != nullptr">
+ <enum-type name="SelectedPosition"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ <enum-type name="TabPosition"/>
+ </object-type>
+ <object-type name="QStyleOptionToolButton" polymorphic-id-expression="qstyleoption_cast&lt;const QStyleOptionToolButton *&gt;(%B) != nullptr">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ <enum-type name="ToolButtonFeature" flags="ToolButtonFeatures"/>
+ </object-type>
+ <value-type name="QStyleOptionViewItem"
+ polymorphic-id-expression="%B-&gt;type == QStyleOptionViewItem::Type &amp;&amp; %B-&gt;version == QStyleOptionViewItem::Version">
+ <enum-type name="Position"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ <enum-type name="ViewItemFeature" flags="ViewItemFeatures"/>
+ <enum-type name="ViewItemPosition"/>
+ </value-type>
+
+ <object-type name="QAccessibleWidget"/>
+ <value-type name="QColormap">
+ <enum-type name="Mode"/>
+ </value-type>
+ <value-type name="QSizePolicy">
+ <enum-type name="ControlType" flags="ControlTypes"/>
+ <enum-type name="Policy"/>
+ <enum-type name="PolicyFlag" python-type="IntFlag"/>
+ </value-type>
+ <value-type name="QTableWidgetSelectionRange"/>
+
+ <value-type name="QTreeWidgetItemIterator" >
+ <modify-function signature="QTreeWidgetItemIterator(QTreeWidget*,QFlags&lt;QTreeWidgetItemIterator::IteratorFlag&gt;)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <add-function signature="__iter__()" return-type="PyObject*">
+ <inject-code class="target" position="beginning">
+ <insert-template name="__iter__"/>
+ </inject-code>
+ </add-function>
+ <add-function signature="__next__()" return-type="PyObject*">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qtreewidgetitemiterator-next"/>
+ </add-function>
+
+ <add-function signature="value()" return-type="QTreeWidgetItem*">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qtreewidgetitemiterator-value"/>
+ </add-function>
+ <enum-type name="IteratorFlag" flags="IteratorFlags"/>
+ <!-- ### See bug 778 -->
+ <modify-function signature="operator++(int)" remove="all"/>
+ <modify-function signature="operator--(int)" remove="all"/>
+ <modify-function signature="operator++()" remove="all"/>
+ <modify-function signature="operator--()" remove="all"/>
+ <!-- ### Operator* doesn't make sense in Python. -->
+ <modify-function signature="operator*()const" remove="all"/>
+ <!-- ### -->
+ </value-type>
+
+ <object-type name="QLayoutItem">
+
+ <modify-function signature="widget()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="layout()">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="spacerItem()">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <!-- Register Qt meta type only for base class QGraphicsItem as registering
+ QGraphicsItemGroup* breaks QGraphicsItem::itemChange()), PYSIDE-1887 -->
+ <object-type name="QGraphicsItem" qt-register-metatype="base" parent-management="true">
+ <enum-type name="CacheMode"/>
+ <enum-type name="Extension"/>
+ <enum-type name="GraphicsItemChange"/>
+ <enum-type name="GraphicsItemFlag" flags="GraphicsItemFlags"/>
+ <enum-type name="PanelModality" since="4.6"/>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qgraphicsitem"/>
+ <modify-function signature="setParentItem(QGraphicsItem*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="scene()const">
+ <inject-code position="end" file="../glue/qtwidgets.cpp" snippet="qgraphicsitem-scene-return-parenting"/>
+ <modify-argument index="this">
+ <parent index="return" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="parentItem()const">
+ <modify-argument index="return">
+ <define-ownership owner="target"/>
+ </modify-argument>
+ <modify-argument index="this">
+ <parent index="return" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="parentWidget()const">
+ <modify-argument index="this">
+ <parent index="return" action="add"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="paint(QPainter*,const QStyleOptionGraphicsItem*,QWidget*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="collidesWithItem(const QGraphicsItem*,Qt::ItemSelectionMode)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="contextMenuEvent(QGraphicsSceneContextMenuEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="dragEnterEvent(QGraphicsSceneDragDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="dragLeaveEvent(QGraphicsSceneDragDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="dragMoveEvent(QGraphicsSceneDragDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="dropEvent(QGraphicsSceneDragDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="focusInEvent(QFocusEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="focusOutEvent(QFocusEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="hoverEnterEvent(QGraphicsSceneHoverEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="hoverLeaveEvent(QGraphicsSceneHoverEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="hoverMoveEvent(QGraphicsSceneHoverEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="inputMethodEvent(QInputMethodEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="isBlockedByModalPanel(QGraphicsItem**)const" since="4.6">
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, PySide6.QtWidgets.QGraphicsItem]">
+ <replace-type modified-type="(retval, blockingPanel)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qgraphicsitem-isblockedbymodalpanel"/>
+ </modify-function>
+ <modify-function signature="itemTransform(const QGraphicsItem*,bool*)const">
+ <modify-argument index="2">
+ <remove-argument />
+ <remove-default-expression />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[PySide6.QtGui.QTransform, bool]">
+ <replace-type modified-type="(QTransform, bool ok)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,bool*"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="isObscuredBy(const QGraphicsItem*)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="keyPressEvent(QKeyEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="keyReleaseEvent(QKeyEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="mouseDoubleClickEvent(QGraphicsSceneMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="mouseMoveEvent(QGraphicsSceneMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="mousePressEvent(QGraphicsSceneMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="mouseReleaseEvent(QGraphicsSceneMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="sceneEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="sceneEventFilter(QGraphicsItem*,QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ <modify-argument index="2" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="wheelEvent(QGraphicsSceneWheelEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="setGraphicsEffect(QGraphicsEffect*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <!-- ### These methods are internal on Qt. -->
+ <modify-function signature="supportsExtension(QGraphicsItem::Extension)const" remove="all"/>
+ <modify-function signature="setExtension(QGraphicsItem::Extension,QVariant)" remove="all"/>
+ <!-- ### -->
+ </object-type>
+ <object-type name="QAbstractGraphicsShapeItem"/>
+ <object-type name="QAbstractItemView">
+ <enum-type name="CursorAction"/>
+ <enum-type name="DragDropMode"/>
+ <enum-type name="DropIndicatorPosition"/>
+ <enum-type name="EditTrigger" flags="EditTriggers"/>
+ <enum-type name="ScrollHint"/>
+ <enum-type name="ScrollMode"/>
+ <enum-type name="SelectionBehavior"/>
+ <enum-type name="SelectionMode"/>
+ <enum-type name="State"/>
+ <modify-function signature="setModel(QAbstractItemModel*)">
+ <modify-argument index="1" pyi-type="Optional[PySide6.QtCore.QAbstractItemModel]">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setSelectionModel(QItemSelectionModel*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemDelegate(QAbstractItemDelegate*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemDelegateForColumn(int,QAbstractItemDelegate*)">
+ <modify-argument index="2">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemDelegateForRow(int,QAbstractItemDelegate*)">
+ <modify-argument index="2">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="model()const">
+ <modify-argument index="return">
+ <!-- Defining ownership as "default" avoids the object to be automatically
+ set as parent of the returned pointer. -->
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="selectionModel()const">
+ <modify-argument index="return">
+ <!-- Defining ownership as "default" avoids the object to be automatically
+ set as parent of the returned pointer. -->
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setIndexWidget(const QModelIndex &amp;,QWidget*)" allow-thread="yes">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="edit(QModelIndex,QAbstractItemView::EditTrigger,QEvent*)">
+ <modify-argument index="3" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="selectionCommand(QModelIndex,const QEvent*)const">
+ <modify-argument index="2" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QAbstractSlider">
+ <enum-type name="SliderAction"/>
+ <enum-type name="SliderChange"/>
+ </object-type>
+ <object-type name="QCheckBox"/>
+ <object-type name="QCommonStyle">
+ </object-type>
+ <object-type name="QDataWidgetMapper">
+ <enum-type name="SubmitPolicy"/>
+ <modify-function signature="addMapping(QWidget*,int)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addMapping(QWidget*,int,QByteArray)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeMapping(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemDelegate(QAbstractItemDelegate*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setModel(QAbstractItemModel*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QDateEdit"/>
+ <object-type name="QDialog">
+ <enum-type name="DialogCode" python-type="IntEnum"/>
+ <modify-function signature="exec()" allow-thread="yes">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qdialog-exec-remove-parent-relation"/>
+ </modify-function>
+ <add-function signature="exec_()" return-type="int">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qapplication-exec"/>
+ </add-function>
+ </object-type>
+ <object-type name="QDialogButtonBox">
+ <enum-type name="ButtonLayout"/>
+ <enum-type name="ButtonRole"/>
+ <enum-type name="StandardButton" flags="StandardButtons"/>
+ <modify-function signature="addButton(QAbstractButton*,QDialogButtonBox::ButtonRole)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeButton(QAbstractButton*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QFileIconProvider"/>
+ <object-type name="QWizard">
+ <enum-type name="WizardButton"/>
+ <enum-type name="WizardOption" flags="WizardOptions"/>
+ <enum-type name="WizardPixmap"/>
+ <enum-type name="WizardStyle"/>
+ <modify-function signature="addPage(QWizardPage*)">
+ <modify-argument index="1">
+ <no-null-pointer/>
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setPage(int,QWizardPage*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setButton(QWizard::WizardButton,QAbstractButton*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QWizardPage">
+ <extra-includes>
+ <include file-name="pysidesignal.h" location="global"/>
+ </extra-includes>
+ <modify-function signature="wizard()const">
+ <modify-argument index="this">
+ <parent index="return" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="registerField(const QString&amp;,QWidget*,const char*,const char*)" allow-thread="yes">
+ <modify-argument index="3" pyi-type="str" rename="property"/>
+ <modify-argument index="4" pyi-type="str" rename="changed_signal"/>
+ </modify-function>
+ <add-function signature="registerField(const QString&amp;@name@,QWidget*@widget@,const char*@property@,PySideSignalInstance@changedSignal@)">
+ <modify-argument index="3" pyi-type="str"/>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp"
+ snippet="qwizardpage-registerfield"/>
+ </add-function>
+ </object-type>
+ <object-type name="QFocusFrame">
+ <modify-function signature="setWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QFontComboBox">
+ <enum-type name="FontFilter" flags="FontFilters"/>
+ </object-type>
+ <object-type name="QFontDialog">
+ <enum-type name="FontDialogOption" flags="FontDialogOptions"/>
+ <modify-function signature="getFont(bool*,QWidget*)" allow-thread="yes">
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, PySide6.QtGui.QFont]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="bool*_fix,arg"/>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getFont(bool*,QFont,QWidget*,QString,QFlags&lt;QFontDialog::FontDialogOption&gt;)" allow-thread="yes">
+ <modify-argument index="1">
+ <remove-argument />
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, PySide6.QtGui.QFont]">
+ <replace-type modified-type="PyTuple"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="bool*_fix,arg,arg,arg,arg"/>
+ </inject-code>
+ </modify-function>
+ </object-type>
+ <object-type name="QGraphicsEllipseItem"/>
+ <object-type name="QGraphicsItemAnimation">
+ <modify-function signature="setItem(QGraphicsItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setTimeLine(QTimeLine*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <extra-includes>
+ <include file-name="QPair" location="global"/>
+ </extra-includes>
+ </object-type>
+ <object-type name="QGraphicsItemGroup">
+ <modify-function signature="addToGroup(QGraphicsItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QGraphicsLineItem"/>
+ <object-type name="QGraphicsPathItem"/>
+ <object-type name="QGraphicsPixmapItem">
+ <enum-type name="ShapeMode"/>
+ </object-type>
+ <object-type name="QGraphicsPolygonItem"/>
+ <object-type name="QGraphicsRectItem"/>
+ <object-type name="QGraphicsSimpleTextItem"/>
+ <object-type name="QHBoxLayout"/>
+ <object-type name="QHeaderView">
+ <enum-type name="ResizeMode"/>
+ <modify-function signature="paintSection(QPainter*,QRect,int)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QItemDelegate">
+ <!-- ### "doLayout(...)" is an internal method. -->
+ <modify-function signature="doLayout(QStyleOptionViewItem,QRect*,QRect*,QRect*,bool)const" remove="all"/>
+ <!-- ### -->
+ <modify-function signature="drawCheck(QPainter*,QStyleOptionViewItem,QRect,Qt::CheckState)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawDecoration(QPainter*,QStyleOptionViewItem,QRect,QPixmap)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawDisplay(QPainter*,QStyleOptionViewItem,QRect,QString)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawFocus(QPainter*,QStyleOptionViewItem,QRect)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="setItemEditorFactory(QItemEditorFactory*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QItemEditorCreatorBase">
+ <modify-function signature="createWidget(QWidget*)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QItemEditorFactory">
+ <modify-function signature="registerEditor(int,QItemEditorCreatorBase*)">
+ <modify-argument index="2">
+ <reference-count action="set"/>
+ </modify-argument>
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qitemeditorfactory-registereditor"/>
+ </modify-function>
+ <modify-function signature="setDefaultFactory(QItemEditorFactory*)">
+ <modify-argument index="1">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qitemeditorfactory-setdefaultfactory"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QListView">
+ <enum-type name="Flow"/>
+ <enum-type name="LayoutMode"/>
+ <enum-type name="Movement"/>
+ <enum-type name="ResizeMode"/>
+ <enum-type name="ViewMode"/>
+ </object-type>
+ <object-type name="QColumnView">
+ <modify-function signature="setPreviewWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QMainWindow">
+ <enum-type name="DockOption" flags="DockOptions"/>
+ <modify-function signature="setCentralWidget(QWidget*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="replace_child">
+ <replace from="$FUNCTION_GET_OLD" to="centralWidget"/>
+ <replace from="$CHILD_TYPE" to="QWidget"/>
+ <replace from="$PYARG" to="%PYARG_1"/>
+ <replace from="$CPPARG" to="%1"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setMenuBar(QMenuBar*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="replace_child">
+ <replace from="$FUNCTION_GET_OLD" to="menuBar"/>
+ <replace from="$CHILD_TYPE" to="QMenuBar"/>
+ <replace from="$PYARG" to="%PYARG_1"/>
+ <replace from="$CPPARG" to="%1"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setMenuWidget(QWidget*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="replace_child">
+ <replace from="$FUNCTION_GET_OLD" to="menuWidget"/>
+ <replace from="$CHILD_TYPE" to="QWidget"/>
+ <replace from="$PYARG" to="%PYARG_1"/>
+ <replace from="$CPPARG" to="%1"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="setStatusBar(QStatusBar*)">
+ <inject-code class="target" position="beginning">
+ <insert-template name="replace_child">
+ <replace from="$FUNCTION_GET_OLD" to="statusBar"/>
+ <replace from="$CHILD_TYPE" to="QStatusBar"/>
+ <replace from="$PYARG" to="%PYARG_1"/>
+ <replace from="$CPPARG" to="%1"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="addDockWidget(Qt::DockWidgetArea,QDockWidget*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addDockWidget(Qt::DockWidgetArea,QDockWidget*,Qt::Orientation)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <!-- this fuction is declared when not defined QT_NO_TOOLBA -->
+ <modify-function signature="addToolBar(Qt::ToolBarArea,QToolBar*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addToolBar(QToolBar*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addToolBar(const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <!--- END QT_NO_TOOLBAR -->
+ <modify-function signature="removeDockWidget(QDockWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeToolBar(QToolBar*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeDockWidget(QDockWidget*)">
+ <modify-argument index="2">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ </object-type>
+ <object-type name="QMdiArea">
+ <enum-type name="AreaOption" flags="AreaOptions"/>
+ <enum-type name="ViewMode"/>
+ <enum-type name="WindowOrder"/>
+ <modify-function signature="addSubWindow(QWidget*,QFlags&lt;Qt::WindowType&gt;)" >
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeSubWindow(QWidget*)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QMdiSubWindow">
+ <enum-type name="SubWindowOption" flags="SubWindowOptions"/>
+ <modify-function signature="setWidget(QWidget*)" allow-thread="yes">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setSystemMenu(QMenu*)" allow-thread="yes">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QMenu">
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qmenu-glue"/>
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-addaction-glue"/>
+ <!-- exec() -->
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="QAction*">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qmenu-exec-1"/>
+ </add-function>
+ <!-- exec(QPoint, QAction) -->
+ <modify-function signature="exec(const QPoint&amp;,QAction*)" allow-thread="yes"/>
+ <add-function signature="exec_(const QPoint&amp;,QAction* @action@ = nullptr)" return-type="QAction*">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qmenu-exec-2"/>
+ </add-function>
+ <!-- exec(QList<QPoint>, QPoint, QAction, QWidget) -->
+ <modify-function signature="exec(QList&lt;QAction*>,const QPoint&amp;,QAction*,QWidget*)" allow-thread="yes"/>
+ <add-function signature="exec_(QList&lt;QAction*>,const QPoint&amp;,QAction* @at@ = nullptr,QWidget* @parent@ = nullptr)" return-type="QAction*">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qmenu-exec-3"/>
+ </add-function>
+ <modify-function signature="addMenu(QMenu*)">
+ <modify-argument index="return">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addMenu(const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addMenu(const QIcon &amp;,const QString &amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertMenu(QAction*,QMenu*)">
+ <modify-argument index="return">
+ <parent index="2" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addMenu(const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addMenu(const QIcon &amp;,const QString &amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <!-- ### "setNoReplayFor(QWidget*)" is an internal method. -->
+ <modify-function signature="setNoReplayFor(QWidget*)" remove="all"/>
+
+ <!-- FIXME PYSIDE7: Remove in favor of widgets methods -->
+ <modify-function signature="addAction(const QString&amp;,const QObject*,const char*,const QKeySequence&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <add-function signature="addAction(QString&amp;@text@,PyObject*,QKeySequence&amp;@shortcut@)">
+ <modify-argument index="3">
+ <replace-default-expression with="0"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qmenu-addaction-1"/>
+ </add-function>
+
+ <add-function signature="addAction(QIcon&amp;,QString&amp;@text@,PyObject*,QKeySequence&amp;@shortcut@)">
+ <modify-argument index="4">
+ <replace-default-expression with="0"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qmenu-addaction-2"/>
+ </add-function>
+ <modify-function signature="addAction(const QIcon&amp;,const QString&amp;,const QObject*,const char*,const QKeySequence&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="clear()">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qmenu-clear"/>
+ </modify-function>
+
+ </object-type>
+
+ <object-type name="QMenuBar">
+ <modify-function signature="addMenu(QMenu*)">
+ <modify-argument index="return">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addSeparator()">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertMenu(QAction*,QMenu*)">
+ <modify-argument index="return">
+ <parent index="2" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertSeparator(QAction*)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="clear()">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qmenubar-clear"/>
+ </modify-function>
+
+ </object-type>
+ <object-type name="QProgressBar">
+ <enum-type name="Direction"/>
+ </object-type>
+ <object-type name="QProxyStyle">
+ <modify-function signature="QProxyStyle(QStyle*)">
+ <modify-argument index="1">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QPushButton"/>
+ <object-type name="QScrollArea">
+ <modify-function signature="setWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QSpacerItem"/>
+ <object-type name="QStatusBar">
+ <modify-function signature="addWidget(QWidget*,int)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addPermanentWidget(QWidget*,int)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertWidget(int,QWidget*,int)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertPermanentWidget(int,QWidget*,int)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QStyleFactory">
+ <modify-function signature="create(const QString&amp;)">
+ <modify-argument index="return">
+ <define-ownership owner="target"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QStyleHintReturn">
+ <enum-type name="HintReturnType"/>
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleHintReturnVariant">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStyleHintReturnMask">
+ <enum-type name="StyleOptionType"/>
+ <enum-type name="StyleOptionVersion"/>
+ </object-type>
+ <object-type name="QStylePainter"/>
+ <object-type name="QTableView">
+ <modify-function signature="setHorizontalHeader(QHeaderView*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setVerticalHeader(QHeaderView*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QTimeEdit"/>
+ <object-type name="QToolBox">
+ <modify-function signature="addItem(QWidget*,const QIcon&amp;,const QString&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addItem(QWidget*,const QString&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertItem(int,QWidget*,const QIcon&amp;,const QString&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertItem(int,QWidget*,const QString&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeItem(int)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qtoolbox-removeitem"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QToolButton">
+ <enum-type name="ToolButtonPopupMode"/>
+ <modify-function signature="setDefaultAction(QAction*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setMenu(QMenu*)">
+ </modify-function>
+ </object-type>
+ <object-type name="QToolTip"/>
+ <object-type name="QTreeView">
+ <modify-function signature="drawBranches(QPainter*,QRect,QModelIndex)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawRow(QPainter*,QStyleOptionViewItem,QModelIndex)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="setHeader(QHeaderView*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QUndoView">
+ <modify-function signature="setGroup(QUndoGroup*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setStack(QUndoStack*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QUndoView(QUndoGroup*,QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QUndoView(QUndoStack*,QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QVBoxLayout"/>
+
+ <object-type name="QWhatsThis"/>
+ <object-type name="QWidgetAction">
+ <modify-function signature="setDefaultWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="releaseWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QWidgetItem" polymorphic-id-expression="%B-&gt;widget()"/>
+
+ <object-type name="QGraphicsSceneContextMenuEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::GraphicsSceneContextMenu">
+ <enum-type name="Reason"/>
+ </object-type>
+ <object-type name="QGraphicsSceneDragDropEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::GraphicsSceneDragEnter || %B-&gt;type() == QEvent::GraphicsSceneDragLeave || %B-&gt;type() == QEvent::GraphicsSceneDragMove || %B-&gt;type() == QEvent::GraphicsSceneDrop" >
+ <!-- ### "setMimeData(const QMimeData*)" is an internal method. -->
+ <modify-function signature="setMimeData(const QMimeData*)" remove="all"/>
+ <!-- ### "setSource(QWidget*)" is an internal method. -->
+ <modify-function signature="setSource(QWidget*)" remove="all"/>
+ <!-- ### -->
+ </object-type>
+ <object-type name="QGraphicsSceneEvent" copyable="false" qt-register-metatype="base">
+ <!-- ### "setWidget(QWidget*)" is an internal method. -->
+ <modify-function signature="setWidget(QWidget*)" remove="all"/>
+ </object-type>
+ <object-type name="QGraphicsSceneMoveEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::GraphicsSceneMove"/>
+ <object-type name="QGraphicsSceneResizeEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::GraphicsSceneResize"/>
+ <object-type name="QGraphicsSceneHelpEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::GraphicsSceneHelp"/>
+ <object-type name="QGraphicsSceneHoverEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::GraphicsSceneHoverEnter || %B-&gt;type() == QEvent::GraphicsSceneHoverLeave || %B-&gt;type() == QEvent::GraphicsSceneHoverMove"/>
+ <object-type name="QGraphicsSceneMouseEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::GraphicsSceneMouseDoubleClick || %B-&gt;type() == QEvent::GraphicsSceneMouseMove || %B-&gt;type() == QEvent::GraphicsSceneMousePress || %B-&gt;type() == QEvent::GraphicsSceneMouseRelease"/>
+ <object-type name="QGraphicsSceneWheelEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::GraphicsSceneWheel"/>
+
+ <object-type name="QGestureEvent"
+ polymorphic-id-expression="%B-&gt;type() == QEvent::Gesture || %B-&gt;type() == QEvent::GestureOverride" since="4.6">
+ <modify-function signature="activeGestures()const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="canceledGestures()const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="gestures()const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="gesture(Qt::GestureType)const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="widget()const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QAbstractButton">
+ <add-function signature="setShortcut(Qt::Key)">
+ <inject-code file="../glue/qtgui.cpp" snippet="set-qtkey-shortcut"/>
+ </add-function>
+ </object-type>
+ <object-type name="QStyle">
+ <enum-type name="ComplexControl" python-type="IntEnum"/>
+ <enum-type name="ContentsType" python-type="IntEnum"/>
+ <enum-type name="ControlElement" python-type="IntEnum"/>
+ <enum-type name="PixelMetric" python-type="IntEnum"/>
+ <enum-type name="PrimitiveElement" python-type="IntEnum"/>
+ <enum-type name="RequestSoftwareInputPanel" since="4.6"/>
+ <enum-type name="StandardPixmap" python-type="IntEnum"/>
+ <enum-type name="StateFlag" flags="State"/>
+ <enum-type name="StyleHint" python-type="IntEnum"/>
+ <enum-type name="SubControl" flags="SubControls"/>
+ <enum-type name="SubElement" python-type="IntEnum"/>
+ <modify-function signature="drawComplexControl(QStyle::ComplexControl,const QStyleOptionComplex*,QPainter*,const QWidget*)const">
+ <modify-argument index="3" invalidate-after-use="yes"/>
+ <modify-argument index="4">
+ <rename to="widget"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="drawControl(QStyle::ControlElement,const QStyleOption*,QPainter*,const QWidget*)const">
+ <modify-argument index="3" invalidate-after-use="yes"/>
+ <modify-argument index="4">
+ <rename to="widget"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="drawPrimitive(QStyle::PrimitiveElement,const QStyleOption*,QPainter*,const QWidget*)const">
+ <modify-argument index="3" invalidate-after-use="yes"/>
+ <modify-argument index="4">
+ <rename to="widget"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="hitTestComplexControl(QStyle::ComplexControl,const QStyleOptionComplex*,const QPoint&amp;,const QWidget*)const">
+ <modify-argument index="4">
+ <rename to="widget"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="styleHint(QStyle::StyleHint,const QStyleOption*,const QWidget*,QStyleHintReturn*)const">
+ <modify-argument index="4" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawItemPixmap(QPainter*,QRect,int,QPixmap)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawItemText(QPainter*,QRect,int,QPalette,bool,QString,QPalette::ColorRole)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QColorDialog">
+ <enum-type name="ColorDialogOption" flags="ColorDialogOptions"/>
+ <modify-function signature="getColor(const QColor&amp;,QWidget*,const QString&amp;,QFlags&lt;QColorDialog::ColorDialogOption>)" allow-thread="yes"/>
+ </object-type>
+
+ <object-type name="QLayout" polymorphic-base="true">
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp"
+ snippet="qwidget-retrieveobjectname"/>
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/>
+ <enum-type name="SizeConstraint"/>
+
+ <modify-function signature="itemAt(int)const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp"
+ snippet="addownership-item-at"/>
+ </modify-function>
+
+ <modify-function signature="removeWidget(QWidget*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="removeownership-1"/>
+ </modify-function>
+ <modify-function signature="removeItem(QLayoutItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="removeownership-1"/>
+ </modify-function>
+
+ <modify-function signature="replaceWidget(QWidget*,QWidget*,QFlags&lt;Qt::FindChildOption&gt;)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-2"/>
+ </modify-function>
+
+ <modify-function signature="parentWidget()const">
+ <modify-argument index="this">
+ <parent index="return" action="add"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="takeAt(int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ <define-ownership class="native" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addItem(QLayoutItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+
+ <modify-function signature="addWidget(QWidget*)" allow-thread="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="addChildWidget(QWidget*)" allow-thread="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="addChildLayout(QLayout*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="setMenuBar(QWidget*)" allow-thread="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+
+ <modify-function signature="getContentsMargins(int*,int*,int*,int*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ <inject-code class="native" position="end">
+ <insert-template name="fix_native_return_number*,number*,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+
+ <add-function signature="setAlignment(QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-setalignment"/>
+ </add-function>
+
+ </object-type>
+
+ <object-type name="QStackedLayout">
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp"
+ snippet="qwidget-retrieveobjectname"/>
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/>
+ <enum-type name="StackingMode"/>
+ <modify-function signature="insertWidget(int,QWidget*)" allow-thread="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-2"/>
+ </modify-function>
+ <modify-function signature="addWidget(QWidget*)" allow-thread="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QBoxLayout">
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp"
+ snippet="qwidget-retrieveobjectname"/>
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/>
+
+ <enum-type name="Direction"/>
+
+ <modify-function signature="addWidget(QWidget*,int,QFlags&lt;Qt::AlignmentFlag&gt;)" allow-thread="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+
+ <modify-function signature="addLayout(QLayout*,int)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+
+ <modify-function signature="insertWidget(int,QWidget*,int,QFlags&lt;Qt::AlignmentFlag&gt;)" allow-thread="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-2"/>
+ </modify-function>
+ <modify-function signature="insertLayout(int,QLayout*,int)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-2"/>
+ </modify-function>
+ <modify-function signature="insertItem(int,QLayoutItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-2"/>
+ </modify-function>
+ <modify-function signature="addSpacerItem(QSpacerItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="insertSpacerItem(int,QSpacerItem*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-2"/>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QGridLayout">
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp"
+ snippet="qwidget-retrieveobjectname"/>
+ <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"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp"
+ snippet="addownership-item-at"/>
+ </modify-function>
+ <modify-function signature="addWidget(QWidget*,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="4">
+ <rename to="alignment"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="addWidget(QWidget*,int,int,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="6">
+ <rename to="alignment"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="addLayout(QLayout*,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="4">
+ <rename to="alignment"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="addLayout(QLayout*,int,int,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="6">
+ <rename to="alignment"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="addItem(QLayoutItem*,int,int,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="4">
+ <rename to="rowSpan"/>
+ </modify-argument>
+ <modify-argument index="5">
+ <rename to="columnSpan"/>
+ </modify-argument>
+ <modify-argument index="6">
+ <rename to="alignment"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="addownership-1"/>
+ </modify-function>
+ <modify-function signature="getItemPosition(int,int*,int*,int*,int*)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject*"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="5">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qgridlayout-getitemposition"/>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QGraphicsView">
+ <extra-includes>
+ <include file-name="QPainterPath" location="global"/>
+ <include file-name="QVarLengthArray" location="global"/>
+ </extra-includes>
+ <enum-type name="CacheModeFlag" flags="CacheMode"/>
+ <enum-type name="DragMode"/>
+ <enum-type name="OptimizationFlag" flags="OptimizationFlags"/>
+ <enum-type name="ViewportAnchor"/>
+ <enum-type name="ViewportUpdateMode"/>
+ <modify-function signature="setScene(QGraphicsScene*)">
+ <modify-argument index="1" pyi-type="Optional[PySide6.QtWidgets.QGraphicsScene]">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="scene()const">
+ <inject-code position="end" file="../glue/qtwidgets.cpp" snippet="qgraphicsitem-scene-return-parenting"/>
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="itemAt(int,int)const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="itemAt(QPoint)const">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="drawBackground(QPainter*,QRectF)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawForeground(QPainter*,QRectF)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+
+ <!-- TODO: Support conversions on virtual function -->
+ <modify-function signature="drawItems(QPainter*,int,QGraphicsItem*[],const QStyleOptionGraphicsItem[])">
+ <modify-argument index="2">
+ <remove-argument/>
+ <conversion-rule class="native">
+ <insert-template name="pysequencesize_int"/>
+ </conversion-rule>
+ </modify-argument>
+
+ <modify-argument index="3">
+ <replace-type modified-type="PySequence"/>
+ <conversion-rule class="native">
+ <insert-template name="qgraphicsitem_pysequence"/>
+ </conversion-rule>
+
+ <conversion-rule class="target">
+ <insert-template name="qgraphicsitem_pyobject"/>
+ </conversion-rule>
+ </modify-argument>
+
+ <modify-argument index="4">
+ <replace-type modified-type="PySequence"/>
+ <conversion-rule class="target">
+ <insert-template name="qstyleoptiongraphicsitem_pyobject"/>
+ </conversion-rule>
+
+ <conversion-rule class="native">
+ <insert-template name="pysequence_qstyleoptiongraphicsitem"/>
+ </conversion-rule>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QInputDialog">
+ <enum-type name="InputDialogOption"/>
+ <enum-type name="InputMode"/>
+
+ <modify-function signature="getInt(QWidget*,const QString&amp;,const QString&amp;,int,int,int,int,bool*,QFlags&lt;Qt::WindowType&gt;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[int, bool]"/>
+ <modify-argument index="8">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg"/>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="getItem(QWidget*,const QString&amp;,const QString&amp;,const QStringList&amp;,int,bool,bool*,QFlags&lt;Qt::WindowType&gt;,QFlags&lt;Qt::InputMethodHint&gt;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[str, bool]"/>
+ <modify-argument index="7">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_arg,arg,arg,arg,arg,arg,bool*,arg"/>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="getMultiLineText(QWidget*,const QString&amp;,const QString&amp;,const QString&amp;,bool*,QFlags&lt;Qt::WindowType&gt;,QFlags&lt;Qt::InputMethodHint&gt;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[str, bool]"/>
+ <modify-argument index="5">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_arg,arg,arg,arg,bool*,arg,arg"/>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="getText(QWidget*,const QString&amp;,const QString&amp;,QLineEdit::EchoMode,const QString&amp;,bool*,QFlags&lt;Qt::WindowType&gt;,QFlags&lt;Qt::InputMethodHint&gt;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[str, bool]"/>
+ <modify-argument index="6">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_arg,arg,arg,arg,arg,bool*,arg"/>
+ </inject-code>
+ </modify-function>
+
+ <modify-function signature="getDouble(QWidget*,const QString&amp;,const QString&amp;,double,double,double,int,bool*,QFlags&lt;Qt::WindowType&gt;,double)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[float, bool]"/>
+ <modify-argument index="8">
+ <remove-default-expression/>
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg,arg"/>
+ </inject-code>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QGraphicsScene">
+ <extra-includes>
+ <include file-name="QVarLengthArray" location="global"/>
+ </extra-includes>
+ <enum-type name="ItemIndexMethod"/>
+ <enum-type name="SceneLayer" flags="SceneLayers"/>
+
+ <!-- Qt5: note: this was called 'obsolete'. Is that true? -->
+ <modify-function signature="drawItems(QPainter*,int,QGraphicsItem*[],const QStyleOptionGraphicsItem[],QWidget*)" remove="all"/>
+
+ <modify-function signature="createItemGroup(const QList&lt;QGraphicsItem*&gt;&amp;)">
+ <modify-argument index="1">
+ <parent index="return" action="add"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="destroyItemGroup(QGraphicsItemGroup*)">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qgraphicsscene-destroyitemgroup"/>
+ </modify-function>
+
+ <modify-function signature="contextMenuEvent(QGraphicsSceneContextMenuEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="dragEnterEvent(QGraphicsSceneDragDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="dragLeaveEvent(QGraphicsSceneDragDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="dragMoveEvent(QGraphicsSceneDragDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawBackground(QPainter*,QRectF)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="drawForeground(QPainter*,QRectF)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="dropEvent(QGraphicsSceneDragDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="focusInEvent(QFocusEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="focusOutEvent(QFocusEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="helpEvent(QGraphicsSceneHelpEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="inputMethodEvent(QInputMethodEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="keyPressEvent(QKeyEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="keyReleaseEvent(QKeyEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="mouseDoubleClickEvent(QGraphicsSceneMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="mouseMoveEvent(QGraphicsSceneMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="mousePressEvent(QGraphicsSceneMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="mouseReleaseEvent(QGraphicsSceneMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="wheelEvent(QGraphicsSceneWheelEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="addItem(QGraphicsItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addEllipse(const QRectF&amp;,const QPen&amp;,const QBrush&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addEllipse(qreal,qreal,qreal,qreal,const QPen&amp;,const QBrush&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addLine(const QLineF&amp;,const QPen&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addLine(qreal,qreal,qreal,qreal,const QPen&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addPath(const QPainterPath&amp;,const QPen&amp;,const QBrush&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addPixmap(const QPixmap&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addPolygon(const QPolygonF&amp;,const QPen&amp;,const QBrush&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addRect(const QRectF&amp;,const QPen&amp;,const QBrush&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addRect(qreal,qreal,qreal,qreal,const QPen&amp;,const QBrush&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addText(const QString&amp;,const QFont&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addSimpleText(const QString&amp;,const QFont&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addWidget(QWidget*,QFlags&lt;Qt::WindowType&gt;)">
+ <!-- TODO: Add a keeper attribute to reference-count tag to do what this inject code do. -->
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qgraphicsscene-addwidget"/>
+ </modify-function>
+
+ <modify-function signature="clear()">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qgraphicsscene-clear"/>
+ </modify-function>
+
+ <modify-function signature="removeItem(QGraphicsItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="setFocusItem(QGraphicsItem*,Qt::FocusReason)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QCalendarWidget">
+ <enum-type name="HorizontalHeaderFormat"/>
+ <enum-type name="SelectionMode"/>
+ <enum-type name="VerticalHeaderFormat"/>
+ <extra-includes>
+ <include file-name="QTextCharFormat" location="global"/>
+ </extra-includes>
+ <modify-function signature="paintCell(QPainter*,QRect,QDate)const">
+ <modify-argument invalidate-after-use="yes" index="1"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QTreeWidget">
+ <modify-function signature="mimeData(const QList&lt;QTreeWidgetItem*&gt;&amp;)const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemWidget(QTreeWidgetItem*,int,QWidget*)" allow-thread="yes">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="dropMimeData(QTreeWidgetItem*,int,const QMimeData*,Qt::DropAction)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="addTopLevelItem(QTreeWidgetItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addTopLevelItems(const QList&lt;QTreeWidgetItem*&gt; &amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addTopLevelItem(QTreeWidgetItem*)">
+ <modify-argument index="1">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertTopLevelItem(int,QTreeWidgetItem*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertTopLevelItems(int,const QList&lt;QTreeWidgetItem*&gt; &amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setHeaderItem(QTreeWidgetItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeTopLevelItem(int)">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="clear()">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qtreewidget-clear"/>
+ </modify-function>
+ <modify-function signature="removeItemWidget(QTreeWidgetItem*,int)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QAbstractItemDelegate">
+ <enum-type name="EndEditHint"/>
+ <modify-function signature="paint(QPainter*,QStyleOptionViewItem,QModelIndex)const">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="editorEvent(QEvent*,QAbstractItemModel*,QStyleOptionViewItem,QModelIndex)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="createEditor(QWidget*,QStyleOptionViewItem,QModelIndex)const">
+ <modify-argument index="1">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="closeEditor(QWidget*,QAbstractItemDelegate::EndEditHint)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QTableWidgetItem" >
+ <enum-type name="ItemType" python-type="IntEnum"/>
+ <modify-function signature="read(QDataStream&amp;)" allow-thread="yes">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="write(QDataStream&amp;)const" allow-thread="yes">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QListWidgetItem" >
+ <enum-type name="ItemType" python-type="IntEnum"/>
+ <modify-function signature="QListWidgetItem(const QString&amp;,QListWidget*,int)">
+ <modify-argument index="this">
+ <parent index="2" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QListWidgetItem(const QIcon&amp;,const QString&amp;,QListWidget*,int)">
+ <modify-argument index="this">
+ <parent index="3" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QListWidgetItem(QListWidget*,int)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="listWidget()const">
+ <modify-argument index="return">
+ <define-ownership owner="target"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="read(QDataStream&amp;)" allow-thread="yes">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="write(QDataStream&amp;)const" allow-thread="yes">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QGraphicsTextItem">
+ <!-- a QObject so main-thread delete redundant -->
+ <extra-includes>
+ <include file-name="QTextCursor" location="global"/>
+ </extra-includes>
+ <modify-function signature="setDocument(QTextDocument*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QCompleter">
+ <enum-type name="CompletionMode"/>
+ <enum-type name="ModelSorting"/>
+ <modify-function signature="setModel(QAbstractItemModel*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setPopup(QAbstractItemView*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setWidget(QWidget*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QTreeWidgetItem" hash-function="qHash" parent-management="true">
+ <enum-type name="ChildIndicatorPolicy"/>
+ <enum-type name="ItemType" python-type="IntEnum"/>
+ <modify-function signature="read(QDataStream&amp;)" allow-thread="yes">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="write(QDataStream&amp;)const" allow-thread="yes">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="QTreeWidgetItem(QTreeWidget*,int)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QTreeWidgetItem(QTreeWidget*,const QStringList&amp;,int)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QTreeWidgetItem(QTreeWidget*,QTreeWidgetItem*,int)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QTreeWidgetItem(QTreeWidgetItem*,int)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QTreeWidgetItem(QTreeWidgetItem*,const QStringList &amp;,int)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="QTreeWidgetItem(QTreeWidgetItem*,QTreeWidgetItem*,int)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addChild(QTreeWidgetItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addChildren(const QList&lt;QTreeWidgetItem*&gt; &amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertChild(int,QTreeWidgetItem*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertChildren(int,const QList&lt;QTreeWidgetItem*&gt; &amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeChild(QTreeWidgetItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeChild(int)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeChildren()">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="parent()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qtreewidgetitem"/>
+ </modify-function>
+ <modify-function signature="treeWidget()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qtreewidgetitem"/>
+ </modify-function>
+
+ </object-type>
+ <object-type name="QListWidget">
+ <modify-function signature="mimeData(const QList&lt;QListWidgetItem*&gt;&amp;)const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemWidget(QListWidgetItem*,QWidget*)" allow-thread="yes">
+ <modify-argument index="2">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addItem(QListWidgetItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertItem(int,QListWidgetItem*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeItem(int)">
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="clear()">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlistwidget-clear"/>
+ </modify-function>
+ <modify-function signature="removeItemWidget(QListWidgetItem*)" allow-thread="yes"/>
+ </object-type>
+
+ <object-type name="QWidget" delete-in-main-thread="true" polymorphic-base="true">
+ <!-- see QWindow::nativeEvent(), QAbstractNativeEventFilter::nativeEventFilter() -->
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-addaction-glue"/>
+ <inject-code class="native" position="beginning">
+ #include &lt;QtWidgets/qapplication.h&gt;
+ </inject-code>
+ <modify-function signature="nativeEvent(const QByteArray &amp;,void*,qintptr*)">
+ <modify-argument index="3">
+ <remove-argument/>
+ <conversion-rule class="native">
+ <insert-template name="return_native_eventfilter_conversion_variables"/>
+ </conversion-rule>
+ </modify-argument>
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ <conversion-rule class="native">
+ <insert-template name="return_native_eventfilter_conversion"/>
+ </conversion-rule>
+ </modify-argument>
+ <inject-code position="end">
+ <insert-template name="return_native_eventfilter"/>
+ </inject-code>
+ </modify-function>
+
+ <extra-includes>
+ <include file-name="QApplication" location="global"/>
+ <include file-name="QIcon" location="global"/>
+ <include file-name="QMessageBox" location="global"/>
+ <include file-name="QStyle" location="global"/>
+ </extra-includes>
+
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp"
+ snippet="qwidget-retrieveobjectname"/>
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-glue"/>
+
+ <enum-type name="RenderFlag" flags="RenderFlags"/>
+
+ <modify-function signature="setParent(QWidget*)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ <modify-argument index="1" pyi-type="Optional[PySide6.QtWidgets.QWidget]"/>
+ </modify-function>
+
+ <modify-function signature="setParent(QWidget*,QFlags&lt;Qt::WindowType&gt;)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ <modify-argument index="1" pyi-type="Optional[PySide6.QtWidgets.QWidget]"/>
+ </modify-function>
+
+ <modify-function signature="parentWidget()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="nativeParentWidget()const"> <!-- Suppress return value heuristics -->
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="actionEvent(QActionEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="changeEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="closeEvent(QCloseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="contextMenuEvent(QContextMenuEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="dragEnterEvent(QDragEnterEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="dragLeaveEvent(QDragLeaveEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="dragMoveEvent(QDragMoveEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="dropEvent(QDropEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="enterEvent(QEnterEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="focusInEvent(QFocusEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="focusOutEvent(QFocusEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="hideEvent(QHideEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="inputMethodEvent(QInputMethodEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="keyPressEvent(QKeyEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="keyReleaseEvent(QKeyEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="leaveEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="mouseDoubleClickEvent(QMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="mouseMoveEvent(QMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="mousePressEvent(QMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="mouseReleaseEvent(QMouseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="moveEvent(QMoveEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="paintEvent(QPaintEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="resizeEvent(QResizeEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="showEvent(QShowEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="tabletEvent(QTabletEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="wheelEvent(QWheelEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes">
+ <rename to="event"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="setStyle(QStyle*)">
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qwidget-setstyle"/>
+ </modify-function>
+ <modify-function signature="style()const">
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qwidget-style"/>
+ <modify-argument index="return">
+ <define-ownership owner="default"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="render(QPainter*,QPoint,QRegion,QFlags&lt;QWidget::RenderFlag&gt;)">
+ <modify-argument index="2">
+ <!-- Removed because the render(QPainter*) overload conflicts with the identical function in QGraphicsView -->
+ <remove-default-expression/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setFocusProxy(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addAction(const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addAction(const QIcon&amp;,const QString&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addAction(const QString&amp;,const QKeySequence&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addAction(const QIcon&amp;,const QString&amp;,const QKeySequence&amp;)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="addAction(const QString&amp;,const QObject*,const char*,Qt::ConnectionType)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="addAction(QString&amp;@text@,PyObject*@callable@)"
+ return-type="QAction*">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-addaction-2"/>
+ </add-function>
+
+ <modify-function signature="addAction(const QIcon&amp;,const QString&amp;,const QObject*,const char*,Qt::ConnectionType)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="addAction(QIcon&amp;@icon@,QString&amp;@text@,PyObject*@callable@)"
+ return-type="QAction*">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-addaction-3"/>
+ </add-function>
+
+ <modify-function signature="addAction(const QString&amp;,const QKeySequence&amp;,const QObject*,const char*,Qt::ConnectionType)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="addAction(QString&amp;@text@,QKeySequence&amp;@shortcut@,PyObject*@callable@)"
+ return-type="QAction*">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-addaction-3"/>
+ </add-function>
+
+ <modify-function signature="addAction(const QIcon&amp;,const QString&amp;,const QKeySequence&amp;,const QObject*,const char*,Qt::ConnectionType)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <add-function signature="addAction(QIcon&amp;@icon@,QString&amp;@text@,QKeySequence&amp;@shortcut@,PyObject*@callable@)"
+ return-type="QAction*">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-addaction-4"/>
+ </add-function>
+
+ <modify-function signature="insertAction(QAction*,QAction*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="setLayout(QLayout*)" allow-thread="yes">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-setlayout"/>
+ </modify-function>
+ <modify-function signature="raise()" rename="raise_"/>
+ <modify-function signature="setParent(QWidget*,QFlags&lt;Qt::WindowType>)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ <modify-argument index="1" pyi-type="Optional[PySide6.QtWidgets.QWidget]"/>
+ </modify-function>
+
+ <modify-function signature="window()const">
+ <modify-argument index="return">
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QMessageBox">
+ <enum-type name="ButtonRole"/>
+ <enum-type name="Icon"/>
+ <enum-type name="StandardButton" python-type="IntFlag" flags="StandardButtons"/>
+ <enum-type name="Option" flags="Options" since="6.6"/>
+ <modify-function signature="removeButton(QAbstractButton*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <extra-includes>
+ <include file-name="QPixmap" location="global"/>
+ </extra-includes>
+
+ <!-- FIXME PYSIDE-7: Remove deprecated overloads -->
+ <modify-function signature="critical(QWidget*,const QString&amp;,const QString&amp;,QFlags&lt;QMessageBox::StandardButton&gt;,QMessageBox::StandardButton)" allow-thread="yes"/>
+ <modify-function signature="critical(QWidget*,const QString&amp;,const QString&amp;,QMessageBox::StandardButton,QMessageBox::StandardButton)"
+ allow-thread="yes"/>
+ <modify-function signature="information(QWidget*,const QString&amp;,const QString&amp;,QFlags&lt;QMessageBox::StandardButton&gt;,QMessageBox::StandardButton)" allow-thread="yes"/>
+ <modify-function signature="information(QWidget*,const QString&amp;,const QString&amp;,QMessageBox::StandardButton,QMessageBox::StandardButton)"
+ allow-thread="yes"/>
+ <modify-function signature="question(QWidget*,const QString&amp;,const QString&amp;,QFlags&lt;QMessageBox::StandardButton&gt;,QMessageBox::StandardButton)" allow-thread="yes"/>
+ <modify-function signature="question(QWidget*,const QString&amp;,const QString&amp;,QMessageBox::StandardButton,QMessageBox::StandardButton)"
+ allow-thread="yes"/>
+ <modify-function signature="warning(QWidget*,const QString&amp;,const QString&amp;,QFlags&lt;QMessageBox::StandardButton&gt;,QMessageBox::StandardButton)" allow-thread="yes"/>
+ <modify-function signature="warning(QWidget*,const QString&amp;,const QString&amp;,QMessageBox::StandardButton,QMessageBox::StandardButton)"
+ allow-thread="yes"/>
+ <modify-function signature="QMessageBox(const QString&amp;,const QString&amp;,QMessageBox::Icon,int,int,int,QWidget*,QFlags&lt;Qt::WindowType&gt;)" remove="all"/>
+ <modify-function signature="critical(QWidget*,const QString&amp;,const QString&amp;,int,int,int)" remove="all"/>
+ <modify-function signature="critical(QWidget*,const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,int,int)" remove="all"/>
+ <modify-function signature="information(QWidget*,const QString&amp;,const QString&amp;,int,int,int)" remove="all"/>
+ <modify-function signature="information(QWidget*,const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,int,int)" remove="all"/>
+ <modify-function signature="question(QWidget*,const QString&amp;,const QString&amp;,int,int,int)" remove="all"/>
+ <modify-function signature="question(QWidget*,const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,int,int)" remove="all"/>
+ <modify-function signature="warning(QWidget*,const QString&amp;,const QString&amp;,int,int,int)" remove="all"/>
+ <modify-function signature="warning(QWidget*,const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,const QString&amp;,int,int)" remove="all"/>
+ <modify-function signature="about(QWidget*,const QString&amp;,const QString&amp;)" allow-thread="yes"/>
+ <modify-function signature="aboutQt(QWidget*,const QString&amp;)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QAbstractSpinBox">
+ <enum-type name="ButtonSymbols"/>
+ <enum-type name="CorrectionMode"/>
+ <enum-type name="StepEnabledFlag" flags="StepEnabled"/>
+ <enum-type name="StepType"/>
+ <modify-function signature="setLineEdit(QLineEdit*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="fixup(QString &amp;)const">
+ <modify-argument index="return">
+ <replace-type modified-type="QString"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtcore.cpp" snippet="qstring-return"/>
+ </modify-function>
+ <modify-function signature="validate(QString &amp;,int &amp;)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ <conversion-rule class="native">
+ <insert-template name="validator_conversionrule"/>
+ </conversion-rule>
+ </modify-argument>
+ <inject-code class="target" position="end">
+ <insert-template name="return_tuple_QValidator_QString_int"/>
+ </inject-code>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QTabWidget">
+ <enum-type name="TabPosition"/>
+ <enum-type name="TabShape"/>
+ <modify-function signature="addTab(QWidget*,const QString&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addTab(QWidget*,const QIcon&amp;,const QString&amp;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertTab(int,QWidget*,const QIcon&amp;,const QString&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertTab(int,QWidget*,const QString&amp;)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setCornerWidget(QWidget*,Qt::Corner)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setTabBar(QTabBar*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <!-- This function need be re-implemented in inject code -->
+ <modify-function signature="removeTab(int)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qtabwidget-removetab"/>
+ </modify-function>
+ <modify-function signature="clear()">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qtabwidget-clear"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QDateTimeEdit">
+ <enum-type name="Section" flags="Sections"/>
+ <modify-function signature="setCalendarWidget(QCalendarWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QSlider">
+ <enum-type name="TickPosition"/>
+ </object-type>
+ <object-type name="QProgressDialog">
+ <modify-function signature="setBar(QProgressBar*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setLabel(QLabel*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setCancelButton(QPushButton*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QLabel">
+ <modify-function signature="setBuddy(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="pixmap(Qt::ReturnByValueConstant)const" remove="all"/>
+ <modify-function signature="picture(Qt::ReturnByValueConstant)const" remove="all"/>
+ <modify-function signature="setMovie(QMovie *)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QFileDialog">
+ <enum-type name="AcceptMode"/>
+ <enum-type name="DialogLabel"/>
+ <enum-type name="FileMode"/>
+ <enum-type name="Option" flags="Options"/>
+ <enum-type name="ViewMode"/>
+ <extra-includes>
+ <include file-name="QUrl" location="global"/>
+ <include file-name="QAbstractProxyModel" location="global"/>
+ </extra-includes>
+ <modify-function signature="setIconProvider(QAbstractFileIconProvider*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemDelegate(QAbstractItemDelegate*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+
+ <modify-function signature="getExistingDirectory(QWidget*,const QString&amp;,const QString&amp;,QFlags&lt;QFileDialog::Option>)" allow-thread="yes"/>
+ <modify-function signature="getExistingDirectoryUrl(QWidget*,const QString&amp;,const QUrl&amp;,QFlags&lt;QFileDialog::Option>,const QStringList&amp;)" allow-thread="yes"/>
+ <modify-function signature="getOpenFileName(QWidget*,const QString&amp;,const QString&amp;,const QString&amp;,QString*,QFlags&lt;QFileDialog::Option&gt;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[str, str]">
+ <replace-type modified-type="(fileName, selectedFilter)"/>
+ </modify-argument>
+ <modify-argument index="5">
+ <replace-type modified-type="QString"/>
+ <replace-default-expression with="QString()"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qfiledialog-return" />
+ </modify-function>
+ <modify-function signature="getOpenFileNames(QWidget*,const QString&amp;,const QString&amp;,const QString&amp;,QString*,QFlags&lt;QFileDialog::Option&gt;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[List[str], str]">
+ <replace-type modified-type="(fileNames, selectedFilter)"/>
+ </modify-argument>
+ <modify-argument index="5">
+ <replace-type modified-type="QString"/>
+ <replace-default-expression with="QString()"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qfiledialog-return" />
+ </modify-function>
+
+ <modify-function signature="getOpenFileUrl(QWidget*,const QString&amp;,const QUrl&amp;,const QString&amp;,QString*,QFlags&lt;QFileDialog::Option&gt;,const QStringList&amp;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[PySide6.QtCore.QUrl, str]">
+ <replace-type modified-type="(fileName, selectedFilter)"/>
+ </modify-argument>
+ <modify-argument index="5">
+ <replace-type modified-type="QString"/>
+ <replace-default-expression with="QString()"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qfiledialog-return" />
+ </modify-function>
+
+ <modify-function signature="getOpenFileUrls(QWidget*,const QString&amp;,const QUrl&amp;,const QString&amp;,QString*,QFlags&lt;QFileDialog::Option&gt;,const QStringList&amp;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[List[PySide6.QtCore.QUrl], str]">
+ <replace-type modified-type="(fileName, selectedFilter)"/>
+ </modify-argument>
+ <modify-argument index="5">
+ <replace-type modified-type="QString"/>
+ <replace-default-expression with="QString()"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qfiledialog-return" />
+ </modify-function>
+
+ <modify-function signature="getSaveFileName(QWidget*,const QString&amp;,const QString&amp;,const QString&amp;,QString*,QFlags&lt;QFileDialog::Option&gt;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[str, str]">
+ <replace-type modified-type="(fileName, selectedFilter)"/>
+ </modify-argument>
+ <modify-argument index="5">
+ <replace-type modified-type="QString"/>
+ <replace-default-expression with="QString()"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qfiledialog-return" />
+ </modify-function>
+
+ <modify-function signature="getSaveFileUrl(QWidget*,const QString&amp;,const QUrl&amp;,const QString&amp;,QString*,QFlags&lt;QFileDialog::Option&gt;,const QStringList&amp;)" allow-thread="yes">
+ <modify-argument index="return" pyi-type="Tuple[PySide6.QtCore.QUrl, str]">
+ <replace-type modified-type="(fileName, selectedFilter)"/>
+ </modify-argument>
+ <modify-argument index="5">
+ <replace-type modified-type="QString"/>
+ <replace-default-expression with="QString()"/>
+ </modify-argument>
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qfiledialog-return" />
+ </modify-function>
+
+ </object-type>
+
+ <object-type name="QErrorMessage"/>
+ <object-type name="QTabBar">
+ <extra-includes>
+ <include file-name="QIcon" location="global"/>
+ </extra-includes>
+ <enum-type name="Shape"/>
+ <enum-type name="SelectionBehavior"/>
+ <enum-type name="ButtonPosition"/>
+ </object-type>
+ <object-type name="QRadioButton"/>
+ <object-type name="QScrollBar"/>
+ <object-type name="QAbstractScrollArea">
+ <enum-type name="SizeAdjustPolicy"/>
+ <modify-function signature="setViewport(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addScrollBarWidget(QWidget*,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setCornerWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setHorizontalScrollBar(QScrollBar*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setVerticalScrollBar(QScrollBar*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setViewport(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setupViewport(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="viewportEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QRubberBand">
+ <enum-type name="Shape"/>
+ <modify-function signature="QRubberBand(QRubberBand::Shape,QWidget*)">
+ <modify-argument index="this">
+ <parent index="2" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <rename to="parent"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QTableWidget">
+ <modify-function signature="mimeData(const QList&lt;QTableWidgetItem*&gt;&amp;)const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setHorizontalHeaderItem(int,QTableWidgetItem*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItem(int,int,QTableWidgetItem*)">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeHorizontalHeaderItem(int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeVerticalHeaderItem(int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="takeItem(int,int)">
+ <modify-argument index="return">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemPrototype(const QTableWidgetItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setVerticalHeaderItem(int,QTableWidgetItem*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setCellWidget(int,int,QWidget*)" allow-thread="yes">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeCellWidget(int,int)" allow-thread="yes"/>
+ <modify-function signature="setCurrentItem(QTableWidgetItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setCurrentItem(QTableWidgetItem*,QFlags&lt;QItemSelectionModel::SelectionFlag&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QSplitter">
+ <modify-function signature="getRange(int,int*,int*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_args,number*,number*">
+ <replace from="$TYPE" to="int"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="addWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertWidget(int,QWidget*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QGroupBox">
+ <modify-function signature="clicked(bool)" allow-thread="yes"/>
+ </object-type>
+ <object-type name="QStackedWidget">
+ <modify-function signature="addWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertWidget(int,QWidget*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setCurrentWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QSplitterHandle"/>
+ <object-type name="QDial"/>
+ <object-type name="QKeySequenceEdit"/>
+ <object-type name="QLineEdit">
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qwidget-addaction-glue"/>
+ <enum-type name="ActionPosition"/>
+ <enum-type name="EchoMode"/>
+ <modify-function signature="setCompleter(QCompleter*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setValidator(const QValidator*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="del()" rename="del_"/>
+
+ <add-function signature="addAction(QAction*)">
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlineedit-addaction"/>
+ </add-function>
+
+ </object-type>
+ <object-type name="QLCDNumber">
+ <enum-type name="Mode"/>
+ <enum-type name="SegmentStyle"/>
+ </object-type>
+ <object-type name="QSplashScreen">
+ <!-- Override QWidget.painter -->
+ <modify-function signature="repaint()" remove="all"/>
+ <modify-function signature="drawContents(QPainter*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QDockWidget">
+ <enum-type name="DockWidgetFeature" flags="DockWidgetFeatures"/>
+ <modify-function signature="setTitleBarWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QFrame">
+ <enum-type name="Shadow" python-type="IntEnum"/>
+ <enum-type name="Shape" python-type="IntEnum"/>
+ <enum-type name="StyleMask"/>
+ </object-type>
+ <object-type name="QSpinBox"/>
+ <object-type name="QTextBrowser"/>
+ <object-type name="QDoubleSpinBox"/>
+ <object-type name="QButtonGroup">
+ <modify-function signature="addButton(QAbstractButton*,int)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ <no-null-pointer/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeButton(QAbstractButton*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ <no-null-pointer/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setId(QAbstractButton*,int)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QToolBar">
+ <modify-function signature="addSeparator()">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addWidget(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertWidget(QAction*,QWidget*)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertSeparator(QAction*)">
+ <modify-argument index="return">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="clear()">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qtoolbar-clear"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QComboBox">
+ <enum-type name="InsertPolicy"/>
+ <enum-type name="SizeAdjustPolicy"/>
+ <modify-function signature="setCompleter(QCompleter*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setValidator(const QValidator*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItemDelegate(QAbstractItemDelegate*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ <no-null-pointer/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setView(QAbstractItemView*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setLineEdit(QLineEdit*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setModel(QAbstractItemModel*)">
+ <modify-argument index="1">
+ <no-null-pointer/>
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QTextEdit">
+ <enum-type name="AutoFormattingFlag" flags="AutoFormatting"/>
+ <enum-type name="LineWrapMode"/>
+ <value-type name="ExtraSelection" >
+ <include file-name="QTextEdit" location="global"/>
+ </value-type>
+ <extra-includes>
+ <include file-name="QTextCursor" location="global"/>
+ </extra-includes>
+ <modify-function signature="createMimeDataFromSelection() const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setDocument(QTextDocument*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertFromMimeData(const QMimeData*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="print(QPagedPaintDevice*)const" rename="print_"/>
+ </object-type>
+
+ <object-type name="QApplication">
+ <extra-includes>
+ <include file-name="QBasicTimer" location="global"/>
+ <include file-name="QFont" location="global"/>
+ <include file-name="QFontMetrics" location="global"/>
+ <include file-name="QPalette" location="global"/>
+ <include file-name="QIcon" location="global"/>
+ <include file-name="QLocale" location="global"/>
+ <include file-name="QStyle" location="global"/>
+ <include file-name="pysideqapp.h" location="global"/>
+ <include file-name="pysidecleanup.h" location="global"/>
+ </extra-includes>
+ <modify-function signature="QApplication(int&amp;,char**,int)" access="private"/>
+ <add-function signature="QApplication(QStringList)">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qapplication-1"/>
+ </add-function>
+ <add-function signature="QApplication()">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qapplication-2"/>
+ </add-function>
+ <modify-function signature="setStyle(QStyle*)">
+ <inject-code class="target" position="end" file="../glue/qtwidgets.cpp" snippet="qapplication-setStyle"/>
+ </modify-function>
+ <modify-function signature="exec()" allow-thread="yes"/>
+ <add-function signature="exec_()" return-type="int">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qapplication-exec"/>
+ </add-function>
+ <modify-function signature="notify(QObject*,QEvent*)" allow-thread="yes"/>
+ <modify-function signature="alert(QWidget*,int)" allow-thread="yes"/>
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qapplication-init"/>
+ </object-type>
+
+ <object-type name="QCommandLinkButton"/>
+ <!-- FIXME PYSIDE7: Move to QtGui -->
+ <object-type name="QFileSystemModel" polymorphic-id-expression="qobject_cast&lt;QFileSystemModel*&gt;(%B)">
+ <enum-type name="Roles" python-type="IntEnum"/>
+ <enum-type name="Option" flags="Options"/>
+ <modify-function signature="setIconProvider(QAbstractFileIconProvider*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QFormLayout">
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp"
+ snippet="qwidget-retrieveobjectname"/>
+ <inject-code class="native" position="beginning" file="../glue/qtwidgets.cpp" snippet="qlayout-help-functions"/>
+
+ <enum-type name="FieldGrowthPolicy"/>
+ <enum-type name="ItemRole"/>
+ <enum-type name="RowWrapPolicy"/>
+
+ <value-type name="TakeRowResult">
+ <include file-name="QFormLayout" location="global"/>
+ </value-type>
+
+ <modify-function signature="getLayoutPosition(QLayout*,int*,QFormLayout::ItemRole*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qformlayout-fix-args" />
+ </modify-function>
+ <modify-function signature="getWidgetPosition(QWidget*,int*,QFormLayout::ItemRole*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qformlayout-fix-args" />
+ </modify-function>
+ <modify-function signature="getItemPosition(int,int*,QFormLayout::ItemRole*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtwidgets.cpp" snippet="qformlayout-fix-args" />
+ </modify-function>
+
+ <modify-function signature="addRow(QWidget*,QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addRow(QLayout*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addRow(QWidget*,QLayout*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addRow(QWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addRow(QString,QLayout*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addRow(QString,QWidget*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRow(int,QLayout*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRow(int,QWidget*,QLayout*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRow(int,QWidget*,QWidget*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRow(int,QWidget*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRow(int,QString,QLayout*)">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertRow(int,QString,QWidget*)">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setLayout(int,QFormLayout::ItemRole,QLayout*)">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setWidget(int,QFormLayout::ItemRole,QWidget*)">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setItem(int,QFormLayout::ItemRole,QLayoutItem*)">
+ <modify-argument index="3">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QGraphicsGridLayout" >
+ <modify-function signature="addItem(QGraphicsLayoutItem*,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="addItem(QGraphicsLayoutItem*,int,int,int,int,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAlignment(QGraphicsLayoutItem*,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QGraphicsLayout">
+ <modify-function signature="getContentsMargins(qreal*,qreal*,qreal*,qreal*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ <inject-code class="native" position="end">
+ <insert-template name="fix_native_return_number*,number*,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="widgetEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ </object-type>
+ <object-type name="QGraphicsLayoutItem" copyable="false" qt-register-metatype="base"
+ parent-management="true">
+ <modify-function signature="getContentsMargins(qreal*,qreal*,qreal*,qreal*)const">
+ <modify-argument index="0">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ <inject-code class="native" position="end">
+ <insert-template name="fix_native_return_number*,number*,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="setParentLayoutItem(QGraphicsLayoutItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QGraphicsLinearLayout" >
+ <modify-function signature="addItem(QGraphicsLayoutItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertItem(int,QGraphicsLayoutItem*)">
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="removeItem(QGraphicsLayoutItem*)">
+ <modify-argument index="1">
+ <parent index="this" action="remove"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setAlignment(QGraphicsLayoutItem*,QFlags&lt;Qt::AlignmentFlag&gt;)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setStretchFactor(QGraphicsLayoutItem*,int)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QGraphicsProxyWidget">
+ <modify-function signature="QGraphicsProxyWidget(QGraphicsItem*,QFlags&lt;Qt::WindowType&gt;)">
+ <modify-argument index="this">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="createProxyForChildWidget(QWidget*)">
+ <modify-argument index="return">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="newProxyWidget(const QWidget*)">
+ <modify-argument index="return">
+ <parent index="1" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setWidget(QWidget*)" allow-thread="yes">
+ <inject-code file="../glue/qtwidgets.cpp" snippet="qgraphicsproxywidget-setwidget"/>
+ </modify-function>
+ </object-type>
+ <!-- a QObject so main-thread delete redundant -->
+ <object-type name="QGraphicsWidget">
+ <modify-function signature="getContentsMargins(qreal*,qreal*,qreal*,qreal*)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="getWindowFrameMargins(qreal*,qreal*,qreal*,qreal*)const">
+ <modify-argument index="return">
+ <replace-type modified-type="PyObject"/>
+ </modify-argument>
+ <modify-argument index="1">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="2">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ </modify-argument>
+
+ <inject-code class="target" position="beginning">
+ <insert-template name="fix_number*,number*,number*,number*">
+ <replace from="$TYPE" to="qreal"/>
+ </insert-template>
+ </inject-code>
+ </modify-function>
+ <modify-function signature="setLayout(QGraphicsLayout*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="changeEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="closeEvent(QCloseEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="grabKeyboardEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="grabMouseEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="hideEvent(QHideEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="moveEvent(QGraphicsSceneMoveEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="paintWindowFrame(QPainter*,const QStyleOptionGraphicsItem*,QWidget*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="resizeEvent(QGraphicsSceneResizeEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="showEvent(QShowEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="ungrabKeyboardEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="ungrabMouseEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="windowFrameEvent(QEvent*)">
+ <modify-argument index="1" invalidate-after-use="yes"/>
+ </modify-function>
+ <modify-function signature="setStyle(QStyle*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setTabOrder(QGraphicsWidget*,QGraphicsWidget*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ <modify-argument index="2">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QPlainTextDocumentLayout"/>
+ <object-type name="QPlainTextEdit">
+ <enum-type name="LineWrapMode"/>
+ <modify-function signature="createMimeDataFromSelection() const">
+ <modify-argument index="return">
+ <define-ownership class="native" owner="c++"/>
+ <define-ownership class="target" owner="default"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setDocument(QTextDocument*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="insertFromMimeData(const QMimeData*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="print(QPagedPaintDevice*)const" rename="print_"/>
+ </object-type>
+ <object-type name="QStyledItemDelegate">
+ <modify-function signature="setItemEditorFactory(QItemEditorFactory*)">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setEditorData(QWidget*,QModelIndex)const">
+ <modify-argument index="1">
+ <parent index="this" action="add"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="setModelData(QWidget*,QAbstractItemModel*,QModelIndex)const">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <object-type name="QGesture" since="4.6">
+ <enum-type name="GestureCancelPolicy"/>
+ </object-type>
+ <object-type name="QGestureRecognizer" since="4.6">
+ <enum-type name="ResultFlag" flags="Result"/>
+ <modify-function signature="create(QObject*)">
+ <modify-argument index="return">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="registerRecognizer(QGestureRecognizer*)">
+ <modify-argument index="1">
+ <define-ownership owner="c++"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+ <object-type name="QTapAndHoldGesture" since="4.6"/>
+ <object-type name="QTapGesture" since="4.6"/>
+ <object-type name="QGraphicsAnchor" since="4.6"/>
+ <object-type name="QGraphicsAnchorLayout" since="4.6"/>
+ <object-type name="QGraphicsBlurEffect" since="4.6">
+ <enum-type name="BlurHint" flags="BlurHints"/>
+ </object-type>
+ <object-type name="QGraphicsColorizeEffect" since="4.6"/>
+ <object-type name="QGraphicsDropShadowEffect" since="4.6"/>
+
+ <object-type name="QGraphicsEffect" since="4.6">
+ <enum-type name="ChangeFlag" flags="ChangeFlags"/>
+ <enum-type name="PixmapPadMode"/>
+ </object-type>
+
+ <object-type name="QGraphicsObject" since="4.6" default-superclass="QGraphicsItem"/>
+ <object-type name="QGraphicsOpacityEffect" since="4.6"/>
+ <object-type name="QGraphicsRotation" since="4.6"/>
+ <object-type name="QGraphicsScale" since="4.6"/>
+ <object-type name="QGraphicsTransform" since="4.6"/>
+ <object-type name="QPanGesture" since="4.6"/>
+ <object-type name="QPinchGesture" since="4.6">
+ <enum-type name="ChangeFlag" flags="ChangeFlags"/>
+ </object-type>
+
+ <object-type name="QRhiWidget" since="6.7">
+ <enum-type name="Api"/>
+ <enum-type name="TextureFormat"/>
+ </object-type>
+
+ <object-type name="QSwipeGesture" since="4.6">
+ <enum-type name="SwipeDirection"/>
+ </object-type>
+
+ <value-type name="QTileRules" since="4.6"/>
+
+ <object-type name="QScroller">
+ <enum-type name="State"/>
+ <enum-type name="ScrollerGestureType"/>
+ <enum-type name="Input"/>
+ </object-type>
+ <value-type name="QScrollerProperties">
+ <enum-type name="OvershootPolicy"/>
+ <enum-type name="FrameRates"/>
+ <enum-type name="ScrollMetric"/>
+ </value-type>
+
+ <object-type name="QSizeGrip"/>
+
+ <object-type name="QSystemTrayIcon">
+ <enum-type name="ActivationReason"/>
+ <enum-type name="MessageIcon"/>
+ <modify-function signature="setContextMenu(QMenu*)">
+ <modify-argument index="1">
+ <reference-count action="set"/>
+ </modify-argument>
+ </modify-function>
+ </object-type>
+
+ <!-- The above entries may be present in the system or not. Keep this section organized. -->
+
+ <suppress-warning text="signal 'activated' in class 'QCompleter' is overloaded."/>
+ <suppress-warning text="signal 'highlighted' in class 'QCompleter' is overloaded."/>
+</typesystem>
diff --git a/sources/pyside6/PySide6/QtXml/CMakeLists.txt b/sources/pyside6/PySide6/QtXml/CMakeLists.txt
new file mode 100644
index 000000000..b0e4630dd
--- /dev/null
+++ b/sources/pyside6/PySide6/QtXml/CMakeLists.txt
@@ -0,0 +1,45 @@
+# Copyright (C) 2023 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
+project(QtXml)
+
+set(QtXml_SRC
+${QtXml_GEN_DIR}/qdomattr_wrapper.cpp
+${QtXml_GEN_DIR}/qdomcdatasection_wrapper.cpp
+${QtXml_GEN_DIR}/qdomcharacterdata_wrapper.cpp
+${QtXml_GEN_DIR}/qdomcomment_wrapper.cpp
+${QtXml_GEN_DIR}/qdomdocument_wrapper.cpp
+${QtXml_GEN_DIR}/qdomdocument_parseresult_wrapper.cpp
+${QtXml_GEN_DIR}/qdomdocumentfragment_wrapper.cpp
+${QtXml_GEN_DIR}/qdomdocumenttype_wrapper.cpp
+${QtXml_GEN_DIR}/qdomelement_wrapper.cpp
+${QtXml_GEN_DIR}/qdomentity_wrapper.cpp
+${QtXml_GEN_DIR}/qdomentityreference_wrapper.cpp
+${QtXml_GEN_DIR}/qdomimplementation_wrapper.cpp
+${QtXml_GEN_DIR}/qdomnamednodemap_wrapper.cpp
+${QtXml_GEN_DIR}/qdomnode_wrapper.cpp
+${QtXml_GEN_DIR}/qdomnodelist_wrapper.cpp
+${QtXml_GEN_DIR}/qdomnotation_wrapper.cpp
+${QtXml_GEN_DIR}/qdomprocessinginstruction_wrapper.cpp
+${QtXml_GEN_DIR}/qdomtext_wrapper.cpp
+# module is always needed
+${QtXml_GEN_DIR}/qtxml_module_wrapper.cpp
+)
+
+set(QtXml_include_dirs ${QtXml_SOURCE_DIR}
+ ${QtXml_BINARY_DIR}
+ ${Qt${QT_MAJOR_VERSION}Core_INCLUDE_DIRS}
+ ${Qt${QT_MAJOR_VERSION}Xml_INCLUDE_DIRS}
+ ${libpyside_SOURCE_DIR}
+ ${QtCore_GEN_DIR}
+ )
+set(QtXml_libraries pyside6
+ ${Qt${QT_MAJOR_VERSION}Xml_LIBRARIES})
+set(QtXml_deps QtCore)
+
+create_pyside_module(NAME QtXml
+ INCLUDE_DIRS QtXml_include_dirs
+ LIBRARIES QtXml_libraries
+ DEPS QtXml_deps
+ TYPESYSTEM_PATH QtXml_SOURCE_DIR
+ SOURCES QtXml_SRC)
diff --git a/sources/pyside6/PySide6/QtXml/typesystem_xml.xml b/sources/pyside6/PySide6/QtXml/typesystem_xml.xml
new file mode 100644
index 000000000..3661a67bf
--- /dev/null
+++ b/sources/pyside6/PySide6/QtXml/typesystem_xml.xml
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem package="PySide6.QtXml"
+ namespace-begin="QT_BEGIN_NAMESPACE" namespace-end="QT_END_NAMESPACE">
+ <load-typesystem name="QtCore/typesystem_core.xml" generate="no" />
+ <load-typesystem name="templates/core_common.xml" generate="no" />
+
+ <rejection class="QDomNode" field-name="impl"/>
+
+ <value-type name="QDomAttr"/>
+ <value-type name="QDomCDATASection"/>
+ <value-type name="QDomCharacterData"/>
+ <value-type name="QDomComment"/>
+
+
+ <value-type name="QDomDocument">
+ <enum-type name="ParseOption" flags="ParseOptions" since="6.5"/>
+ <!-- will be replaced in inject code -->
+
+ <value-type name="ParseResult"/>
+
+ <modify-function signature="setContent(const QByteArray&amp;,bool,QString*,int*,int*)">
+ <modify-argument index="3">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="5">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, str, int, int]">
+ <replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtxml.cpp" snippet="qdomdocument-setcontent" />
+ </modify-function>
+ <modify-function signature="setContent(const QString&amp;,bool,QString*,int*,int*)">
+ <modify-argument index="3">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="5">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, str, int, int]">
+ <replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtxml.cpp" snippet="qdomdocument-setcontent" />
+ </modify-function>
+ <modify-function signature="setContent(QIODevice*,bool,QString*,int*,int*)">
+ <modify-argument index="3">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="5">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, str, int, int]">
+ <replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtxml.cpp" snippet="qdomdocument-setcontent" />
+ </modify-function>
+ <modify-function signature="setContent(const QByteArray&amp;,QString*,int*,int*)">
+ <modify-argument index="2">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, str, int, int]">
+ <replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtxml.cpp" snippet="qdomdocument-setcontent" />
+ </modify-function>
+ <modify-function signature="setContent(QIODevice*,QString*,int*,int*)">
+ <modify-argument index="2">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, str, int, int]">
+ <replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtxml.cpp" snippet="qdomdocument-setcontent" />
+ </modify-function>
+ <modify-function signature="setContent(const QString&amp;,QString*,int*,int*)">
+ <modify-argument index="2">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="3">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="4">
+ <remove-argument/>
+ <remove-default-expression/>
+ </modify-argument>
+ <modify-argument index="return" pyi-type="Tuple[bool, str, int, int]">
+ <replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
+ </modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtxml.cpp" snippet="qdomdocument-setcontent" />
+ </modify-function>
+ </value-type>
+
+ <value-type name="QDomDocumentFragment"/>
+ <value-type name="QDomDocumentType"/>
+ <value-type name="QDomEntity"/>
+ <value-type name="QDomEntityReference"/>
+ <value-type name="QDomImplementation">
+ <enum-type name="InvalidDataPolicy"/>
+ </value-type>
+
+ <value-type name="QDomNamedNodeMap"/>
+
+ <value-type name="QDomNode">
+ <enum-type name="EncodingPolicy"/>
+ <enum-type name="NodeType"/>
+ <modify-function signature="save(QTextStream&amp;,int,QDomNode::EncodingPolicy)const" allow-thread="yes"/>
+ </value-type>
+
+ <value-type name="QDomNodeList"/>
+ <value-type name="QDomNotation"/>
+ <value-type name="QDomProcessingInstruction"/>
+
+ <value-type name="QDomText"/>
+
+ <value-type name="QDomElement">
+ <!-- PYSIDE-1372
+ We will leave only one for int, and one for float since Python
+ doesn't have other variations on the primitive types.
+ Only 'qlonglong' and 'double' will be available from the Qt API.
+ TODO: This will require a better review of the shiboken primitive
+ types converters, since this situation might happen on
+ different signatures.
+ -->
+ <modify-function signature="setAttribute(const QString&amp;, uint)" remove="all"/>
+ <modify-function signature="setAttribute(const QString&amp;, float)" remove="all"/>
+ <modify-function signature="setAttribute(const QString&amp;, int)" remove="all"/>
+ <modify-function signature="setAttribute(const QString&amp;, qulonglong)" remove="all"/>
+ </value-type>
+
+</typesystem>
+
diff --git a/sources/pyside6/PySide6/__feature__.pyi.in b/sources/pyside6/PySide6/__feature__.pyi.in
new file mode 100644
index 000000000..c9a8907d1
--- /dev/null
+++ b/sources/pyside6/PySide6/__feature__.pyi.in
@@ -0,0 +1,10 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+snake_case = 0x01
+true_property = 0x02
+
+all_feature_names = [
+ "snake_case",
+ "true_property",
+]
diff --git a/sources/pyside6/PySide6/__init__.py.in b/sources/pyside6/PySide6/__init__.py.in
new file mode 100644
index 000000000..d0a4ecc37
--- /dev/null
+++ b/sources/pyside6/PySide6/__init__.py.in
@@ -0,0 +1,124 @@
+import os
+import sys
+from pathlib import Path
+from textwrap import dedent
+
+# __all__ is also corrected below.
+__all__ = list("Qt" + body for body in
+ "@all_module_shortnames@"
+ .split(";"))
+__version__ = "@FINAL_PACKAGE_VERSION@"
+__version_info__ = (@BINDING_API_MAJOR_VERSION@, @BINDING_API_MINOR_VERSION@, @BINDING_API_MICRO_VERSION@, "@BINDING_API_PRE_RELEASE_VERSION_TYPE@", "@BINDING_API_PRE_RELEASE_VERSION@")
+
+
+def _additional_dll_directories(package_dir):
+ # Find shiboken6 relative to the package directory.
+ root = Path(package_dir).parent
+ # Check for a flat .zip as deployed by cx_free(PYSIDE-1257)
+ if root.suffix == '.zip':
+ return []
+ shiboken6 = root / 'shiboken6'
+ if shiboken6.is_dir(): # Standard case, only shiboken6 is needed
+ return [shiboken6]
+ # The below code is for the build process when generate_pyi.py
+ # is executed in the build directory. We need libpyside and Qt in addition.
+ shiboken6 = Path(root).parent / 'shiboken6' / 'libshiboken'
+ if not shiboken6.is_dir():
+ raise ImportError(str(shiboken6) + ' does not exist')
+ result = [shiboken6, root / 'libpyside']
+ libpysideqml = root / 'libpysideqml'
+ if libpysideqml.is_dir():
+ result.append(libpysideqml)
+ for path in os.environ.get('PATH').split(';'):
+ if path:
+ if (Path(path) / 'qmake.exe').exists():
+ result.append(path)
+ break
+ return result
+
+
+def _setupQtDirectories():
+ # On Windows we need to explicitly import the shiboken6 module so
+ # that the libshiboken.dll dependency is loaded by the time a
+ # Qt module is imported. Otherwise due to PATH not containing
+ # the shiboken6 module path, the Qt module import would fail
+ # due to the missing libshiboken dll.
+ # In addition, as of Python 3.8, the shiboken package directory
+ # must be added to the DLL search paths so that shiboken6.dll
+ # is found.
+ # We need to do the same on Linux and macOS, because we do not
+ # embed rpaths into the PySide6 libraries that would point to
+ # the libshiboken library location. Importing the module
+ # loads the libraries into the process memory beforehand, and
+ # thus takes care of it for us.
+
+ pyside_package_dir = Path(__file__).parent.resolve()
+
+ if sys.platform == 'win32' and sys.version_info[0] == 3 and sys.version_info[1] >= 8:
+ for dir in _additional_dll_directories(pyside_package_dir):
+ os.add_dll_directory(os.fspath(dir))
+
+ try:
+ # PYSIDE-1497: we use the build dir or install dir or site-packages, whatever the path
+ # setting dictates. There is no longer a difference in path structure.
+ from shiboken6 import Shiboken
+ except Exception:
+ paths = ', '.join(sys.path)
+ print(f"PySide6/__init__.py: Unable to import Shiboken from {paths}",
+ file=sys.stderr)
+ raise
+
+ if sys.platform == 'win32':
+ # PATH has to contain the package directory, otherwise plugins
+ # won't be able to find their required Qt libraries (e.g. the
+ # svg image plugin won't find Qt5Svg.dll).
+ os.environ['PATH'] = os.fspath(pyside_package_dir) + os.pathsep + os.environ['PATH']
+
+ # On Windows, add the PySide6\openssl folder (created by setup.py's
+ # --openssl option) to the PATH so that the SSL DLLs can be found
+ # when Qt tries to dynamically load them. Tell Qt to load them and
+ # then reset the PATH.
+ openssl_dir = pyside_package_dir / 'openssl'
+ if openssl_dir.exists():
+ path = os.environ['PATH']
+ try:
+ os.environ['PATH'] = os.fspath(openssl_dir) + os.pathsep + path
+ try:
+ from . import QtNetwork
+ except ImportError:
+ pass
+ else:
+ QtNetwork.QSslSocket.supportsSsl()
+ finally:
+ os.environ['PATH'] = path
+
+
+def _find_all_qt_modules():
+ # Since the wheel split, the __all__ variable cannot be computed statically,
+ # because we don't know all modules in advance.
+
+ # Instead, we look into the file system and quickly build a list of all
+ # existing .pyi files, because importing is not desired and also impossible during import.
+ # By using the initially created list, we can keep some order intact.
+ location = Path(__file__).resolve().parent
+
+ # Note: We should _not_ call this function while still building, but use the existing value!
+ in_build = Path("@CMAKE_BINARY_DIR@") in location.parents
+
+ if in_build:
+ return __all__
+
+ files = os.listdir(location)
+ unordered = set(name[:-4] for name in files if name.startswith("Qt") and name.endswith(".pyi"))
+ ordered_part = __all__
+ result = []
+ for name in ordered_part:
+ if name in unordered:
+ result.append(name)
+ unordered.remove(name)
+ result.extend(unordered)
+ return result
+
+
+__all__ = _find_all_qt_modules()
+_setupQtDirectories()
diff --git a/sources/pyside6/PySide6/_config.py.in b/sources/pyside6/PySide6/_config.py.in
new file mode 100644
index 000000000..27ee0789b
--- /dev/null
+++ b/sources/pyside6/PySide6/_config.py.in
@@ -0,0 +1,17 @@
+built_modules = list(name for name in
+ "@all_module_shortnames@"
+ .split(";"))
+
+shiboken_library_soversion = str(@SHIBOKEN_SO_VERSION@)
+pyside_library_soversion = str(@PYSIDE_SO_VERSION@)
+
+version = "@FINAL_PACKAGE_VERSION@"
+version_info = (@BINDING_API_MAJOR_VERSION@, @BINDING_API_MINOR_VERSION@, @BINDING_API_MICRO_VERSION@, "@BINDING_API_PRE_RELEASE_VERSION_TYPE@", "@BINDING_API_PRE_RELEASE_VERSION@")
+
+@PACKAGE_BUILD_DATE@
+@PACKAGE_BUILD_COMMIT_DATE@
+@PACKAGE_BUILD_COMMIT_HASH@
+@PACKAGE_BUILD_COMMIT_HASH_DESCRIBED@
+@PACKAGE_SETUP_PY_PACKAGE_TIMESTAMP_ASSIGNMENT@
+@PACKAGE_SETUP_PY_PACKAGE_VERSION_ASSIGNMENT@
+@QT_MACOS_DEPLOYMENT_TARGET@
diff --git a/sources/pyside6/PySide6/doc/qtqml_functions.rst b/sources/pyside6/PySide6/doc/qtqml_functions.rst
new file mode 100644
index 000000000..31801b245
--- /dev/null
+++ b/sources/pyside6/PySide6/doc/qtqml_functions.rst
@@ -0,0 +1,152 @@
+// @snippet qmlregistersingletoninstance
+.. py:function:: qmlRegisterSingletonInstance(pytype: type,\
+ uri: str,\
+ versionMajor: int,\
+ versionMinor: int,\
+ typeName: str,\
+ instanceObject: object) -> int
+
+ :param type pytype: Python class
+ :param str uri: uri to use while importing the component in QML
+ :param int versionMajor: major version
+ :param int versionMinor: minor version
+ :param str typeName: name exposed to QML
+ :param object instanceObject: singleton object to be registered
+ :return: int (the QML type id)
+
+This function registers a singleton Python object *instanceObject*, with a
+particular *uri* and *typeName*. Its version is a combination of *versionMajor*
+and *versionMinor*. Use this function to register an object of the given type
+*pytype* as a singleton type.
+// @snippet qmlregistersingletoninstance
+
+// @snippet qmlregistersingletontype_qobject_nocallback
+.. py:function:: qmlRegisterSingletonType(pytype: type, uri: str, versionMajor: int, versionMinor: int, typeName: str) -> int
+
+ :param type pytype: Python class
+ :param str uri: uri to use while importing the component in QML
+ :param int versionMajor: major version
+ :param int versionMinor: minor version
+ :param str typeName: name exposed to QML
+ :return: int (the QML type id)
+
+This function registers a Python type as a singleton in the QML system.
+
+Alternatively, the :ref:`QmlSingleton` decorator can be used.
+// @snippet qmlregistersingletontype_qobject_nocallback
+
+// @snippet qmlregistersingletontype_qobject_callback
+.. py:function:: qmlRegisterSingletonType(pytype: type, uri: str, versionMajor: int, versionMinor: int, typeName: str, callback: object) -> int
+
+ :param type pytype: Python class
+ :param str uri: uri to use while importing the component in QML
+ :param int versionMajor: major version
+ :param int versionMinor: minor version
+ :param str typeName: name exposed to QML
+ :param object callback: Python callable (to handle Python type)
+ :return: int (the QML type id)
+
+This function registers a Python type as a singleton in the QML system using
+the provided callback (which gets a QQmlEngine as a parameter) to generate the
+singleton.
+// @snippet qmlregistersingletontype_qobject_callback
+
+// @snippet qmlregistersingletontype_qjsvalue
+.. py:function:: qmlRegisterSingletonType(uri: str, versionMajor: int, versionMinor: int, typeName: str, callback: object) -> int
+
+ :param str uri: uri to use while importing the component in QML
+ :param int versionMajor: major version
+ :param int versionMinor: minor version
+ :param str typeName: name exposed to QML
+ :param object callback: Python callable (to handle QJSValue)
+ :return: int (the QML type id)
+
+This function registers a QJSValue as a singleton in the QML system using the
+provided callback (which gets a QQmlEngine as a parameter) to generate the
+singleton.
+// @snippet qmlregistersingletontype_qjsvalue
+
+// @snippet qmlregistertype
+.. py:function:: qmlRegisterType(pytype: type, uri: str, versionMajor: int, versionMinor: int, qmlName: str) -> int
+
+ :param type pytype: Python class
+ :param str uri: uri to use while importing the component in QML
+ :param int versionMajor: major version
+ :param int versionMinor: minor version
+ :param str qmlName: name exposed to QML
+ :return: int (the QML type id)
+
+This function registers the Python *type* in the QML system with the name
+*qmlName*, in the library imported from *uri* having the version number
+composed from *versionMajor* and *versionMinor*. For example, this registers a
+Python class 'MySliderItem' as a QML type named 'Slider' for version '1.0' of a
+module called 'com.mycompany.qmlcomponents':
+
+ ::
+
+ qmlRegisterType(MySliderItem, "com.mycompany.qmlcomponents", 1, 0, "Slider")
+
+Once this is registered, the type can be used in QML by importing the specified
+module name and version number:
+
+ ::
+
+ import com.mycompany.qmlcomponents 1.0
+
+ Slider { ... }
+
+Note that it's perfectly reasonable for a library to register types to older
+versions than the actual version of the library. Indeed, it is normal for the
+new library to allow QML written to previous versions to continue to work, even
+if more advanced versions of some of its types are available.
+// @snippet qmlregistertype
+
+// @snippet qmlregisteruncreatabletype
+.. py:function:: qmlRegisterUncreatableType(pytype: type, uri: str, versionMajor: int, versionMinor: int, qmlName: str, noCreationReason: str) -> int
+
+ :param type pytype: Python class
+ :param str uri: uri to use while importing the component in QML
+ :param int versionMajor: major version
+ :param int versionMinor: minor version
+ :param str qmlName: name exposed to QML
+ :param str noCreationReason: Error message shown when trying to create the QML type
+ :return: int (the QML type id)
+
+This function registers the Python *type* in the QML system as an uncreatable
+type with the name *qmlName*, in the library imported from *uri* having the
+version number composed from *versionMajor* and *versionMinor*, showing
+*noCreationReason* as an error message when creating the type is attempted. For
+example, this registers a Python class 'MySliderItem' as a QML type named
+'Slider' for version '1.0' of a module called 'com.mycompany.qmlcomponents':
+
+ ::
+ qmlRegisterUncreatableType(MySliderItem, "com.mycompany.qmlcomponents", 1, 0, "Slider", "Slider cannot be created.")
+
+Note that it's perfectly reasonable for a library to register types to older
+versions than the actual version of the library. Indeed, it is normal for the
+new library to allow QML written to previous versions to continue to work, even
+if more advanced versions of some of its types are available.
+
+Alternatively, the :ref:`QmlUncreatable` decorator can be used.
+// @snippet qmlregisteruncreatabletype
+
+// @snippet qqmlengine-singletoninstance-qmltypeid
+Returns the instance of a singleton type that was registered under qmlTypeId.
+For ``QObject``-derived singleton types, the ``QObject`` instance is returned,
+otherwise a ``QJSValue`` or ``None``.
+
+It is recommended to store the QML type id, e.g. as a static member in the
+singleton class. The lookup via qmlTypeId() is costly.
+// @snippet qqmlengine-singletoninstance-qmltypeid
+
+// @snippet qqmlengine-singletoninstance-typename Returns the instance of a
+singleton type named typeName from the module specified by uri.
+For ``QObject``-derived singleton types, the ``QObject`` instance is returned,
+otherwise a ``QJSValue`` or ``None``.
+
+This method can be used as an alternative to calling qmlTypeId followed by the
+id based overload of singletonInstance. This is convenient when one only needs
+to do a one time setup of a singleton; if repeated access to the singleton is
+required, caching its typeId will allow faster subsequent access via the
+type-id based overload.
+// @snippet qqmlengine-singletoninstance-typename
diff --git a/sources/pyside6/PySide6/doc/qtquicktest.rst b/sources/pyside6/PySide6/doc/qtquicktest.rst
new file mode 100644
index 000000000..9df2af071
--- /dev/null
+++ b/sources/pyside6/PySide6/doc/qtquicktest.rst
@@ -0,0 +1,62 @@
+// @snippet quick_test_main_documentation
+
+Sets up the entry point for a Qt Quick Test application.
+The ``name`` argument uniquely identifies this set of tests.
+
+``sys.argv`` should be passed to the ``argv`` argument to ensure
+propagation of the command line arguments.
+
+.. note:: The function assumes that your test sources are in the current
+ directory, unless the ``QUICK_TEST_SOURCE_DIR`` environment
+ variable is set or a directory is passed in ``dir``.
+
+The following snippet demonstrates the use of this function:
+
+.. code-block:: Python
+
+ import sys
+ from PySide6.QtQuickTest import QUICK_TEST_MAIN
+
+ ex = QUICK_TEST_MAIN("example", sys.argv)
+ sys.exit(ex)
+
+
+// @snippet quick_test_main_documentation
+
+// @snippet quick_test_main_with_setup_documentation
+
+Sets up the entry point for a Qt Quick Test application.
+The ``name`` argument uniquely identifies this set of tests.
+
+``sys.argv`` should be passed to the ``argv`` argument to ensure
+propagation of the command line arguments.
+
+This function is identical to ``QUICK_TEST_MAIN()``, except that it takes an
+additional argument ``setup``, the type of a ``QObject``-derived
+class which will be instantiated. With this class, it is possible to define
+additional setup code to execute before running the QML test.
+
+The following snippet demonstrates the use of this function:
+
+.. code-block:: Python
+
+ import sys
+ from PySide6.QtQuickTest import QUICK_TEST_MAIN_WITH_SETUP
+
+ class CustomTestSetup(QObject):
+ def __init__(self, parent=None):
+ super().__init__(parent)
+
+ @Slot(QQmlEngine)
+ def qmlEngineAvailable(self, qmlEngine):
+ pass
+
+ ex = QUICK_TEST_MAIN_WITH_SETUP("qquicktestsetup", CustomTestSetup, sys.argv)
+ sys.exit(ex)
+
+
+.. note:: The function assumes that your test sources are in the current
+ directory, unless the ``QUICK_TEST_SOURCE_DIR`` environment
+ variable is set or a directory is passed in ``dir``.
+
+// @snippet quick_test_main_with_setup_documentation
diff --git a/sources/pyside6/PySide6/doc/qtuitools.rst b/sources/pyside6/PySide6/doc/qtuitools.rst
new file mode 100644
index 000000000..a8856f1af
--- /dev/null
+++ b/sources/pyside6/PySide6/doc/qtuitools.rst
@@ -0,0 +1,68 @@
+// @snippet quiloader-registercustomwidget
+Registers a Python created custom widget to QUiLoader, so it can be recognized
+when loading a `.ui` file. The custom widget type is passed via the
+``customWidgetType`` argument. This is needed when you want to override a
+virtual method of some widget in the interface, since duck punching will not
+work with widgets created by QUiLoader based on the contents of the `.ui` file.
+
+(Remember that
+`duck punching virtual methods is an invitation for your own demise! <https://doc.qt.io/qtforpython/shiboken6/wordsofadvice.html#duck-punching-and-virtual-methods>`_)
+
+Let's see an obvious example. If you want to create a new widget it's probable you'll end up
+overriding :class:`~PySide6.QtGui.QWidget`'s :meth:`~PySide6.QtGui.QWidget.paintEvent` method.
+
+.. code-block:: python
+
+ class Circle(QWidget):
+ def paintEvent(self, event):
+ with QPainter(self) as painter:
+ painter.setPen(self.pen)
+ painter.setBrush(QBrush(self.color))
+ painter.drawEllipse(event.rect().center(), 20, 20)
+
+ # ...
+
+ loader = QUiLoader()
+ loader.registerCustomWidget(Circle)
+ circle = loader.load('circle.ui')
+ circle.show()
+
+ # ...
+// @snippet quiloader-registercustomwidget
+
+// @snippet loaduitype
+.. currentmodule:: PySide6.QtUiTools
+
+loadUiType
+***********
+.. py:function:: loadUiType(uifile: str) -> tuple(object, object)
+
+ :param str uifile: The name of the `.ui` file
+ :return: tuple(object, object)
+
+This function generates and loads a `.ui` file at runtime, and it returns
+a `tuple` containing the reference to the Python class, and the base class.
+
+We recommend not to use this approach as the workflow should be to generate a Python file
+from the `.ui` file, and then import and load it to use it, but we do understand that
+there are some corner cases when such functionality is required.
+
+The internal process relies on `uic` being in the PATH.
+The `pyside6-uic` wrapper uses a shipped `uic` that is located in the
+`site-packages/PySide6/uic`, so PATH needs to be updated to use that if there
+is no `uic` in the system.
+
+A simple use case is::
+
+ from PySide6.QtUiTools import loadUiType
+
+ generated_class, base_class = loadUiType("themewidget.ui")
+ # the values will be:
+ # (<class '__main__.Ui_ThemeWidgetForm'>, <class 'PySide6.QtWidgets.QWidget'>)
+
+ widget = base_class()
+ form = generated_class()
+ form.setupUi(widget)
+ # form.a_widget_member.a_method_of_member()
+ widget.show()
+// @snippet loaduitype
diff --git a/sources/pyside6/PySide6/global.h.in b/sources/pyside6/PySide6/global.h.in
new file mode 100644
index 000000000..9a1e001fe
--- /dev/null
+++ b/sources/pyside6/PySide6/global.h.in
@@ -0,0 +1,20 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include <QtCore/qnamespace.h>
+
+#if @ENABLE_MAC@
+# define Q_OS_MAC
+#endif
+#if @ENABLE_WIN@
+# define Q_OS_WIN
+#endif
+#if @ENABLE_UNIX@
+# define Q_OS_UNIX
+#endif
+
+// There are symbols in Qt that exist in Debug but
+// not in release
+#define QT_NO_DEBUG
+
+// Here are now all configured modules appended:
diff --git a/sources/pyside6/PySide6/glue/qhttpserver.cpp b/sources/pyside6/PySide6/glue/qhttpserver.cpp
new file mode 100644
index 000000000..b6e485e2c
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qhttpserver.cpp
@@ -0,0 +1,50 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// Note: Lambdas need to be inline, QTBUG-104481
+// @snippet qhttpserver-route
+QString rule = %CONVERTTOCPP[QString](%PYARG_1);
+auto *callable = %PYARG_2;
+
+bool cppResult = %CPPSELF.%FUNCTION_NAME(rule,
+ [callable](const QHttpServerRequest &request) -> QString {
+ Shiboken::GilState state;
+ auto *requestPtr = &request;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ PyTuple_SET_ITEM(arglist, 0,
+ %CONVERTTOPYTHON[QHttpServerRequest *](requestPtr));
+ PyObject *ret = PyObject_CallObject(callable, arglist);
+ if (PyErr_Occurred())
+ PyErr_Print();
+ if (ret == nullptr)
+ return QString{};
+ QString cppResult = %CONVERTTOCPP[QString](ret);
+ return cppResult;
+});
+
+%PYARG_0 = %CONVERTTOPYTHON[bool](cppResult);
+// @snippet qhttpserver-route
+
+// @snippet qhttpserver-afterrequest
+auto *callable = %PYARG_1;
+
+%CPPSELF.%FUNCTION_NAME([callable](QHttpServerResponse &&response,
+ const QHttpServerRequest &request) {
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(2));
+ auto *responsePtr = &response;
+ auto *requestPtr = &request;
+ PyTuple_SET_ITEM(arglist, 0,
+ %CONVERTTOPYTHON[QHttpServerResponse *](responsePtr));
+ PyTuple_SET_ITEM(arglist, 1,
+ %CONVERTTOPYTHON[QHttpServerRequest *](requestPtr));
+ PyObject_CallObject(callable, arglist);
+ if (PyErr_Occurred())
+ PyErr_Print();
+ return std::move(response);
+});
+// @snippet qhttpserver-afterrequest
diff --git a/sources/pyside6/PySide6/glue/qtcharts.cpp b/sources/pyside6/PySide6/glue/qtcharts.cpp
new file mode 100644
index 000000000..a99dbbb8a
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtcharts.cpp
@@ -0,0 +1,16 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qchart-releaseownership
+Shiboken::Object::releaseOwnership(%PYARG_1);
+// @snippet qchart-releaseownership
+
+// @snippet qxyseries-appendnp-numpy-x-y
+const auto points = PySide::Numpy::xyDataToQPointFList(%PYARG_1, %PYARG_2);
+%CPPSELF.append(points);
+// @snippet qxyseries-appendnp-numpy-x-y
+
+// @snippet qxyseries-replacenp-numpy-x-y
+const auto points = PySide::Numpy::xyDataToQPointFList(%PYARG_1, %PYARG_2);
+%CPPSELF.replace(points);
+// @snippet qxyseries-replacenp-numpy-x-y
diff --git a/sources/pyside6/PySide6/glue/qtcore.cpp b/sources/pyside6/PySide6/glue/qtcore.cpp
new file mode 100644
index 000000000..0c206db72
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtcore.cpp
@@ -0,0 +1,2150 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet include-pyside
+#include <pysideinit.h>
+#include <limits>
+#include "glue/core_snippets_p.h"
+// @snippet include-pyside
+
+// @snippet core-snippets-p-h
+#include "glue/core_snippets_p.h"
+// @snippet core-snippets-p-h
+
+// @snippet qarg_helper
+
+// Helper for the Q_ARG/Q_RETURN_ARG functions, creating a meta type
+// and instance.
+struct QArgData
+{
+ operator bool() const { return metaType.isValid() && data != nullptr; }
+
+ QMetaType metaType;
+ void *data = nullptr;
+};
+
+QArgData qArgDataFromPyType(PyObject *t)
+{
+ QArgData result;
+ const char *typeName{};
+ if (PyType_Check(t)) {
+ auto *pyType = reinterpret_cast<PyTypeObject *>(t);
+ typeName = pyType->tp_name;
+ result.metaType = PySide::qMetaTypeFromPyType(pyType);
+ } else if (PyUnicode_Check(t)) {
+ typeName = Shiboken::String::toCString(t);
+ result.metaType = QMetaType::fromName(typeName);
+ } else {
+ PyErr_Format(PyExc_RuntimeError, "%s: Parameter should be a type or type string.",
+ __FUNCTION__);
+ return result;
+ }
+
+ if (!result.metaType.isValid()) {
+ PyErr_Format(PyExc_RuntimeError, "%s: Unable to find a QMetaType for \"%s\".",
+ __FUNCTION__, typeName);
+ return result;
+ }
+
+ result.data = result.metaType.create();
+ if (result.data == nullptr) {
+ PyErr_Format(PyExc_RuntimeError, "%s: Unable to create an instance of \"%s\" (%s).",
+ __FUNCTION__, typeName, result.metaType.name());
+ return result;
+ }
+ return result;
+}
+// @snippet qarg_helper
+
+// @snippet settings-value-helpers
+// Convert a QVariant to a desired primitive type
+static PyObject *convertToPrimitiveType(const QVariant &out, int metaTypeId)
+{
+ switch (metaTypeId) {
+ case QMetaType::QByteArray:
+ return PyBytes_FromString(out.toByteArray().constData());
+ case QMetaType::QString:
+ return PyUnicode_FromString(out.toByteArray().constData());
+ case QMetaType::Short:
+ case QMetaType::Long:
+ case QMetaType::LongLong:
+ case QMetaType::UShort:
+ case QMetaType::ULong:
+ case QMetaType::ULongLong:
+ case QMetaType::Int:
+ case QMetaType::UInt:
+ return PyLong_FromDouble(out.toFloat());
+ case QMetaType::Double:
+ case QMetaType::Float:
+ case QMetaType::Float16:
+ return PyFloat_FromDouble(out.toFloat());
+ case QMetaType::Bool:
+ if (out.toBool()) {
+ Py_RETURN_TRUE;
+ }
+ Py_RETURN_FALSE;
+ default:
+ break;
+ }
+ return nullptr;
+}
+
+// Helper for QSettings::value() to convert a value to the desired type
+static PyObject *settingsTypeCoercion(const QVariant &out, PyTypeObject *typeObj)
+{
+ if (typeObj == &PyList_Type) {
+ // Convert any string, etc, to a list of 1 element
+ if (auto *primitiveValue = convertToPrimitiveType(out, out.typeId())) {
+ PyObject *list = PyList_New(1);
+ PyList_SET_ITEM(list, 0, primitiveValue);
+ return list;
+ }
+
+ const QByteArray out_ba = out.toByteArray();
+ if (out_ba.isEmpty())
+ return PyList_New(0);
+
+ const QByteArrayList valuesList = out_ba.split(',');
+ const Py_ssize_t valuesSize = valuesList.size();
+ PyObject *list = PyList_New(valuesSize);
+ for (Py_ssize_t i = 0; i < valuesSize; ++i) {
+ PyObject *item = PyUnicode_FromString(valuesList.at(i).constData());
+ PyList_SET_ITEM(list, i, item);
+ }
+ return list;
+ }
+
+ if (typeObj == &PyBytes_Type)
+ return convertToPrimitiveType(out, QMetaType::QByteArray);
+ if (typeObj == &PyUnicode_Type)
+ return convertToPrimitiveType(out, QMetaType::QString);
+ if (typeObj == &PyLong_Type)
+ return convertToPrimitiveType(out, QMetaType::Int);
+ if (typeObj == &PyFloat_Type)
+ return convertToPrimitiveType(out, QMetaType::Double);
+ if (typeObj == &PyBool_Type)
+ return convertToPrimitiveType(out, QMetaType::Bool);
+
+ // TODO: PyDict_Type and PyTuple_Type
+ PyErr_SetString(PyExc_TypeError,
+ "Invalid type parameter.\n"
+ "\tUse 'list', 'bytes', 'str', 'int', 'float', 'bool', "
+ "or a Qt-derived type");
+ return nullptr;
+}
+
+static bool isEquivalentSettingsType(PyTypeObject *typeObj, int metaTypeId)
+{
+ switch (metaTypeId) {
+ case QMetaType::QVariantList:
+ case QMetaType::QStringList:
+ return typeObj == &PyList_Type;
+ case QMetaType::QByteArray:
+ return typeObj == &PyBytes_Type;
+ case QMetaType::QString:
+ return typeObj == &PyUnicode_Type;
+ case QMetaType::Short:
+ case QMetaType::Long:
+ case QMetaType::LongLong:
+ case QMetaType::UShort:
+ case QMetaType::ULong:
+ case QMetaType::ULongLong:
+ case QMetaType::Int:
+ case QMetaType::UInt:
+ return typeObj == &PyLong_Type;
+ case QMetaType::Double:
+ case QMetaType::Float:
+ case QMetaType::Float16:
+ return typeObj == &PyFloat_Type;
+ case QMetaType::Bool:
+ return typeObj == &PyBool_Type;
+ default:
+ break;
+ }
+ return false;
+}
+// @snippet settings-value-helpers
+
+// @snippet qsettings-value
+// If we enter the kwds, means that we have a defaultValue or
+// at least a type.
+// This avoids that we are passing '0' as defaultValue.
+// defaultValue can also be passed as positional argument,
+// not only as keyword.
+// PySide-535: Allow for empty dict instead of nullptr in PyPy
+QVariant out;
+if ((kwds && PyDict_Size(kwds) > 0) || numArgs > 1) {
+ Py_BEGIN_ALLOW_THREADS
+ out = %CPPSELF.value(%1, %2);
+ Py_END_ALLOW_THREADS
+} else {
+ Py_BEGIN_ALLOW_THREADS
+ out = %CPPSELF.value(%1);
+ Py_END_ALLOW_THREADS
+}
+
+PyTypeObject *typeObj = reinterpret_cast<PyTypeObject*>(%PYARG_3);
+
+if (typeObj && !Shiboken::ObjectType::checkType(typeObj)
+ && !isEquivalentSettingsType(typeObj, out.typeId())) {
+ %PYARG_0 = settingsTypeCoercion(out, typeObj);
+} else {
+ if (out.isValid()) {
+ %PYARG_0 = %CONVERTTOPYTHON[QVariant](out);
+ } else {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+ }
+}
+
+// @snippet qsettings-value
+
+// @snippet metatype-from-type
+%0 = new %TYPE(PySide::qMetaTypeFromPyType(reinterpret_cast<PyTypeObject *>(%1)));
+// @snippet metatype-from-type
+
+// @snippet metatype-from-metatype-type
+Shiboken::AutoDecRef intArg(PyObject_GetAttrString(%PYARG_1, "value"));
+%0 = new %TYPE(PyLong_AsLong(intArg));
+// @snippet metatype-from-metatype-type
+
+// @snippet conversion-pytypeobject-qmetatype
+auto *pyType = reinterpret_cast<PyTypeObject *>(%in);
+%out = PySide::qMetaTypeFromPyType(pyType);
+// @snippet conversion-pytypeobject-qmetatype
+
+// @snippet conversion-qmetatype-pytypeobject
+auto pyType = Shiboken::Conversions::getPythonTypeObject(%in.name());
+%out = pyType ? (reinterpret_cast<PyObject *>(pyType)) : Py_None;
+Py_INCREF(%out);
+return %out;
+// @snippet conversion-qmetatype-pytypeobject
+
+// @snippet qvariant-conversion
+static QVariant QVariant_convertToVariantMap(PyObject *map)
+{
+ Py_ssize_t pos = 0;
+ Shiboken::AutoDecRef keys(PyDict_Keys(map));
+ if (!QVariant_isStringList(keys))
+ return {};
+ PyObject *key;
+ PyObject *value;
+ QMap<QString,QVariant> ret;
+ while (PyDict_Next(map, &pos, &key, &value)) {
+ QString cppKey = %CONVERTTOCPP[QString](key);
+ QVariant cppValue = %CONVERTTOCPP[QVariant](value);
+ ret.insert(cppKey, cppValue);
+ }
+ return QVariant(ret);
+}
+static QVariant QVariant_convertToVariantList(PyObject *list)
+{
+ if (QVariant_isStringList(list)) {
+ QList<QString > lst = %CONVERTTOCPP[QList<QString>](list);
+ return QVariant(QStringList(lst));
+ }
+ QVariant valueList = QVariant_convertToValueList(list);
+ if (valueList.isValid())
+ return valueList;
+
+ if (PySequence_Size(list) < 0) {
+ // clear the error if < 0 which means no length at all
+ PyErr_Clear();
+ return {};
+ }
+
+ QList<QVariant> lst;
+ Shiboken::AutoDecRef fast(PySequence_Fast(list, "Failed to convert QVariantList"));
+ const Py_ssize_t size = PySequence_Fast_GET_SIZE(fast.object());
+ for (Py_ssize_t i = 0; i < size; ++i) {
+ PyObject *pyItem = PySequence_Fast_GET_ITEM(fast.object(), i);
+ QVariant item = %CONVERTTOCPP[QVariant](pyItem);
+ lst.append(item);
+ }
+ return QVariant(lst);
+}
+
+using SpecificConverter = Shiboken::Conversions::SpecificConverter;
+
+static std::optional<SpecificConverter> converterForQtType(const char *typeNameC)
+{
+ // Fix typedef "QGenericMatrix<3,3,float>" -> QMatrix3x3". The reverse
+ // conversion happens automatically in QMetaType::fromName() in
+ // QVariant_resolveMetaType().
+ QByteArrayView typeNameV(typeNameC);
+ if (typeNameV.startsWith("QGenericMatrix<") && typeNameV.endsWith(",float>")) {
+ QByteArray typeName = typeNameV.toByteArray();
+ typeName.remove(1, 7);
+ typeName.remove(7, 1); // '<'
+ typeName.chop(7);
+ typeName.replace(',', 'x');
+ SpecificConverter matrixConverter(typeName.constData());
+ if (matrixConverter)
+ return matrixConverter;
+ }
+ SpecificConverter converter(typeNameC);
+ if (converter)
+ return converter;
+ return std::nullopt;
+}
+// @snippet qvariant-conversion
+
+// @snippet qt-qabs
+double _abs = qAbs(%1);
+%PYARG_0 = %CONVERTTOPYTHON[double](_abs);
+// @snippet qt-qabs
+
+// @snippet qt-addpostroutine
+PySide::addPostRoutine(%1);
+// @snippet qt-addpostroutine
+
+// @snippet qt-qaddpostroutine
+qAddPostRoutine(PySide::globalPostRoutineCallback);
+// @snippet qt-qaddpostroutine
+
+// @snippet qcompress-buffer
+auto *ptr = reinterpret_cast<uchar*>(Shiboken::Buffer::getPointer(%PYARG_1));
+QByteArray compressed = %FUNCTION_NAME(ptr, %2, %3);
+%PYARG_0 = %CONVERTTOPYTHON[QByteArray](compressed);
+// @snippet qcompress-buffer
+
+// @snippet quncompress-buffer
+auto *ptr = reinterpret_cast<uchar*>(Shiboken::Buffer::getPointer(%PYARG_1));
+QByteArray uncompressed = %FUNCTION_NAME(ptr, %2);
+%PYARG_0 = %CONVERTTOPYTHON[QByteArray](uncompressed);
+// @snippet quncompress-buffer
+
+// @snippet qt-version
+QList<QByteArray> version = QByteArray(qVersion()).split('.');
+PyObject *pyQtVersion = PyTuple_New(3);
+for (int i = 0; i < 3; ++i)
+ PyTuple_SET_ITEM(pyQtVersion, i, PyLong_FromLong(version[i].toInt()));
+PyModule_AddObject(module, "__version_info__", pyQtVersion);
+PyModule_AddStringConstant(module, "__version__", qVersion());
+// @snippet qt-version
+
+// @snippet qobject-connect
+#include <qobjectconnect.h>
+// @snippet qobject-connect
+
+// @snippet qobject-connect-1
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectConnect(%1, %2, %CPPSELF, %3, %4);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-connect-1
+
+// @snippet qobject-connect-2
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectConnect(%1, %2, %3, %4, %5);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-connect-2
+
+// @snippet qobject-connect-3
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectConnect(%1, %2, %3, %4, %5);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-connect-3
+
+// @snippet qobject-connect-4
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectConnectCallback(%1, %2, %PYARG_3, %4);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-connect-4
+
+// @snippet qobject-connect-4-context
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectConnectCallback(%1, %2, %3, %PYARG_4, %5);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-connect-4-context
+
+// @snippet qobject-connect-5
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectConnectCallback(%CPPSELF, %1, %PYARG_2, %3);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-connect-5
+
+// @snippet qobject-connect-6
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectConnect(%CPPSELF, %1, %2, %3, %4);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-connect-6
+
+// @snippet qobject-emit
+%RETURN_TYPE %0 = PySide::SignalManager::instance().emitSignal(%CPPSELF, %1, %PYARG_2);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-emit
+
+// @snippet qobject-disconnect-1
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectDisconnectCallback(%CPPSELF, %1, %2);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-disconnect-1
+
+// @snippet qobject-disconnect-2
+// %FUNCTION_NAME() - disable generation of function call.
+%RETURN_TYPE %0 = PySide::qobjectDisconnectCallback(%1, %2, %3);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-disconnect-2
+
+// @snippet qfatal
+// qFatal doesn't have a stream version, so we do a
+// qWarning call followed by a qFatal() call using a
+// literal.
+Py_BEGIN_ALLOW_THREADS
+qWarning() << %1;
+qFatal("[A qFatal() call was made from Python code]");
+Py_END_ALLOW_THREADS
+// @snippet qfatal
+
+// @snippet moduleshutdown
+PySide::runCleanupFunctions();
+// @snippet moduleshutdown
+
+// @snippet qt-qenum
+%PYARG_0 = PySide::QEnum::QEnumMacro(%1, false);
+// @snippet qt-qenum
+
+// @snippet qt-qflag
+%PYARG_0 = PySide::QEnum::QEnumMacro(%1, true);
+// @snippet qt-qflag
+
+// @snippet qt-init-feature
+PySide::Feature::init();
+// @snippet qt-init-feature
+
+// @snippet qt-pysideinit
+Shiboken::Conversions::registerConverterName(SbkPySide6_QtCoreTypeConverters[SBK_QString_IDX], "unicode");
+Shiboken::Conversions::registerConverterName(SbkPySide6_QtCoreTypeConverters[SBK_QString_IDX], "str");
+Shiboken::Conversions::registerConverterName(SbkPySide6_QtCoreTypeConverters[SBK_QtCore_QList_QVariant_IDX], "QVariantList");
+Shiboken::Conversions::registerConverterName(SbkPySide6_QtCoreTypeConverters[SBK_QtCore_QMap_QString_QVariant_IDX], "QVariantMap");
+
+PySide::registerInternalQtConf();
+PySide::init(module);
+Py_AtExit(QtCoreModuleExit);
+// @snippet qt-pysideinit
+
+// @snippet qt-messagehandler
+// Define a global variable to handle qInstallMessageHandler callback
+static PyObject *qtmsghandler = nullptr;
+
+static void msgHandlerCallback(QtMsgType type, const QMessageLogContext &ctx, const QString &msg)
+{
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(3));
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[QtMsgType](type));
+ PyTuple_SET_ITEM(arglist, 1, %CONVERTTOPYTHON[QMessageLogContext &](ctx));
+ QByteArray array = msg.toUtf8(); // Python handler requires UTF-8
+ const char *data = array.constData();
+ PyTuple_SET_ITEM(arglist, 2, %CONVERTTOPYTHON[const char *](data));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(qtmsghandler, arglist));
+}
+static void QtCoreModuleExit()
+{
+ PySide::SignalManager::instance().clear();
+}
+// @snippet qt-messagehandler
+
+// @snippet qt-installmessagehandler
+if (%PYARG_1 == Py_None) {
+ qInstallMessageHandler(0);
+ %PYARG_0 = qtmsghandler ? qtmsghandler : Py_None;
+ qtmsghandler = 0;
+} else if (!PyCallable_Check(%PYARG_1)) {
+ PyErr_SetString(PyExc_TypeError, "parameter must be callable");
+} else {
+ %PYARG_0 = qtmsghandler ? qtmsghandler : Py_None;
+ Py_INCREF(%PYARG_1);
+ qtmsghandler = %PYARG_1;
+ qInstallMessageHandler(msgHandlerCallback);
+}
+
+if (%PYARG_0 == Py_None)
+ Py_INCREF(%PYARG_0);
+// @snippet qt-installmessagehandler
+
+// @snippet qline-hash
+namespace PySide {
+ template<> inline Py_ssize_t hash(const QLine &l)
+ {
+ return qHashMulti(0, l.x1(), l.y1(), l.x2(), l.y2());
+ }
+};
+// @snippet qline-hash
+
+// @snippet qlinef-intersect
+QPointF p;
+%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &p);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QPointF](p));
+// @snippet qlinef-intersect
+
+// @snippet qresource-data
+const void *d = %CPPSELF.%FUNCTION_NAME();
+if (d) {
+ %PYARG_0 = Shiboken::Buffer::newObject(d, %CPPSELF.size());
+} else {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+}
+// @snippet qresource-data
+
+// @snippet qdate-topython
+if (!PyDateTimeAPI)
+ PyDateTime_IMPORT;
+%PYARG_0 = PyDate_FromDate(%CPPSELF.year(), %CPPSELF.month(), %CPPSELF.day());
+// @snippet qdate-topython
+
+// @snippet qdate-getdate
+int year, month, day;
+%CPPSELF.%FUNCTION_NAME(&year, &month, &day);
+%PYARG_0 = PyTuple_New(3);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[int](year));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[int](month));
+PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[int](day));
+// @snippet qdate-getdate
+
+// @snippet qdate-weeknumber
+int yearNumber;
+int week = %CPPSELF.%FUNCTION_NAME(&yearNumber);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[int](week));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[int](yearNumber));
+// @snippet qdate-weeknumber
+
+// @snippet qdatetime-1
+QDate date(%1, %2, %3);
+QTime time(%4, %5, %6, %7);
+%0 = new %TYPE(date, time, Qt::TimeSpec(%8));
+// @snippet qdatetime-1
+
+// @snippet qdatetime-2
+QDate date(%1, %2, %3);
+QTime time(%4, %5, %6);
+%0 = new %TYPE(date, time);
+// @snippet qdatetime-2
+
+// @snippet qdatetime-3
+QDate date(%1, %2, %3);
+QTime time(%4, %5, %6, %7);
+%0 = new %TYPE(date, time, %8);
+// @snippet qdatetime-3
+
+// @snippet qdatetime-topython
+QDate date = %CPPSELF.date();
+QTime time = %CPPSELF.time();
+if (!PyDateTimeAPI)
+ PyDateTime_IMPORT;
+%PYARG_0 = PyDateTime_FromDateAndTime(date.year(), date.month(), date.day(), time.hour(), time.minute(), time.second(), time.msec()*1000);
+// @snippet qdatetime-topython
+
+// @snippet qtime-topython
+if (!PyDateTimeAPI)
+ PyDateTime_IMPORT;
+%PYARG_0 = PyTime_FromTime(%CPPSELF.hour(), %CPPSELF.minute(), %CPPSELF.second(), %CPPSELF.msec()*1000);
+// @snippet qtime-topython
+
+// @snippet qbitarray-len
+return %CPPSELF.size();
+// @snippet qbitarray-len
+
+// @snippet qbitarray-getitem
+if (_i < 0 || _i >= %CPPSELF.size()) {
+ PyErr_SetString(PyExc_IndexError, "index out of bounds");
+ return 0;
+}
+bool ret = %CPPSELF.at(_i);
+return %CONVERTTOPYTHON[bool](ret);
+// @snippet qbitarray-getitem
+
+// @snippet qbitarray-setitem
+PyObject *args = Py_BuildValue("(iiO)", _i, 1, _value);
+PyObject *result = Sbk_QBitArrayFunc_setBit(self, args);
+Py_DECREF(args);
+Py_XDECREF(result);
+return !result ? -1 : 0;
+// @snippet qbitarray-setitem
+
+// @snippet default-enter
+Py_INCREF(%PYSELF);
+pyResult = %PYSELF;
+// @snippet default-enter
+
+// @snippet qsignalblocker-unblock
+%CPPSELF.unblock();
+// @snippet qsignalblocker-unblock
+
+// @snippet unlock
+%CPPSELF.unlock();
+// @snippet unlock
+
+// @snippet qabstractitemmodel-createindex
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(%1, %2, %PYARG_3);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qabstractitemmodel-createindex
+
+// @snippet qabstractitemmodel
+qRegisterMetaType<QList<int> >("QList<int>");
+// @snippet qabstractitemmodel
+
+// @snippet qobject-metaobject
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME();
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qobject-metaobject
+
+// @snippet qobject-findchild-2
+QObject *child = qObjectFindChild(%CPPSELF, %2, reinterpret_cast<PyTypeObject *>(%PYARG_1), %3);
+%PYARG_0 = %CONVERTTOPYTHON[QObject *](child);
+// @snippet qobject-findchild-2
+
+// @snippet qobject-findchildren
+%PYARG_0 = PyList_New(0);
+qObjectFindChildren(%CPPSELF, %2, reinterpret_cast<PyTypeObject *>(%PYARG_1), %3,
+ [%PYARG_0](QObject *child) {
+ Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QObject *](child));
+ PyList_Append(%PYARG_0, pyChild.object());
+ });
+// @snippet qobject-findchildren
+
+// @snippet qobject-tr
+const QString result = qObjectTr(reinterpret_cast<PyTypeObject *>(%PYSELF), %1, %2, %3);
+%PYARG_0 = %CONVERTTOPYTHON[QString](result);
+// @snippet qobject-tr
+
+// @snippet qobject-sender
+// Retrieve the sender from a dynamic property set by GlobalReceiverV2 in case of a
+// non-C++ slot (Python callback).
+auto *ret = %CPPSELF.%FUNCTION_NAME();
+if (ret == nullptr) {
+ auto senderV = %CPPSELF.property("_q_pyside_sender");
+ if (senderV.typeId() == QMetaType::QObjectStar)
+ ret = senderV.value<QObject *>();
+}
+%PYARG_0 = %CONVERTTOPYTHON[QObject*](ret);
+// @snippet qobject-sender
+
+// @snippet qbytearray-mgetitem
+if (PyIndex_Check(_key)) {
+ const Py_ssize_t _i = PyNumber_AsSsize_t(_key, PyExc_IndexError);
+ if (_i < 0 || _i >= %CPPSELF.size())
+ return PyErr_Format(PyExc_IndexError, "index out of bounds");
+ char res[2] = {%CPPSELF.at(_i), '\0'};
+ return PyBytes_FromStringAndSize(res, 1);
+}
+
+if (PySlice_Check(_key) == 0)
+ return PyErr_Format(PyExc_TypeError,
+ "list indices must be integers or slices, not %.200s",
+ Py_TYPE(_key)->tp_name);
+
+Py_ssize_t start, stop, step, slicelength;
+if (PySlice_GetIndicesEx(_key, %CPPSELF.size(), &start, &stop, &step, &slicelength) < 0)
+ return nullptr;
+
+QByteArray ba;
+if (slicelength <= 0)
+ return %CONVERTTOPYTHON[QByteArray](ba);
+
+if (step == 1) {
+ Py_ssize_t max = %CPPSELF.size();
+ start = qBound(Py_ssize_t(0), start, max);
+ stop = qBound(Py_ssize_t(0), stop, max);
+ if (start < stop)
+ ba = %CPPSELF.mid(start, stop - start);
+ return %CONVERTTOPYTHON[QByteArray](ba);
+}
+
+for (Py_ssize_t cur = start; slicelength > 0; cur += step, --slicelength)
+ ba.append(%CPPSELF.at(cur));
+
+return %CONVERTTOPYTHON[QByteArray](ba);
+// @snippet qbytearray-mgetitem
+
+// @snippet qbytearray-msetitem
+// PYSIDE-2404: Usage of the `get()` function not necessary, the type exists.
+if (PyIndex_Check(_key)) {
+ Py_ssize_t _i = PyNumber_AsSsize_t(_key, PyExc_IndexError);
+ if (_i == -1 && PyErr_Occurred())
+ return -1;
+
+ if (_i < 0)
+ _i += %CPPSELF.size();
+
+ if (_i < 0 || _i >= %CPPSELF.size()) {
+ PyErr_SetString(PyExc_IndexError, "QByteArray index out of range");
+ return -1;
+ }
+
+ // Provide more specific error message for bytes/str, bytearray, QByteArray respectively
+ if (PyBytes_Check(_value)) {
+ if (Py_SIZE(_value) != 1) {
+ PyErr_SetString(PyExc_ValueError, "bytes must be of size 1");
+ return -1;
+ }
+ } else if (PyByteArray_Check(_value)) {
+ if (Py_SIZE(_value) != 1) {
+ PyErr_SetString(PyExc_ValueError, "bytearray must be of size 1");
+ return -1;
+ }
+ } else if (Py_TYPE(_value) == reinterpret_cast<PyTypeObject *>(
+ SbkPySide6_QtCoreTypeStructs[SBK_QByteArray_IDX].type)) {
+ if (PyObject_Length(_value) != 1) {
+ PyErr_SetString(PyExc_ValueError, "QByteArray must be of size 1");
+ return -1;
+ }
+ } else {
+ PyErr_SetString(PyExc_ValueError, "a bytes, bytearray, QByteArray of size 1 is required");
+ return -1;
+ }
+
+ // Not support int or long.
+ %CPPSELF.remove(_i, 1);
+ PyObject *args = Py_BuildValue("(nO)", _i, _value);
+ PyObject *result = Sbk_QByteArrayFunc_insert(self, args);
+ Py_DECREF(args);
+ Py_XDECREF(result);
+ return result != nullptr ? 0: -1;
+}
+
+if (PySlice_Check(_key) == 0) {
+ PyErr_Format(PyExc_TypeError, "QBytearray indices must be integers or slices, not %.200s",
+ Py_TYPE(_key)->tp_name);
+ return -1;
+}
+
+Py_ssize_t start, stop, step, slicelength;
+if (PySlice_GetIndicesEx(_key, %CPPSELF.size(), &start, &stop, &step, &slicelength) < 0)
+ return -1;
+
+// The parameter candidates are: bytes/str, bytearray, QByteArray itself.
+// Not supported are iterables containing ints between 0~255
+// case 1: value is nullpre, means delete the items within the range
+// case 2: step is 1, means shrink or expand
+// case 3: step is not 1, then the number of slots have to equal the number of items in _value
+Py_ssize_t value_length = 0;
+if (_value != nullptr && _value != Py_None) {
+ if (!(PyBytes_Check(_value) || PyByteArray_Check(_value)
+ || Py_TYPE(_value) == SbkPySide6_QtCoreTypeStructs[SBK_QByteArray_IDX].type)) {
+ PyErr_Format(PyExc_TypeError, "bytes, bytearray or QByteArray is required, not %.200s",
+ Py_TYPE(_value)->tp_name);
+ return -1;
+ }
+ value_length = PyObject_Length(_value);
+}
+
+if (step != 1 && value_length != slicelength) {
+ PyErr_Format(PyExc_ValueError, "attempt to assign %s of size %d to extended slice of size %d",
+ Py_TYPE(_value)->tp_name, int(value_length), int(slicelength));
+ return -1;
+}
+
+if (step != 1) {
+ Py_ssize_t i = start;
+ for (Py_ssize_t j = 0; j < slicelength; ++j) {
+ PyObject *item = PyObject_GetItem(_value, PyLong_FromSsize_t(j));
+ QByteArray temp;
+ if (PyLong_Check(item)) {
+ int overflow;
+ const long ival = PyLong_AsLongAndOverflow(item, &overflow);
+ // Not supposed to be bigger than 255 because only bytes,
+ // bytearray, QByteArray were accepted
+ temp.append(char(ival));
+ } else {
+ temp = %CONVERTTOCPP[QByteArray](item);
+ }
+ %CPPSELF.replace(i, 1, temp);
+ i += step;
+ }
+ return 0;
+}
+
+QByteArray ba = %CONVERTTOCPP[QByteArray](_value);
+%CPPSELF.replace(start, slicelength, ba);
+return 0;
+// @snippet qbytearray-msetitem
+
+// @snippet qbytearray-bufferprotocol
+extern "C" {
+// QByteArray buffer protocol functions
+// see: http://www.python.org/dev/peps/pep-3118/
+
+static int SbkQByteArray_getbufferproc(PyObject *obj, Py_buffer *view, int flags)
+{
+ if (!view || !Shiboken::Object::isValid(obj))
+ return -1;
+
+ QByteArray * cppSelf = %CONVERTTOCPP[QByteArray *](obj);
+ //XXX /|\ omitting this space crashes shiboken!
+#ifdef Py_LIMITED_API
+ view->obj = obj;
+ view->buf = reinterpret_cast<void *>(cppSelf->data());
+ view->len = cppSelf->size();
+ view->readonly = 0;
+ view->itemsize = 1;
+ view->format = (flags & PyBUF_FORMAT) == PyBUF_FORMAT ? const_cast<char *>("B") : nullptr;
+ view->ndim = 1;
+ view->shape = (flags & PyBUF_ND) == PyBUF_ND ? &(view->len) : nullptr;
+ view->strides = (flags & PyBUF_STRIDES) == PyBUF_STRIDES ? &(view->itemsize) : nullptr;
+ view->suboffsets = nullptr;
+ view->internal = nullptr;
+
+ Py_XINCREF(obj);
+ return 0;
+#else // Py_LIMITED_API
+ const int result = PyBuffer_FillInfo(view, obj, reinterpret_cast<void *>(cppSelf->data()),
+ cppSelf->size(), 0, flags);
+ if (result == 0)
+ Py_XINCREF(obj);
+ return result;
+#endif
+}
+
+static PyBufferProcs SbkQByteArrayBufferProc = {
+ /*bf_getbuffer*/ (getbufferproc)SbkQByteArray_getbufferproc,
+ /*bf_releasebuffer*/ (releasebufferproc)0,
+};
+
+}
+// @snippet qbytearray-bufferprotocol
+
+// @snippet qbytearray-operatorplus-1
+QByteArray ba = QByteArray(PyBytes_AS_STRING(%PYARG_1), PyBytes_GET_SIZE(%PYARG_1)) + *%CPPSELF;
+%PYARG_0 = %CONVERTTOPYTHON[QByteArray](ba);
+// @snippet qbytearray-operatorplus-1
+
+// @snippet qbytearray-operatorplus-2
+QByteArray ba = QByteArray(PyByteArray_AsString(%PYARG_1), PyByteArray_Size(%PYARG_1)) + *%CPPSELF;
+%PYARG_0 = %CONVERTTOPYTHON[QByteArray](ba);
+// @snippet qbytearray-operatorplus-2
+
+// @snippet qbytearray-operatorplus-3
+QByteArray ba = *%CPPSELF + QByteArray(PyByteArray_AsString(%PYARG_1), PyByteArray_Size(%PYARG_1));
+%PYARG_0 = %CONVERTTOPYTHON[QByteArray](ba);
+// @snippet qbytearray-operatorplus-3
+
+// @snippet qbytearray-operatorplusequal
+*%CPPSELF += QByteArray(PyByteArray_AsString(%PYARG_1), PyByteArray_Size(%PYARG_1));
+// @snippet qbytearray-operatorplusequal
+
+// @snippet qbytearray-operatorequalequal
+if (PyUnicode_CheckExact(%PYARG_1)) {
+ Shiboken::AutoDecRef data(PyUnicode_AsASCIIString(%PYARG_1));
+ QByteArray ba = QByteArray(PyBytes_AsString(data.object()), PyBytes_GET_SIZE(data.object()));
+ bool cppResult = %CPPSELF == ba;
+ %PYARG_0 = %CONVERTTOPYTHON[bool](cppResult);
+}
+// @snippet qbytearray-operatorequalequal
+
+// @snippet qbytearray-operatornotequal
+if (PyUnicode_CheckExact(%PYARG_1)) {
+ Shiboken::AutoDecRef data(PyUnicode_AsASCIIString(%PYARG_1));
+ QByteArray ba = QByteArray(PyBytes_AsString(data.object()), PyBytes_GET_SIZE(data.object()));
+ bool cppResult = %CPPSELF != ba;
+ %PYARG_0 = %CONVERTTOPYTHON[bool](cppResult);
+}
+// @snippet qbytearray-operatornotequal
+
+// @snippet qbytearray-operatorgreater
+if (PyUnicode_CheckExact(%PYARG_1)) {
+ Shiboken::AutoDecRef data(PyUnicode_AsASCIIString(%PYARG_1));
+ QByteArray ba = QByteArray(PyBytes_AsString(data.object()), PyBytes_GET_SIZE(data.object()));
+ bool cppResult = %CPPSELF > ba;
+ %PYARG_0 = %CONVERTTOPYTHON[bool](cppResult);
+}
+// @snippet qbytearray-operatorgreater
+
+// @snippet qbytearray-operatorgreaterequal
+if (PyUnicode_CheckExact(%PYARG_1)) {
+ Shiboken::AutoDecRef data(PyUnicode_AsASCIIString(%PYARG_1));
+ QByteArray ba = QByteArray(PyBytes_AsString(data.object()), PyBytes_GET_SIZE(data.object()));
+ bool cppResult = %CPPSELF >= ba;
+ %PYARG_0 = %CONVERTTOPYTHON[bool](cppResult);
+}
+// @snippet qbytearray-operatorgreaterequal
+
+// @snippet qbytearray-operatorlower
+if (PyUnicode_CheckExact(%PYARG_1)) {
+ Shiboken::AutoDecRef data(PyUnicode_AsASCIIString(%PYARG_1));
+ QByteArray ba = QByteArray(PyBytes_AsString(data.object()), PyBytes_GET_SIZE(data.object()));
+ bool cppResult = %CPPSELF < ba;
+ %PYARG_0 = %CONVERTTOPYTHON[bool](cppResult);
+}
+// @snippet qbytearray-operatorlower
+
+// @snippet qbytearray-operatorlowerequal
+if (PyUnicode_CheckExact(%PYARG_1)) {
+ Shiboken::AutoDecRef data(PyUnicode_AsASCIIString(%PYARG_1));
+ QByteArray ba = QByteArray(PyBytes_AsString(data.object()), PyBytes_GET_SIZE(data.object()));
+ bool cppResult = %CPPSELF <= ba;
+ %PYARG_0 = %CONVERTTOPYTHON[bool](cppResult);
+}
+// @snippet qbytearray-operatorlowerequal
+
+// @snippet qbytearray-repr
+PyObject *aux = PyBytes_FromStringAndSize(%CPPSELF.constData(), %CPPSELF.size());
+if (aux == nullptr) {
+ return nullptr;
+}
+QByteArray b(Py_TYPE(%PYSELF)->tp_name);
+%PYARG_0 = PyUnicode_FromFormat("%s(%R)", b.constData(), aux);
+Py_DECREF(aux);
+// @snippet qbytearray-repr
+
+// @snippet qbytearray-2
+%0 = new QByteArray(PyByteArray_AsString(%PYARG_1), PyByteArray_Size(%PYARG_1));
+// @snippet qbytearray-2
+
+// @snippet qbytearray-3
+%0 = new QByteArray(PyBytes_AS_STRING(%PYARG_1), PyBytes_GET_SIZE(%PYARG_1));
+// @snippet qbytearray-3
+
+// @snippet qbytearray-py3
+PepType_AS_BUFFER(Shiboken::SbkType<QByteArray>()) = &SbkQByteArrayBufferProc;
+// @snippet qbytearray-py3
+
+// @snippet qbytearray-data
+%PYARG_0 = PyBytes_FromStringAndSize(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.size());
+// @snippet qbytearray-data
+
+// @snippet qbytearray-str
+PyObject *aux = PyBytes_FromStringAndSize(%CPPSELF.constData(), %CPPSELF.size());
+if (aux == nullptr) {
+ return nullptr;
+}
+%PYARG_0 = PyObject_Repr(aux);
+Py_DECREF(aux);
+// @snippet qbytearray-str
+
+// @snippet qbytearray-len
+return %CPPSELF.size();
+// @snippet qbytearray-len
+
+// @snippet qbytearray-getitem
+if (_i < 0 || _i >= %CPPSELF.size()) {
+ PyErr_SetString(PyExc_IndexError, "index out of bounds");
+ return 0;
+} else {
+ char res[2];
+ res[0] = %CPPSELF.at(_i);
+ res[1] = 0;
+ return PyBytes_FromStringAndSize(res, 1);
+}
+// @snippet qbytearray-getitem
+
+// @snippet qbytearray-setitem
+%CPPSELF.remove(_i, 1);
+PyObject *args = Py_BuildValue("(nO)", _i, _value);
+PyObject *result = Sbk_QByteArrayFunc_insert(self, args);
+Py_DECREF(args);
+Py_XDECREF(result);
+return !result ? -1 : 0;
+// @snippet qbytearray-setitem
+
+// @snippet qfiledevice-unmap
+uchar *ptr = reinterpret_cast<uchar *>(Shiboken::Buffer::getPointer(%PYARG_1));
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(ptr);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qfiledevice-unmap
+
+// @snippet qfiledevice-map
+%PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1, %2, %3), %2, Shiboken::Buffer::ReadWrite);
+// @snippet qfiledevice-map
+
+// @snippet qiodevice-bufferedread
+Py_ssize_t bufferLen;
+auto *data = reinterpret_cast<char*>(Shiboken::Buffer::getPointer(%PYARG_1, &bufferLen));
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(data, PyLong_AsLongLong(%PYARG_2));
+return PyLong_FromLong(%0);
+// @snippet qiodevice-bufferedread
+
+// @snippet qiodevice-readdata
+QByteArray ba(1 + qsizetype(%2), char(0));
+%CPPSELF.%FUNCTION_NAME(ba.data(), qint64(%2));
+%PYARG_0 = Shiboken::String::fromCString(ba.constData());
+// @snippet qiodevice-readdata
+
+// @snippet qcryptographichash-adddata
+%CPPSELF.%FUNCTION_NAME(Shiboken::String::toCString(%PYARG_1), Shiboken::String::len(%PYARG_1));
+// @snippet qcryptographichash-adddata
+
+// @snippet qmetaobject-repr
+const QByteArray repr = PySide::MetaObjectBuilder::formatMetaObject(%CPPSELF).toUtf8();
+%PYARG_0 = PyUnicode_FromString(repr.constData());
+// @snippet qmetaobject-repr
+
+// @snippet qsocketdescriptor
+#ifdef WIN32
+using DescriptorType = Qt::HANDLE;
+#else
+using DescriptorType = int;
+#endif
+// @snippet qsocketdescriptor
+
+// @snippet qsocketnotifier
+PyObject *socket = %PYARG_1;
+if (socket != nullptr) {
+ // We use qintptr as PyLong, but we check for int
+ // since it is currently an alias to be Python2 compatible.
+ // Internally, ints are qlonglongs.
+ if (%CHECKTYPE[int](socket)) {
+ int cppSocket = %CONVERTTOCPP[int](socket);
+ qintptr socket = (qintptr)cppSocket;
+ %0 = new %TYPE(socket, %2, %3);
+ } else {
+ PyErr_SetString(PyExc_TypeError,
+ "QSocketNotifier: first argument (socket) must be an int.");
+ }
+}
+// @snippet qsocketnotifier
+
+// @snippet qtranslator-load
+Py_ssize_t size;
+auto *ptr = reinterpret_cast<uchar *>(Shiboken::Buffer::getPointer(%PYARG_1, &size));
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(const_cast<const uchar *>(ptr), size);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qtranslator-load
+
+// @snippet qtimer-singleshot-functorclass
+struct QSingleShotTimerFunctor : public Shiboken::PyObjectHolder
+{
+public:
+ using Shiboken::PyObjectHolder::PyObjectHolder;
+
+ void operator()();
+};
+
+void QSingleShotTimerFunctor::operator()()
+{
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(0));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(object(), arglist));
+ if (Shiboken::Errors::occurred())
+ Shiboken::Errors::storeErrorOrPrint();
+ release(); // single shot
+}
+// @snippet qtimer-singleshot-functorclass
+
+// @snippet qtimer-singleshot-direct-mapping
+Shiboken::AutoDecRef emptyTuple(PyTuple_New(0));
+%CPPSELF.%FUNCTION_NAME(%1, %2, %3);
+// @snippet qtimer-singleshot-direct-mapping
+
+// @snippet qtimer-singleshot-functor
+auto msec = %1;
+if (msec == 0) {
+ if (PyObject_TypeCheck(%2, PySideSignalInstance_TypeF())) {
+ auto *signal = %PYARG_2;
+ auto cppCallback = [signal]()
+ {
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef ret(PyObject_CallMethod(signal, "emit", "()"));
+ Py_DECREF(signal);
+ };
+
+ Py_INCREF(signal);
+ %CPPSELF.%FUNCTION_NAME(msec, cppCallback);
+ } else {
+ %CPPSELF.%FUNCTION_NAME(msec, QSingleShotTimerFunctor(%PYARG_2));
+ }
+} else {
+ // %FUNCTION_NAME() - disable generation of c++ function call
+ Shiboken::AutoDecRef emptyTuple(PyTuple_New(0));
+ auto *timerType = Shiboken::SbkType<QTimer>();
+ auto newFunc = reinterpret_cast<newfunc>(PepType_GetSlot(timerType, Py_tp_new));
+ auto initFunc = reinterpret_cast<initproc>(PepType_GetSlot(timerType, Py_tp_init));
+ auto *pyTimer = newFunc(Shiboken::SbkType<QTimer>(), emptyTuple, nullptr);
+ initFunc(pyTimer, emptyTuple, nullptr);
+
+ QTimer * timer = %CONVERTTOCPP[QTimer *](pyTimer);
+ timer->setSingleShot(true);
+
+ if (PyObject_TypeCheck(%2, PySideSignalInstance_TypeF())) {
+ PySideSignalInstance *signalInstance = reinterpret_cast<PySideSignalInstance *>(%2);
+ Shiboken::AutoDecRef signalSignature(Shiboken::String::fromFormat("2%s", PySide::Signal::getSignature(signalInstance)));
+ Shiboken::AutoDecRef result(
+ PyObject_CallMethod(pyTimer, "connect", "OsOO",
+ pyTimer,
+ SIGNAL(timeout()),
+ PySide::Signal::getObject(signalInstance),
+ signalSignature.object())
+ );
+ } else {
+ Shiboken::AutoDecRef result(
+ PyObject_CallMethod(pyTimer, "connect", "OsO",
+ pyTimer,
+ SIGNAL(timeout()),
+ %PYARG_2)
+ );
+ }
+
+ timer->connect(timer, &QTimer::timeout, timer, &QObject::deleteLater, Qt::DirectConnection);
+ Shiboken::Object::releaseOwnership(reinterpret_cast<SbkObject *>(pyTimer));
+ Py_XDECREF(pyTimer);
+ timer->start(msec);
+}
+// @snippet qtimer-singleshot-functor
+
+// @snippet qtimer-singleshot-functor-context
+auto msec = %1;
+if (msec == 0) {
+ Shiboken::AutoDecRef emptyTuple(PyTuple_New(0));
+ auto *callable = %PYARG_3;
+ auto cppCallback = [callable]()
+ {
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(0));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+ Py_DECREF(callable);
+ };
+
+ Py_INCREF(callable);
+ %CPPSELF.%FUNCTION_NAME(msec, %2, cppCallback);
+} else {
+ Shiboken::AutoDecRef emptyTuple(PyTuple_New(0));
+ auto *timerType = Shiboken::SbkType<QTimer>();
+ auto newFunc = reinterpret_cast<newfunc>(PepType_GetSlot(timerType, Py_tp_new));
+ auto initFunc = reinterpret_cast<initproc>(PepType_GetSlot(timerType, Py_tp_init));
+ auto *pyTimer = newFunc(Shiboken::SbkType<QTimer>(), emptyTuple, nullptr);
+ initFunc(pyTimer, emptyTuple, nullptr);
+
+ QTimer * timer = %CONVERTTOCPP[QTimer *](pyTimer);
+ timer->setSingleShot(true);
+
+ Shiboken::AutoDecRef result(
+ PyObject_CallMethod(pyTimer, "connect", "OsOO",
+ pyTimer,
+ SIGNAL(timeout()),
+ %PYARG_2,
+ %PYARG_3)
+ );
+
+ timer->connect(timer, &QTimer::timeout, timer, &QObject::deleteLater, Qt::DirectConnection);
+ Shiboken::Object::releaseOwnership(reinterpret_cast<SbkObject *>(pyTimer));
+ Py_XDECREF(pyTimer);
+ timer->start(msec);
+}
+// @snippet qtimer-singleshot-functor-context
+
+// @snippet qprocess-startdetached
+qint64 pid;
+%RETURN_TYPE retval = %TYPE::%FUNCTION_NAME(%1, %2, %3, &pid);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[qint64](pid));
+// @snippet qprocess-startdetached
+
+// @snippet qcoreapplication-init
+static void QCoreApplicationConstructor(PyObject *self, PyObject *pyargv, QCoreApplicationWrapper **cptr)
+{
+ static int argc;
+ static char **argv;
+ PyObject *stringlist = PyTuple_GET_ITEM(pyargv, 0);
+ if (Shiboken::listToArgcArgv(stringlist, &argc, &argv, "PySideApp")) {
+ *cptr = new QCoreApplicationWrapper(argc, argv);
+ Shiboken::Object::releaseOwnership(reinterpret_cast<SbkObject *>(self));
+ PySide::registerCleanupFunction(&PySide::destroyQCoreApplication);
+ }
+}
+// @snippet qcoreapplication-init
+
+// @snippet qcoreapplication-1
+QCoreApplicationConstructor(%PYSELF, args, &%0);
+// @snippet qcoreapplication-1
+
+// @snippet qcoreapplication-2
+PyObject *empty = PyTuple_New(2);
+if (!PyTuple_SetItem(empty, 0, PyList_New(0))) {
+ QCoreApplicationConstructor(%PYSELF, empty, &%0);
+}
+// @snippet qcoreapplication-2
+
+// @snippet qcoreapplication-instance
+PyObject *pyApp = Py_None;
+if (qApp) {
+ pyApp = reinterpret_cast<PyObject *>(
+ Shiboken::BindingManager::instance().retrieveWrapper(qApp));
+ if (!pyApp)
+ pyApp = %CONVERTTOPYTHON[QCoreApplication *](qApp);
+ // this will keep app live after python exit (extra ref)
+}
+// PYSIDE-571: make sure that we return the singleton "None"
+if (Py_TYPE(pyApp) == Py_TYPE(Py_None))
+ Py_DECREF(MakeQAppWrapper(nullptr));
+%PYARG_0 = pyApp;
+Py_XINCREF(%PYARG_0);
+// @snippet qcoreapplication-instance
+
+// @snippet qdatastream-readrawdata
+QByteArray data;
+data.resize(%2);
+int result = 0;
+Py_BEGIN_ALLOW_THREADS
+result = %CPPSELF.%FUNCTION_NAME(data.data(), data.size());
+Py_END_ALLOW_THREADS
+if (result == -1) {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+} else {
+ %PYARG_0 = PyBytes_FromStringAndSize(data.constData(), result);
+}
+// @snippet qdatastream-readrawdata
+
+// @snippet qdatastream-writerawdata-pybuffer
+int r = 0;
+Py_ssize_t bufferLen;
+auto *data = reinterpret_cast<const char*>(Shiboken::Buffer::getPointer(%PYARG_1, &bufferLen));
+Py_BEGIN_ALLOW_THREADS
+r = %CPPSELF.%FUNCTION_NAME(data, bufferLen);
+Py_END_ALLOW_THREADS
+%PYARG_0 = %CONVERTTOPYTHON[int](r);
+// @snippet qdatastream-writerawdata-pybuffer
+
+// @snippet qdatastream-writerawdata
+int r = 0;
+Py_BEGIN_ALLOW_THREADS
+r = %CPPSELF.%FUNCTION_NAME(%1, Shiboken::String::len(%PYARG_1));
+Py_END_ALLOW_THREADS
+%PYARG_0 = %CONVERTTOPYTHON[int](r);
+// @snippet qdatastream-writerawdata
+
+// @snippet releaseownership
+Shiboken::Object::releaseOwnership(%PYARG_0);
+// @snippet releaseownership
+
+// @snippet qanimationgroup-clear
+for (int counter = 0, count = %CPPSELF.animationCount(); counter < count; ++counter ) {
+ QAbstractAnimation *animation = %CPPSELF.animationAt(counter);
+ PyObject *obj = %CONVERTTOPYTHON[QAbstractAnimation *](animation);
+ Shiboken::Object::setParent(nullptr, obj);
+ Py_DECREF(obj);
+}
+%CPPSELF.clear();
+// @snippet qanimationgroup-clear
+
+// @snippet qeasingcurve
+PySideEasingCurveFunctor::init();
+// @snippet qeasingcurve
+
+// @snippet qeasingcurve-setcustomtype
+QEasingCurve::EasingFunction func = PySideEasingCurveFunctor::createCustomFuntion(%PYSELF, %PYARG_1);
+if (func)
+ %CPPSELF.%FUNCTION_NAME(func);
+// @snippet qeasingcurve-setcustomtype
+
+// @snippet qeasingcurve-customtype
+//%FUNCTION_NAME()
+%PYARG_0 = PySideEasingCurveFunctor::callable(%PYSELF);
+// @snippet qeasingcurve-customtype
+
+// @snippet qt-signal
+%PYARG_0 = Shiboken::String::fromFormat("2%s",QMetaObject::normalizedSignature(%1).constData());
+// @snippet qt-signal
+
+// @snippet qt-slot
+%PYARG_0 = Shiboken::String::fromFormat("1%s",QMetaObject::normalizedSignature(%1).constData());
+// @snippet qt-slot
+
+// @snippet qt-registerresourcedata
+QT_BEGIN_NAMESPACE
+extern bool
+qRegisterResourceData(int,
+ const unsigned char *,
+ const unsigned char *,
+ const unsigned char *);
+
+extern bool
+qUnregisterResourceData(int,
+ const unsigned char *,
+ const unsigned char *,
+ const unsigned char *);
+QT_END_NAMESPACE
+// @snippet qt-registerresourcedata
+
+// @snippet qt-qregisterresourcedata
+%RETURN_TYPE %0 = %FUNCTION_NAME(%1, reinterpret_cast<uchar *>(PyBytes_AS_STRING(%PYARG_2)),
+ reinterpret_cast<uchar *>(PyBytes_AS_STRING(%PYARG_3)),
+ reinterpret_cast<uchar *>(PyBytes_AS_STRING(%PYARG_4)));
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qt-qregisterresourcedata
+
+// @snippet qt-qunregisterresourcedata
+%RETURN_TYPE %0 = %FUNCTION_NAME(%1, reinterpret_cast<uchar *>(PyBytes_AS_STRING(%PYARG_2)),
+ reinterpret_cast<uchar *>(PyBytes_AS_STRING(%PYARG_3)),
+ reinterpret_cast<uchar *>(PyBytes_AS_STRING(%PYARG_4)));
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qt-qunregisterresourcedata
+
+// @snippet use-stream-for-format-security
+// Uses the stream version for security reasons
+// see gcc man page at -Wformat-security
+Py_BEGIN_ALLOW_THREADS
+%FUNCTION_NAME() << %1;
+Py_END_ALLOW_THREADS
+// @snippet use-stream-for-format-security
+
+// @snippet qresource-registerResource
+ auto ptr = reinterpret_cast<uchar *>(Shiboken::Buffer::getPointer(%PYARG_1));
+ %RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(const_cast<const uchar *>(ptr), %2);
+ %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qresource-registerResource
+
+// @snippet qstring-return
+%PYARG_0 = %CONVERTTOPYTHON[QString](%1);
+// @snippet qstring-return
+
+// @snippet stream-write-method
+Py_BEGIN_ALLOW_THREADS
+(*%CPPSELF) << %1;
+Py_END_ALLOW_THREADS
+// @snippet stream-write-method
+
+// @snippet stream-read-method
+%RETURN_TYPE _cpp_result;
+Py_BEGIN_ALLOW_THREADS
+(*%CPPSELF) >> _cpp_result;
+Py_END_ALLOW_THREADS
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](_cpp_result);
+// @snippet stream-read-method
+
+// @snippet return-qstring-ref
+QString &res = *%0;
+%PYARG_0 = %CONVERTTOPYTHON[QString](res);
+// @snippet return-qstring-ref
+
+// @snippet return-readData
+%RETURN_TYPE %0 = 0;
+if (PyBytes_Check(%PYARG_0)) {
+ %0 = PyBytes_GET_SIZE(%PYARG_0.object());
+ memcpy(%1, PyBytes_AS_STRING(%PYARG_0.object()), %0);
+} else if (Shiboken::String::check(%PYARG_0.object())) {
+ %0 = Shiboken::String::len(%PYARG_0.object());
+ memcpy(%1, Shiboken::String::toCString(%PYARG_0.object()), %0);
+}
+// @snippet return-readData
+
+// @snippet qiodevice-readData
+QByteArray ba(1 + qsizetype(%2), char(0));
+Py_BEGIN_ALLOW_THREADS
+%CPPSELF.%FUNCTION_NAME(ba.data(), qint64(%2));
+Py_END_ALLOW_THREADS
+%PYARG_0 = Shiboken::String::fromCString(ba.constData());
+// @snippet qiodevice-readData
+
+// @snippet qt-module-shutdown
+{ // Avoid name clash
+ Shiboken::AutoDecRef regFunc(static_cast<PyObject *>(nullptr));
+ Shiboken::AutoDecRef atexit(Shiboken::Module::import("atexit"));
+ if (atexit.isNull()) {
+ qWarning("Module atexit not found for registering __moduleShutdown");
+ PyErr_Clear();
+ } else {
+ regFunc.reset(PyObject_GetAttrString(atexit, "register"));
+ if (regFunc.isNull()) {
+ qWarning("Function atexit.register not found for registering __moduleShutdown");
+ PyErr_Clear();
+ }
+ }
+ if (!atexit.isNull() && !regFunc.isNull()){
+ PyObject *shutDownFunc = PyObject_GetAttrString(module, "__moduleShutdown");
+ Shiboken::AutoDecRef args(PyTuple_New(1));
+ PyTuple_SET_ITEM(args, 0, shutDownFunc);
+ Shiboken::AutoDecRef retval(PyObject_Call(regFunc, args, 0));
+ Q_ASSERT(!retval.isNull());
+ }
+}
+// @snippet qt-module-shutdown
+
+// @snippet qthread_init_pypy
+#ifdef PYPY_VERSION
+// PYSIDE-535: PyPy 7.3.8 needs this call, which is actually a no-op in Python 3.9
+// This function should be replaced by a `Py_Initialize` call, but
+// that is still undefined. So we don't rely yet on any PyPy version.
+PyEval_InitThreads();
+#endif
+// @snippet qthread_init_pypy
+
+// @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
+ ********************************************************************/
+
+// @snippet conversion-pybool
+%out = %OUTTYPE(%in == Py_True);
+// @snippet conversion-pybool
+
+// @snippet conversion-pylong-quintptr
+#if QT_POINTER_SIZE == 8
+%out = %OUTTYPE(PyLong_AsUnsignedLongLong(%in));
+#else
+%out = %OUTTYPE(PyLong_AsUnsignedLong(%in));
+#endif
+// @snippet conversion-pylong-quintptr
+
+// @snippet conversion-pyunicode
+%out = PySide::pyUnicodeToQString(%in);
+// @snippet conversion-pyunicode
+
+// @snippet conversion-pynone
+SBK_UNUSED(%in)
+%out = %OUTTYPE();
+// @snippet conversion-pynone
+
+// @snippet qfile-path-1
+auto cppArg0 = PySide::pyPathToQString(%PYARG_1);
+// @snippet qfile-path-1
+
+// @snippet qfile-path-2
+auto cppArg1 = PySide::pyPathToQString(%PYARG_2);
+// @snippet qfile-path-2
+
+// @snippet qitemselection-add
+auto res = (*%CPPSELF) + cppArg0;
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](res);
+// @snippet qitemselection-add
+
+// @snippet conversion-pystring-char
+char c = %CONVERTTOCPP[char](%in);
+%out = %OUTTYPE(static_cast<unsigned short>(c));
+// @snippet conversion-pystring-char
+
+// @snippet conversion-pyint
+int i = %CONVERTTOCPP[int](%in);
+%out = %OUTTYPE(i);
+// @snippet conversion-pyint
+
+// @snippet conversion-qlonglong
+// PYSIDE-1250: For QVariant, if the type fits into an int; use int preferably.
+qlonglong in = %CONVERTTOCPP[qlonglong](%in);
+constexpr qlonglong intMax = qint64(std::numeric_limits<int>::max());
+constexpr qlonglong intMin = qint64(std::numeric_limits<int>::min());
+%out = in >= intMin && in <= intMax ? %OUTTYPE(int(in)) : %OUTTYPE(in);
+// @snippet conversion-qlonglong
+
+// @snippet conversion-qstring
+QString in = %CONVERTTOCPP[QString](%in);
+%out = %OUTTYPE(in);
+// @snippet conversion-qstring
+
+// @snippet conversion-qbytearray
+QByteArray in = %CONVERTTOCPP[QByteArray](%in);
+%out = %OUTTYPE(in);
+// @snippet conversion-qbytearray
+
+// @snippet conversion-pyfloat
+double in = %CONVERTTOCPP[double](%in);
+%out = %OUTTYPE(in);
+// @snippet conversion-pyfloat
+
+// @snippet conversion-sbkobject
+// a class supported by QVariant?
+const QMetaType metaType = QVariant_resolveMetaType(Py_TYPE(%in));
+bool ok = false;
+if (metaType.isValid()) {
+ QVariant var(metaType);
+ auto converterO = converterForQtType(metaType.name());
+ ok = converterO.has_value();
+ if (ok) {
+ converterO.value().toCpp(pyIn, var.data());
+ %out = var;
+ } else {
+ qWarning("%s: Cannot find a converter for \"%s\".",
+ __FUNCTION__, metaType.name());
+ }
+}
+
+// If the type was not encountered, return a default PyObjectWrapper
+if (!ok)
+ %out = QVariant::fromValue(PySide::PyObjectWrapper(%in));
+// @snippet conversion-sbkobject
+
+// @snippet conversion-pydict
+QVariant ret = QVariant_convertToVariantMap(%in);
+%out = ret.isValid() ? ret : QVariant::fromValue(PySide::PyObjectWrapper(%in));
+// @snippet conversion-pydict
+
+// @snippet conversion-pylist
+QVariant ret = QVariant_convertToVariantList(%in);
+%out = ret.isValid() ? ret : QVariant::fromValue(PySide::PyObjectWrapper(%in));
+// @snippet conversion-pylist
+
+// @snippet conversion-pyobject
+// Is a shiboken type not known by Qt
+%out = QVariant::fromValue(PySide::PyObjectWrapper(%in));
+// @snippet conversion-pyobject
+
+// @snippet conversion-qjsonobject-pydict
+QVariant dict = QVariant_convertToVariantMap(%in);
+QJsonValue val = QJsonValue::fromVariant(dict);
+%out = val.toObject();
+// @snippet conversion-qjsonobject-pydict
+
+// @snippet conversion-qdate-pydate
+int day = PyDateTime_GET_DAY(%in);
+int month = PyDateTime_GET_MONTH(%in);
+int year = PyDateTime_GET_YEAR(%in);
+%out = %OUTTYPE(year, month, day);
+// @snippet conversion-qdate-pydate
+
+// @snippet conversion-qdatetime-pydatetime
+int day = PyDateTime_GET_DAY(%in);
+int month = PyDateTime_GET_MONTH(%in);
+int year = PyDateTime_GET_YEAR(%in);
+int hour = PyDateTime_DATE_GET_HOUR(%in);
+int min = PyDateTime_DATE_GET_MINUTE(%in);
+int sec = PyDateTime_DATE_GET_SECOND(%in);
+int usec = PyDateTime_DATE_GET_MICROSECOND(%in);
+%out = %OUTTYPE(QDate(year, month, day), QTime(hour, min, sec, usec/1000));
+// @snippet conversion-qdatetime-pydatetime
+
+// @snippet conversion-qtime-pytime
+int hour = PyDateTime_TIME_GET_HOUR(%in);
+int min = PyDateTime_TIME_GET_MINUTE(%in);
+int sec = PyDateTime_TIME_GET_SECOND(%in);
+int usec = PyDateTime_TIME_GET_MICROSECOND(%in);
+%out = %OUTTYPE(hour, min, sec, usec/1000);
+// @snippet conversion-qtime-pytime
+
+// @snippet conversion-qbytearray-pybytes
+%out = %OUTTYPE(PyBytes_AS_STRING(%in), PyBytes_GET_SIZE(%in));
+// @snippet conversion-qbytearray-pybytes
+
+// @snippet conversion-qbytearray-pybytearray
+%out = %OUTTYPE(PyByteArray_AsString(%in), PyByteArray_Size(%in));
+// @snippet conversion-qbytearray-pybytearray
+
+// @snippet conversion-qbytearray-pystring
+%out = %OUTTYPE(Shiboken::String::toCString(%in), Shiboken::String::len(%in));
+// @snippet conversion-qbytearray-pystring
+
+/*********************************************************************
+ * NATIVE TO TARGET CONVERSIONS
+ ********************************************************************/
+
+// @snippet return-pybool
+return PyBool_FromLong((bool)%in);
+// @snippet return-pybool
+
+// @snippet return-pybytes
+return PyBytes_FromStringAndSize(%in.constData(), %in.size());
+// @snippet return-pybytes
+
+// @snippet return-pylong
+return PyLong_FromLong(%in);
+// @snippet return-pylong
+
+// @snippet return-pylong-quintptr
+#if QT_POINTER_SIZE == 8
+return PyLong_FromUnsignedLongLong(%in);
+#else
+return PyLong_FromUnsignedLong(%in);
+#endif
+// @snippet return-pylong-quintptr
+
+// @snippet return-qfunctionpointer-pylong
+return PyLong_FromVoidPtr(reinterpret_cast<void *>(%in));
+// @snippet return-qfunctionpointer-pylong
+
+// @snippet conversion-pylong-qfunctionpointer
+%out = reinterpret_cast<QFunctionPointer>(PyLong_AsVoidPtr(%in));
+// @snippet conversion-pylong-qfunctionpointer
+
+// @snippet return-pyunicode
+return PySide::qStringToPyUnicode(%in);
+// @snippet return-pyunicode
+
+// @snippet return-pyunicode-from-qlatin1string
+#ifdef Py_LIMITED_API
+return PySide::qStringToPyUnicode(QString::fromLatin1(%in));
+#else
+return PyUnicode_FromKindAndData(PyUnicode_1BYTE_KIND, %in.constData(), %in.size());
+#endif
+// @snippet return-pyunicode-from-qlatin1string
+
+// @snippet qlatin1string-check
+static bool qLatin1StringCheck(PyObject *o)
+{
+ return PyUnicode_CheckExact(o) != 0
+ && _PepUnicode_KIND(o) == PepUnicode_1BYTE_KIND;
+}
+// @snippet qlatin1string-check
+
+// @snippet conversion-pystring-qlatin1string
+const char *data = reinterpret_cast<const char *>(_PepUnicode_DATA(%in));
+const Py_ssize_t len = PyUnicode_GetLength(%in);
+%out = QLatin1String(data, len);
+// @snippet conversion-pystring-qlatin1string
+
+// @snippet return-pyunicode-from-qanystringview
+return PySide::qStringToPyUnicode(%in.toString());
+// @snippet return-pyunicode-from-qanystringview
+
+// @snippet return-pyunicode-qchar
+auto c = wchar_t(%in.unicode());
+return PyUnicode_FromWideChar(&c, 1);
+// @snippet return-pyunicode-qchar
+
+// @snippet return-qvariant
+if (!%in.isValid())
+ Py_RETURN_NONE;
+
+switch (%in.typeId()) {
+case QMetaType::UnknownType:
+case QMetaType::Nullptr:
+ Py_RETURN_NONE;
+case QMetaType::VoidStar:
+ if (%in.constData() == nullptr)
+ Py_RETURN_NONE;
+ break;
+
+case QMetaType::QVariantList: {
+ const auto var = %in.value<QVariantList>();
+ return %CONVERTTOPYTHON[QList<QVariant>](var);
+}
+case QMetaType::QStringList: {
+ const auto var = %in.value<QStringList>();
+ return %CONVERTTOPYTHON[QList<QString>](var);
+}
+case QMetaType::QVariantMap: {
+ const auto var = %in.value<QVariantMap>();
+ return %CONVERTTOPYTHON[QMap<QString, QVariant>](var);
+}
+default:
+ break;
+}
+
+auto converterO = converterForQtType(cppInRef.typeName());
+if (converterO.has_value())
+ return converterO.value().toPython(cppInRef.data());
+
+PyErr_Format(PyExc_RuntimeError, "Can't find converter for '%s'.", %in.typeName());
+return 0;
+// @snippet return-qvariant
+
+// @snippet return-qjsonobject
+// The QVariantMap returned by QJsonObject seems to cause a segfault, so
+// using QJsonObject.toVariantMap() won't work.
+// Wrapping it in a QJsonValue first allows it to work
+QJsonValue val(%in);
+QVariant ret = val.toVariant();
+
+return %CONVERTTOPYTHON[QVariant](ret);
+// @snippet return-qjsonobject
+
+// @snippet qthread_pthread_cleanup
+#ifdef Q_OS_UNIX
+# include <pthread.h>
+static void qthread_pthread_cleanup(void *arg)
+{
+ // PYSIDE 1282: When terminating a thread using QThread::terminate()
+ // (pthread_cancel()), QThread::run() is aborted and the lock is released,
+ // but ~GilState() is still executed for some reason. Prevent it from
+ // releasing.
+ auto gil = reinterpret_cast<Shiboken::GilState *>(arg);
+ gil->abandon();
+}
+#endif // Q_OS_UNIX
+// @snippet qthread_pthread_cleanup
+
+// @snippet qthread_pthread_cleanup_install
+#ifdef Q_OS_UNIX
+pthread_cleanup_push(qthread_pthread_cleanup, &gil);
+#endif
+// @snippet qthread_pthread_cleanup_install
+
+// @snippet qthread_pthread_cleanup_uninstall
+#ifdef Q_OS_UNIX
+pthread_cleanup_pop(0);
+#endif
+// @snippet qthread_pthread_cleanup_uninstall
+
+// @snippet qlibraryinfo_build
+auto oldResult = pyResult;
+const auto version = _PepRuntimeVersion();
+pyResult = PyUnicode_FromFormat(
+#ifdef Py_LIMITED_API
+ "%U [Python limited API %d.%d.%d]",
+#else
+ "%U [Python %d.%d.%d]",
+#endif
+ oldResult, (version >> 16) & 0xFF,
+ (version >> 8) & 0xFF, version & 0xFF);
+Py_DECREF(oldResult);
+// @snippet qlibraryinfo_build
+
+// @snippet qsharedmemory_data_readonly
+%PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.size());
+// @snippet qsharedmemory_data_readonly
+
+// @snippet qsharedmemory_data_readwrite
+// FIXME: There is no way to tell whether QSharedMemory was attached read/write
+%PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.size(),
+ Shiboken::Buffer::ReadWrite);
+// @snippet qsharedmemory_data_readwrite
+
+// @snippet std-function-void-lambda
+auto *callable = %PYARG_1;
+auto cppCallback = [callable]()
+{
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(0));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+ Py_DECREF(callable);
+};
+// @snippet std-function-void-lambda
+
+// @snippet qthreadpool-start
+Py_INCREF(callable);
+%CPPSELF.%FUNCTION_NAME(cppCallback, %2);
+// @snippet qthreadpool-start
+
+// @snippet qthreadpool-trystart
+Py_INCREF(callable);
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(cppCallback);
+%PYARG_0 = %CONVERTTOPYTHON[int](cppResult);
+// @snippet qthreadpool-trystart
+
+// @snippet repr-qevent
+QString result;
+QDebug(&result).nospace() << "<PySide6.QtCore.QEvent(" << %CPPSELF->type() << ")>";
+%PYARG_0 = Shiboken::String::fromCString(qPrintable(result));
+// @snippet repr-qevent
+
+// @snippet qmetaproperty_write_enum
+if (Shiboken::Enum::check(%PYARG_2))
+ cppArg1 = QVariant(int(Shiboken::Enum::getValue(%PYARG_2)));
+// @snippet qmetaproperty_write_enum
+
+// @snippet qdatastream-read-bytes
+QByteArray data;
+data.resize(%2);
+auto dataChar = data.data();
+cppSelf->readBytes(dataChar, %2);
+const char *constDataChar = dataChar;
+if (dataChar == nullptr) {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+} else {
+ %PYARG_0 = PyBytes_FromStringAndSize(constDataChar, %2);
+}
+// @snippet qdatastream-read-bytes
+
+// @snippet qloggingcategory_to_cpp
+// PYSIDE-2404: Usage of the `get()` function not necessary, the type exists.
+ QLoggingCategory *category{nullptr};
+ Shiboken::Conversions::pythonToCppPointer(SbkPySide6_QtCoreTypeStructs[SBK_QLoggingCategory_IDX].type,
+ pyArgs[0], &(category));
+// @snippet qloggingcategory_to_cpp
+
+// Q_ARG()-equivalent
+// @snippet q_arg
+const QArgData qArgData = qArgDataFromPyType(%1);
+if (!qArgData)
+ return nullptr;
+
+switch (qArgData.metaType.id()) {
+ case QMetaType::Bool:
+ *reinterpret_cast<bool *>(qArgData.data) = %2 == Py_True;
+ break;
+ case QMetaType::Int:
+ *reinterpret_cast<int *>(qArgData.data) = int(PyLong_AsLong(%2));
+ break;
+ case QMetaType::Double:
+ *reinterpret_cast<double *>(qArgData.data) = PyFloat_AsDouble(%2);
+ break;
+ case QMetaType::QString:
+ *reinterpret_cast<QString *>(qArgData.data) = PySide::pyUnicodeToQString(%2);
+ break;
+ default: {
+ Shiboken::Conversions::SpecificConverter converter(qArgData.metaType.name());
+ const auto type = converter.conversionType();
+ // Copy for values, Pointer for objects
+ if (type == Shiboken::Conversions::SpecificConverter::InvalidConversion) {
+ PyErr_Format(PyExc_RuntimeError, "%s: Unable to find converter for \"%s\".",
+ __FUNCTION__, qArgData.metaType.name());
+ return nullptr;
+ }
+ converter.toCpp(%2, qArgData.data);
+ }
+}
+
+QtCoreHelper::QGenericArgumentHolder result(qArgData.metaType, qArgData.data);
+%PYARG_0 = %CONVERTTOPYTHON[QtCoreHelper::QGenericArgumentHolder](result);
+// @snippet q_arg
+
+// Q_RETURN_ARG()-equivalent
+// @snippet q_return_arg
+const QArgData qArgData = qArgDataFromPyType(%1);
+if (!qArgData)
+ return nullptr;
+
+QtCoreHelper::QGenericReturnArgumentHolder result(qArgData.metaType, qArgData.data);
+%PYARG_0 = %CONVERTTOPYTHON[QtCoreHelper::QGenericReturnArgumentHolder](result);
+// @snippet q_return_arg
+
+// @snippet qmetamethod-invoke-helpers
+static InvokeMetaMethodFunc
+ createInvokeMetaMethodFunc(const QMetaMethod &method, QObject *object,
+ Qt::ConnectionType type = Qt::AutoConnection)
+{
+ return [&method, object, type](QGenericArgument a0, QGenericArgument a1,
+ QGenericArgument a2, QGenericArgument a3,
+ QGenericArgument a4, QGenericArgument a5,
+ QGenericArgument a6, QGenericArgument a7,
+ QGenericArgument a8, QGenericArgument a9) -> bool
+ {
+ return method.invoke(object, type, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ };
+}
+
+static InvokeMetaMethodFuncWithReturn
+ createInvokeMetaMethodFuncWithReturn(const QMetaMethod &method, QObject *object,
+ Qt::ConnectionType type = Qt::AutoConnection)
+{
+ return [&method, object, type](QGenericReturnArgument r,
+ QGenericArgument a0, QGenericArgument a1,
+ QGenericArgument a2, QGenericArgument a3,
+ QGenericArgument a4, QGenericArgument a5,
+ QGenericArgument a6, QGenericArgument a7,
+ QGenericArgument a8, QGenericArgument a9) -> bool
+ {
+ return method.invoke(object, type, r, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ };
+}
+// @snippet qmetamethod-invoke-helpers
+
+// @snippet qmetamethod-invoke-conn-type-return-arg
+%PYARG_0 = invokeMetaMethodWithReturn(createInvokeMetaMethodFuncWithReturn(*%CPPSELF, %1, %2),
+ %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13);
+// @snippet qmetamethod-invoke-conn-type-return-arg
+
+// @snippet qmetamethod-invoke-return-arg
+%PYARG_0 = invokeMetaMethodWithReturn(createInvokeMetaMethodFuncWithReturn(*%CPPSELF, %1),
+ %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12);
+// @snippet qmetamethod-invoke-return-arg
+
+// @snippet qmetamethod-invoke-conn-type
+%PYARG_0 = invokeMetaMethod(createInvokeMetaMethodFunc(*%CPPSELF, %1, %2),
+ %3, %4, %5, %6, %7, %8, %9, %10, %11, %12);
+// @snippet qmetamethod-invoke-conn-type
+
+// @snippet qmetamethod-invoke
+%PYARG_0 = invokeMetaMethod(createInvokeMetaMethodFunc(*%CPPSELF, %1),
+ %2, %3, %4, %5, %6, %7, %8, %9, %10, %11);
+// @snippet qmetamethod-invoke
+
+// @snippet qmetaobject-invokemethod-helpers
+static InvokeMetaMethodFunc
+ createInvokeMetaMethodFunc(QObject *object, const char *methodName,
+ Qt::ConnectionType type = Qt::AutoConnection)
+{
+ return [object, methodName, type](QGenericArgument a0, QGenericArgument a1,
+ QGenericArgument a2, QGenericArgument a3,
+ QGenericArgument a4, QGenericArgument a5,
+ QGenericArgument a6, QGenericArgument a7,
+ QGenericArgument a8, QGenericArgument a9) -> bool
+ {
+ return QMetaObject::invokeMethod(object, methodName, type,
+ a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ };
+}
+
+static InvokeMetaMethodFuncWithReturn
+ createInvokeMetaMethodFuncWithReturn(QObject *object, const char *methodName,
+ Qt::ConnectionType type = Qt::AutoConnection)
+{
+ return [object, methodName, type](QGenericReturnArgument r,
+ QGenericArgument a0, QGenericArgument a1,
+ QGenericArgument a2, QGenericArgument a3,
+ QGenericArgument a4, QGenericArgument a5,
+ QGenericArgument a6, QGenericArgument a7,
+ QGenericArgument a8, QGenericArgument a9) -> bool
+ {
+ return QMetaObject::invokeMethod(object, methodName, type,
+ r, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
+ };
+}
+// @snippet qmetaobject-invokemethod-helpers
+
+// invokeMethod(QObject *,const char *, QGenericArgument a0, a1, a2 )
+// @snippet qmetaobject-invokemethod-arg
+%PYARG_0 = invokeMetaMethod(createInvokeMetaMethodFunc(%1, %2),
+ %3, %4, %5, %6, %7, %8, %9, %10, %11, %12);
+// @snippet qmetaobject-invokemethod-arg
+
+// invokeMethod(QObject *,const char *,Qt::ConnectionType, QGenericArgument a0, a1, a2 )
+// @snippet qmetaobject-invokemethod-conn-type-arg
+%PYARG_0 = invokeMetaMethod(createInvokeMetaMethodFunc(%1, %2, %3),
+ %4, %5, %6, %7, %8, %9, %10, %11, %12, %13);
+// @snippet qmetaobject-invokemethod-conn-type-arg
+
+// invokeMethod(QObject *,const char *, Qt::ConnectionType, QGenericReturnArgument,QGenericArgument a0, a1, a2 )
+// @snippet qmetaobject-invokemethod-conn-type-return-arg
+%PYARG_0 = invokeMetaMethodWithReturn(createInvokeMetaMethodFuncWithReturn(%1, %2, %3),
+ %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, %14);
+// @snippet qmetaobject-invokemethod-conn-type-return-arg
+
+// invokeMethod(QObject *,const char *, QGenericReturnArgument,QGenericArgument a0, a1, a2 )
+// @snippet qmetaobject-invokemethod-return-arg
+%PYARG_0 = invokeMetaMethodWithReturn(createInvokeMetaMethodFuncWithReturn(%1, %2),
+ %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13);
+// @snippet qmetaobject-invokemethod-return-arg
+
+// @snippet keycombination-from-keycombination
+cptr = new ::%TYPE(%1);
+// @snippet keycombination-from-keycombination
+
+// @snippet keycombination-from-modifier
+cptr = new ::%TYPE(%1, %2);
+// @snippet keycombination-from-modifier
+
+// @snippet qmetamethod-from-signal
+auto *signalInst = reinterpret_cast<PySideSignalInstance *>(%PYARG_1);
+const auto data = PySide::Signal::getEmitterData(signalInst);
+const auto result = data.methodIndex != -1
+ ? data.emitter->metaObject()->method(data.methodIndex)
+ : QMetaMethod{};
+%PYARG_0 = %CONVERTTOPYTHON[QMetaMethod](result);
+// @snippet qmetamethod-from-signal
+
+// @snippet qrunnable_create
+auto callable = %PYARG_1;
+auto callback = [callable]() -> void
+{
+ if (!PyCallable_Check(callable)) {
+ qWarning("Argument 1 of %FUNCTION_NAME must be a callable.");
+ return;
+ }
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, nullptr));
+ Py_DECREF(callable);
+};
+Py_INCREF(callable);
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(callback);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qrunnable_create
+
+// @snippet qlocale_system
+// For darwin systems, QLocale::system() involves looking at the Info.plist of the application
+// bundle to detect the system localization. In the case of Qt for Python, the application bundle
+// is the used Python framework. To enable retreival of localized string, the property list key
+// CFBunldeAllowMixedLocalizations should be set to True inside the Info.plist file. Otherwise,
+// CFBundleDevelopmentRegion will be used to find the language preference of the user, which in the
+// case of Python is always english.
+// This is a hack until CFBunldeAllowMixedLocalizations will be set in the Python framework
+// installation in darwin systems.
+// Upstream issue in CPython: https://github.com/python/cpython/issues/108269
+#ifdef Q_OS_DARWIN
+ Shiboken::AutoDecRef locale(PyImport_ImportModule("locale"));
+ Shiboken::AutoDecRef getLocale(PyObject_GetAttrString(locale, "getlocale"));
+ Shiboken::AutoDecRef systemLocale(PyObject_CallObject(getLocale, nullptr));
+ PyObject* localeCode = PyTuple_GetItem(systemLocale, 0);
+ %RETURN_TYPE %0;
+ if (localeCode != Py_None) {
+ QString localeCodeStr = PySide::pyStringToQString(localeCode);
+ %0 = QLocale(localeCodeStr);
+ } else {
+ // The default locale is 'C' locale as mentioned in
+ // https://docs.python.org/3/library/locale.html
+ %0 = ::QLocale::c();
+ }
+#else
+ %RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME();
+#endif
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet qlocale_system
+
+// @snippet qcoreapplication-requestpermission
+auto permission = %1;
+auto callable = %PYARG_3;
+
+// check if callable
+if (!PyCallable_Check(callable)) {
+ qWarning("Functor of %FUNCTION_NAME is not a callable");
+ return {};
+}
+
+// find the number of arguments of callable. It should either be empy or accept a QPermission
+// object
+int count = 0;
+PyObject* fc = nullptr;
+bool classMethod = false;
+Shiboken::AutoDecRef func_ob(PyObject_GetAttr(callable, Shiboken::PyMagicName::func()));
+
+if (func_ob.isNull() && PyObject_HasAttr(callable, Shiboken::PyMagicName::code())) {
+ // variable `callable` is a function
+ fc = PyObject_GetAttr(callable, Shiboken::PyMagicName::code());
+} else {
+ // variable `callable` is a class method
+ fc = PyObject_GetAttr(func_ob, Shiboken::PyMagicName::code());
+ classMethod = true;
+}
+
+if (fc) {
+ PyObject* ac = PyObject_GetAttrString(fc, "co_argcount");
+ if (ac) {
+ count = PyLong_AsLong(ac);
+ Py_DECREF(ac);
+ }
+ Py_DECREF(fc);
+}
+
+if ((classMethod && (count > 2)) || (!classMethod && (count > 1))) {
+ qWarning("Functor of %FUNCTION_NAME must either have QPermission object as argument or none."
+ "The QPermission object store the result of requestPermission()");
+ return {};
+}
+
+bool arg_qpermission = (classMethod && (count == 2)) || (!classMethod && (count == 1));
+
+auto callback = [callable, count, arg_qpermission](const QPermission &permission) -> void
+{
+ Shiboken::GilState state;
+ if (arg_qpermission) {
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ PyTuple_SET_ITEM(arglist.object(), 0, %CONVERTTOPYTHON[QPermission](permission));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+ } else {
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, nullptr));
+ }
+ Py_DECREF(callable);
+};
+Py_INCREF(callable);
+
+Py_BEGIN_ALLOW_THREADS
+%CPPSELF.%FUNCTION_NAME(permission, %2, callback);
+Py_END_ALLOW_THREADS
+// @snippet qcoreapplication-requestpermission
+
+// @snippet qlockfile-getlockinfo
+qint64 pid{};
+QString hostname, appname;
+%CPPSELF.%FUNCTION_NAME(&pid, &hostname, &appname);
+%PYARG_0 = PyTuple_New(3);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[qint64](pid));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](hostname));
+PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[QString](appname));
+// @snippet qlockfile-getlockinfo
+
+// @snippet darwin_permission_plugin
+#ifdef Q_OS_DARWIN
+#include<QtCore/qplugin.h>
+// register the static plugin and setup its metadata
+Q_IMPORT_PLUGIN(QDarwinCameraPermissionPlugin)
+Q_IMPORT_PLUGIN(QDarwinMicrophonePermissionPlugin)
+Q_IMPORT_PLUGIN(QDarwinBluetoothPermissionPlugin)
+Q_IMPORT_PLUGIN(QDarwinContactsPermissionPlugin)
+Q_IMPORT_PLUGIN(QDarwinCalendarPermissionPlugin)
+#endif
+// @snippet darwin_permission_plugin
+
+// @snippet qt-modifier
+PyObject *_inputDict = PyDict_New();
+// Note: The builtins line is no longer needed since Python 3.10. Undocumented!
+PyDict_SetItemString(_inputDict, "__builtins__", PyEval_GetBuiltins());
+PyDict_SetItemString(_inputDict, "QtCore", module);
+PyDict_SetItemString(_inputDict, "Qt", reinterpret_cast<PyObject *>(pyType));
+// Explicitly not dereferencing the result.
+PyRun_String(R"PY(if True:
+ from enum import Flag
+ from textwrap import dedent
+ from warnings import warn
+ # QtCore and Qt come as globals.
+
+ def func_or(self, other):
+ if isinstance(self, Flag) and isinstance(other, Flag):
+ # this is normal or-ing flags together
+ return Qt.KeyboardModifier(self.value | other.value)
+ return QtCore.QKeyCombination(self, other)
+
+ def func_add(self, other):
+ warn(dedent(f"""
+ The "+" operator is deprecated in Qt For Python 6.0 .
+ Please use "|" instead."""), stacklevel=2)
+ return func_or(self, other)
+
+ Qt.KeyboardModifier.__or__ = func_or
+ Qt.KeyboardModifier.__ror__ = func_or
+ Qt.Modifier.__or__ = func_or
+ Qt.Modifier.__ror__ = func_or
+ Qt.KeyboardModifier.__add__ = func_add
+ Qt.KeyboardModifier.__radd__ = func_add
+ Qt.Modifier.__add__ = func_add
+ Qt.Modifier.__radd__ = func_add
+
+)PY", Py_file_input, _inputDict, _inputDict);
+// @snippet qt-modifier
diff --git a/sources/pyside6/PySide6/glue/qtdatavisualization.cpp b/sources/pyside6/PySide6/glue/qtdatavisualization.cpp
new file mode 100644
index 000000000..3a179cb17
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtdatavisualization.cpp
@@ -0,0 +1,90 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet releaseownership
+Shiboken::Object::releaseOwnership(%PYARG_1);
+// @snippet releaseownership
+
+// @snippet qcustom3dvolume-settexturedata
+using VectorType = decltype(%1);
+%CPPSELF.setTextureData(new VectorType(%1));
+// @snippet qcustom3dvolume-settexturedata
+
+// @snippet dataproxy-addrow
+using ListType = decltype(%1);
+%RETURN_TYPE %0 = %CPPSELF.addRow(new ListType(%1));
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet dataproxy-addrow
+
+// @snippet dataproxy-addrow-string
+using ListType = decltype(%1);
+%RETURN_TYPE %0 = %CPPSELF.addRow(new ListType(%1), %2);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+// @snippet dataproxy-addrow-string
+
+// @snippet dataproxy-insertrow
+using ListType = decltype(%2);
+%CPPSELF.insertRow(%1, new ListType(%2));
+// @snippet dataproxy-insertrow
+
+// @snippet dataproxy-insertrow-string
+using ListType = decltype(%2);
+%CPPSELF.insertRow(%1, new ListType(%2), %3);
+// @snippet dataproxy-insertrow-string
+
+// @snippet dataproxy-setrow
+using ListType = decltype(%2);
+%CPPSELF.setRow(%1, new ListType(%2));
+// @snippet dataproxy-setrow
+
+// @snippet dataproxy-setrow-string
+using ListType = decltype(%2);
+%CPPSELF.setRow(%1, new ListType(%2), %3);
+// @snippet dataproxy-setrow-string
+
+// @snippet dataproxy-resetarray
+using ListType = decltype(%1);
+%CPPSELF.resetArray(new ListType(%1));
+// @snippet dataproxy-resetarray
+
+// @snippet dataproxy-resetarray2
+using ListType = decltype(%1);
+%CPPSELF.resetArray(new ListType(%1), %2, %3);
+// @snippet dataproxy-resetarray2
+
+// @snippet scatterdataproxy-resetarray
+%CPPSELF.resetArray(new QScatterDataArray(*%1));
+// @snippet scatterdataproxy-resetarray
+
+// @snippet qsurfacedataproxy-resetarraynp
+auto *data = QtDataVisualizationHelper::surfaceDataFromNp(%1, %2, %3, %4, %5);
+// %CPPSELF.%FUNCTION_NAME
+%CPPSELF.resetArray(data);
+// @snippet qsurfacedataproxy-resetarraynp
+
+// @snippet qvalue3daxisformatter-friend
+class QFriendlyValue3DAxisFormatter : public QValue3DAxisFormatter
+{
+public:
+using QValue3DAxisFormatter::gridPositions;
+using QValue3DAxisFormatter::labelPositions;
+using QValue3DAxisFormatter::labelStrings;
+};
+
+static inline QFriendlyValue3DAxisFormatter *friendlyFormatter(QValue3DAxisFormatter *f)
+{
+ return static_cast<QFriendlyValue3DAxisFormatter *>(f);
+}
+// @snippet qvalue3daxisformatter-friend
+
+// @snippet qvalue3daxisformatter-setgridpositions
+friendlyFormatter(%CPPSELF)->gridPositions() = %1;
+// @snippet qvalue3daxisformatter-setgridpositions
+
+// @snippet qvalue3daxisformatter-setlabelpositions
+friendlyFormatter(%CPPSELF)->labelPositions() = %1;
+// @snippet qvalue3daxisformatter-setlabelpositions
+
+// @snippet qvalue3daxisformatter-setlabelstrings
+friendlyFormatter(%CPPSELF)->labelStrings() = %1;
+// @snippet qvalue3daxisformatter-setlabelstrings
diff --git a/sources/pyside6/PySide6/glue/qtdesigner.cpp b/sources/pyside6/PySide6/glue/qtdesigner.cpp
new file mode 100644
index 000000000..d26d9f857
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtdesigner.cpp
@@ -0,0 +1,7 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qtdesigner-registercustomwidget
+if (!QPyDesignerCustomWidgetCollection::_registerCustomWidgetHelper(%PYARG_1, kwds))
+ return {};
+// @snippet qtdesigner-registercustomwidget
diff --git a/sources/pyside6/PySide6/glue/qtgraphs.cpp b/sources/pyside6/PySide6/glue/qtgraphs.cpp
new file mode 100644
index 000000000..b5a5db799
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtgraphs.cpp
@@ -0,0 +1,8 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet graphs-qsurfacedataproxy-resetarraynp
+auto data = QtGraphsHelper::surfaceDataFromNp(%1, %2, %3, %4, %5);
+// %CPPSELF.%FUNCTION_NAME
+%CPPSELF.resetArray(data);
+// @snippet graphs-qsurfacedataproxy-resetarraynp
diff --git a/sources/pyside6/PySide6/glue/qtgui.cpp b/sources/pyside6/PySide6/glue/qtgui.cpp
new file mode 100644
index 000000000..5c860a2bf
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtgui.cpp
@@ -0,0 +1,947 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet gui-declarations
+QT_BEGIN_NAMESPACE
+void qt_set_sequence_auto_mnemonic(bool);
+QT_END_NAMESPACE
+// @snippet gui-declarations
+
+// @snippet qaccessible-pysidefactory
+// Helper for QAccessible::installFactory() that forwards the calls to
+// Python callables.
+class PySideAccessibleFactory
+{
+ PySideAccessibleFactory() = default;
+public:
+ ~PySideAccessibleFactory();
+
+ static PySideAccessibleFactory *instance() { return m_instance; }
+ static PySideAccessibleFactory *ensureInstance();
+
+ static void installFactory(PyObject *f);
+ static void cleanup();
+
+ static QAccessibleInterface *factory(const QString &key, QObject *o);
+
+private:
+ QAccessibleInterface *callFactories(const QString &key, QObject *o);
+
+ static PySideAccessibleFactory *m_instance;
+
+ QList<PyObject *> m_factoryFunctions;
+ QList<PyObject *> m_objects;
+};
+
+PySideAccessibleFactory *PySideAccessibleFactory::m_instance = nullptr;
+
+PySideAccessibleFactory::~PySideAccessibleFactory()
+{
+ QAccessible::removeFactory(PySideAccessibleFactory::factory);
+ if (!m_factoryFunctions.isEmpty()) {
+ Shiboken::GilState state;
+ for (auto *f : m_factoryFunctions)
+ Py_DECREF(f);
+ for (auto *o : m_objects)
+ Py_DECREF(o);
+ }
+}
+
+PySideAccessibleFactory *PySideAccessibleFactory::ensureInstance()
+{
+ if (m_instance == nullptr) {
+ m_instance = new PySideAccessibleFactory;
+ QAccessible::installFactory(PySideAccessibleFactory::factory);
+ qAddPostRoutine(PySideAccessibleFactory::cleanup);
+ }
+ return m_instance;
+}
+
+void PySideAccessibleFactory::installFactory(PyObject *f)
+{
+ if (m_instance != nullptr) {
+ Py_INCREF(f);
+ m_instance->m_factoryFunctions.append(f);
+ }
+}
+
+void PySideAccessibleFactory::cleanup()
+{
+ delete m_instance;
+ m_instance = nullptr;
+}
+
+QAccessibleInterface *PySideAccessibleFactory::factory(const QString &key, QObject *o)
+{
+ return m_instance ? m_instance->callFactories(key, o) : nullptr;
+}
+
+QAccessibleInterface *PySideAccessibleFactory::callFactories(const QString &key, QObject *o)
+{
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(2));
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[QString](key));
+ PyTuple_SET_ITEM(arglist, 1, %CONVERTTOPYTHON[QObject *](o));
+
+ for (auto *f : m_factoryFunctions) {
+ if (PyObject *pyResult = PyObject_CallObject(f, arglist)) {
+ if (pyResult != Py_None) {
+ m_objects.append(pyResult);
+ QAccessibleInterface* result = %CONVERTTOCPP[QAccessibleInterface *](pyResult);
+ return result;
+ }
+ Py_DECREF(pyResult);
+ }
+ }
+
+ return nullptr;
+}
+// @snippet qaccessible-pysidefactory
+
+// @snippet qaccessible-installfactory
+PySideAccessibleFactory::ensureInstance()->installFactory(%1);
+// @snippet qaccessible-installfactory
+
+// @snippet qaction-menu
+// %CPPSELF->menu(); // pretend it was called.
+QObject *object = %CPPSELF->menu<QObject *>();
+%PYARG_0 = %CONVERTTOPYTHON[QObject*](object);
+// @snippet qaction-menu
+
+// @snippet qopenglfunctions-glgetv-return-size
+// Return the number of return values of the glGetBoolean/Double/Integerv functions
+// cf https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGet.xhtml
+static int glGetVReturnSize(GLenum pname)
+{
+ switch (pname) {
+ case GL_ALIASED_LINE_WIDTH_RANGE:
+ case GL_DEPTH_RANGE:
+ case GL_MAX_VIEWPORT_DIMS:
+#if !QT_CONFIG(opengles2)
+ case GL_POINT_SIZE_RANGE:
+ case GL_SMOOTH_LINE_WIDTH_RANGE:
+ case GL_VIEWPORT_BOUNDS_RANGE:
+#endif
+ return 2;
+ case GL_BLEND_COLOR:
+ case GL_COLOR_CLEAR_VALUE:
+ case GL_COLOR_WRITEMASK:
+ case GL_SCISSOR_BOX:
+ case GL_VIEWPORT:
+ return 4;
+ case GL_COMPRESSED_TEXTURE_FORMATS:
+ return GL_NUM_COMPRESSED_TEXTURE_FORMATS;
+ default:
+ break;
+ }
+ return 1;
+}
+// @snippet qopenglfunctions-glgetv-return-size
+
+// @snippet qopenglextrafunctions-glgeti-v-return-size
+// Return the number of return values of the indexed
+// glGetBoolean/Double/Integeri_v functions
+// cf https://registry.khronos.org/OpenGL-Refpages/gl4/html/glGet.xhtml
+static int glGetI_VReturnSize(GLenum pname)
+{
+ return pname == GL_VIEWPORT ? 4 : 1;
+}
+// @snippet qopenglextrafunctions-glgeti-v-return-size
+
+// @snippet qopenglfunctions-glgetbooleanv
+const int size = glGetVReturnSize(%1);
+QVarLengthArray<GLboolean> result(size, GL_FALSE);
+%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, result.data());
+if (size == 1) {
+ %PYARG_0 = %CONVERTTOPYTHON[bool](result[0]);
+} else {
+ %PYARG_0 = Shiboken::Numpy::createByteArray1(size, result.constData());
+}
+// @snippet qopenglfunctions-glgetbooleanv
+
+// @snippet qopenglfunctions-glgetdoublev
+const int size = glGetVReturnSize(%1);
+QVarLengthArray<GLdouble> result(size, 0);
+%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, result.data());
+if (size == 1) {
+ %PYARG_0 = %CONVERTTOPYTHON[double](result[0]);
+} else {
+ %PYARG_0 = Shiboken::Numpy::createDoubleArray1(size, result.constData());
+}
+// @snippet qopenglfunctions-glgetdoublev
+
+// @snippet qopenglfunctions-glgetfloatv
+const int size = glGetVReturnSize(%1);
+QVarLengthArray<GLfloat> result(size, 0);
+%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, result.data());
+if (size == 1) {
+ %PYARG_0 = %CONVERTTOPYTHON[float](result[0]);
+} else {
+ %PYARG_0 = Shiboken::Numpy::createFloatArray1(size, result.constData());
+}
+// @snippet qopenglfunctions-glgetfloatv
+
+// @snippet qopenglfunctions-glgetintegerv
+const int size = glGetVReturnSize(%1);
+QVarLengthArray<GLint> result(size, 0);
+%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, result.data());
+if (size == 1) {
+ %PYARG_0 = %CONVERTTOPYTHON[int](result[0]);
+} else {
+ %PYARG_0 = Shiboken::Numpy::createIntArray1(size, result.constData());
+}
+// @snippet qopenglfunctions-glgetintegerv
+
+// @snippet qopenglextrafunctions-glgetbooleani-v
+const int size = glGetI_VReturnSize(%1);
+QVarLengthArray<GLboolean> result(size, GL_FALSE);
+%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, result.data());
+if (size == 1) {
+ %PYARG_0 = %CONVERTTOPYTHON[bool](result[0]);
+} else {
+ %PYARG_0 = Shiboken::Numpy::createByteArray1(size, result.constData());
+}
+// @snippet qopenglextrafunctions-glgetbooleani-v
+
+// @snippet qopenglextrafunctions-glgetdoublei-v
+const int size = glGetI_VReturnSize(%1);
+QVarLengthArray<GLdouble> result(size, 0);
+%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, result.data());
+if (size == 1) {
+ %PYARG_0 = %CONVERTTOPYTHON[double](result[0]);
+} else {
+ %PYARG_0 = Shiboken::Numpy::createDoubleArray1(size, result.constData());
+}
+// @snippet qopenglextrafunctions-glgetdoublei-v
+
+// @snippet qopenglextrafunctions-glgetfloati-v
+const int size = glGetI_VReturnSize(%1);
+QVarLengthArray<GLfloat> result(size, 0);
+%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, result.data());
+if (size == 1) {
+ %PYARG_0 = %CONVERTTOPYTHON[float](result[0]);
+} else {
+ %PYARG_0 = Shiboken::Numpy::createFloatArray1(size, result.constData());
+}
+// @snippet qopenglextrafunctions-glgetfloati-v
+
+// @snippet qopenglextrafunctions-glgetintegeri-v
+const int size = glGetI_VReturnSize(%1);
+QVarLengthArray<GLint> result(size, 0);
+%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, result.data());
+if (size == 1) {
+ %PYARG_0 = %CONVERTTOPYTHON[int](result[0]);
+} else {
+ %PYARG_0 = Shiboken::Numpy::createIntArray1(size, result.constData());
+}
+// @snippet qopenglextrafunctions-glgetintegeri-v
+
+// @snippet glgetshadersource
+GLsizei bufSize = 4096;
+GLsizei length = bufSize - 1;
+QByteArray buffer;
+for (; length == bufSize - 1; bufSize += 4096) {
+ buffer.resize(qsizetype(bufSize));
+ %CPPSELF->%FUNCTION_NAME(%1, bufSize, &length, buffer.data());
+ if (%CPPSELF->glGetError() != GL_NO_ERROR) {
+ buffer.clear();
+ break;
+ }
+}
+auto *data = buffer.constData();
+%PYARG_0 = %CONVERTTOPYTHON[char *](data);
+// @snippet glgetshadersource
+
+// @snippet glshadersource
+const QByteArray buffer = %2.toUtf8();
+const char *sources[] = {buffer.constData()};
+%CPPSELF->%FUNCTION_NAME(%1, 1, sources, nullptr);
+// @snippet glshadersource
+
+// @snippet glgetstring-return
+%PYARG_0 = %CONVERTTOPYTHON[const char *](%0);
+// @snippet glgetstring-return
+
+// @snippet qtransform-quadtoquad
+QTransform _result;
+if (QTransform::quadToQuad(%1, %2, _result)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QTransform](_result);
+} else {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+}
+// @snippet qtransform-quadtoquad
+
+// @snippet qtransform-quadtosquare
+QTransform _result;
+if (QTransform::quadToSquare(%1, _result)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QTransform](_result);
+} else {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+}
+// @snippet qtransform-quadtosquare
+
+// @snippet qtransform-squaretoquad
+QTransform _result;
+if (QTransform::squareToQuad(%1, _result)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QTransform](_result);
+} else {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+}
+// @snippet qtransform-squaretoquad
+
+// @snippet qbitmap-fromdata
+auto *buffer = reinterpret_cast<uchar *>(Shiboken::Buffer::getPointer(%PYARG_2));
+QBitmap %0 = QBitmap::fromData(%1, buffer, %3);
+%PYARG_0 = %CONVERTTOPYTHON[QBitmap](%0);
+// @snippet qbitmap-fromdata
+
+// @snippet qtextline-cursortox
+%RETURN_TYPE %0 = %CPPSELF->::%TYPE::%FUNCTION_NAME(&%1, %2);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](%0));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG1_TYPE](%1));
+// @snippet qtextline-cursortox
+
+// @snippet qkeysequence-getitem
+if (_i < 0 || _i >= %CPPSELF.count()) {
+ PyErr_SetString(PyExc_IndexError, "index out of bounds");
+ return 0;
+}
+QKeyCombination item = (*%CPPSELF)[_i];
+return %CONVERTTOPYTHON[QKeyCombination](item);
+// @snippet qkeysequence-getitem
+
+// @snippet qkeysequence-repr
+auto ObTuple_Type = reinterpret_cast<PyObject *>(&PyTuple_Type);
+auto ObSelf_Type = reinterpret_cast<PyObject *>(Py_TYPE(%PYSELF));
+Shiboken::AutoDecRef surrogate(PyObject_CallFunctionObjArgs(ObTuple_Type, %PYSELF, nullptr));
+Shiboken::AutoDecRef argstr(PyObject_Repr(surrogate));
+Shiboken::AutoDecRef name(PyObject_GetAttrString(ObSelf_Type, "__name__"));
+return PyUnicode_Concat(name, argstr);
+// @snippet qkeysequence-repr
+
+// @snippet qpicture-data
+%PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.data(), %CPPSELF.size());
+// @snippet qpicture-data
+
+// @snippet qtextblock-setuserdata
+const QTextDocument *doc = %CPPSELF.document();
+if (doc) {
+ Shiboken::AutoDecRef pyDocument(%CONVERTTOPYTHON[QTextDocument *](doc));
+ Shiboken::Object::setParent(pyDocument, %PYARG_1);
+}
+// @snippet qtextblock-setuserdata
+
+// @snippet qtextblock-userdata
+const QTextDocument *doc = %CPPSELF.document();
+if (doc) {
+ Shiboken::AutoDecRef pyDocument(%CONVERTTOPYTHON[QTextDocument *](doc));
+ Shiboken::Object::setParent(pyDocument, %PYARG_0);
+}
+// @snippet qtextblock-userdata
+
+// @snippet qpolygon-reduce
+const Py_ssize_t count = %CPPSELF.size();
+PyObject *points = PyList_New(count);
+for (Py_ssize_t i = 0; i < count; ++i){
+ int x, y;
+ %CPPSELF.point(i, &x, &y);
+ QPoint pt{x, y};
+ PyList_SET_ITEM(points, i, %CONVERTTOPYTHON[QPoint](pt));
+}
+// @snippet qpolygon-reduce
+
+// @snippet qpolygon-operatorlowerlower
+// %FUNCTION_NAME()
+*%CPPSELF << %1;
+%PYARG_0 = %CONVERTTOPYTHON[QPolygon *](%CPPSELF);
+// @snippet qpolygon-operatorlowerlower
+
+// @snippet qpixmap
+%0 = new %TYPE(QPixmap::fromImage(%1));
+// @snippet qpixmap
+
+// @snippet qicon-addpixmap
+const auto path = PySide::pyPathToQString(%PYARG_1);
+%CPPSELF->addPixmap(path);
+// @snippet qicon-addpixmap
+
+// @snippet qclipboard-setpixmap
+const auto path = PySide::pyPathToQString(%PYARG_1);
+%CPPSELF->setPixmap(QPixmap(path));
+// @snippet qclipboard-setpixmap
+
+// @snippet qclipboard-setimage
+const auto path = PySide::pyPathToQString(%PYARG_1);
+%CPPSELF->setImage(QImage(path));
+// @snippet qclipboard-setimage
+
+// @snippet qimage-decref-image-data
+static void imageDecrefDataHandler(void *data)
+{
+ // Avoid "Python memory allocator called without holding the GIL"
+ auto state = PyGILState_Ensure();
+ Py_DECREF(reinterpret_cast<PyObject *>(data));
+ PyGILState_Release(state);
+}
+// @snippet qimage-decref-image-data
+
+// @snippet qimage-constbits
+%PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.sizeInBytes());
+// @snippet qimage-constbits
+
+// @snippet qimage-bits
+// byteCount() is only available on Qt4.7, so we use bytesPerLine * height
+%PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(), %CPPSELF.bytesPerLine() * %CPPSELF.height(), Shiboken::Buffer::ReadWrite);
+// @snippet qimage-bits
+
+// @snippet qimage-constscanline
+%PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1), %CPPSELF.bytesPerLine());
+// @snippet qimage-constscanline
+
+// @snippet qimage-scanline
+%PYARG_0 = Shiboken::Buffer::newObject(%CPPSELF.%FUNCTION_NAME(%1), %CPPSELF.bytesPerLine(), Shiboken::Buffer::ReadWrite);
+// @snippet qimage-scanline
+
+// @snippet qcolor-setstate
+Shiboken::AutoDecRef func(PyObject_GetAttr(%PYSELF, PyTuple_GET_ITEM(%1, 0)));
+PyObject *args = PyTuple_GET_ITEM(%1, 1);
+%PYARG_0 = PyObject_Call(func, args, nullptr);
+// @snippet qcolor-setstate
+
+// @snippet qcolor-reduce
+switch (%CPPSELF.spec()) {
+ case QColor::Rgb:
+ {
+ float r, g, b, a;
+ %CPPSELF.getRgbF(&r, &g, &b, &a);
+ %PYARG_0 = Py_BuildValue("(ON(s(ffff)))", Py_TYPE(%PYSELF), PyTuple_New(0),
+ "setRgbF", r, g, b, a);
+ break;
+ }
+ case QColor::Hsv:
+ {
+ float h, s, v, a;
+ %CPPSELF.getHsvF(&h, &s, &v, &a);
+ %PYARG_0 = Py_BuildValue("(ON(s(ffff)))", Py_TYPE(%PYSELF), PyTuple_New(0),
+ "setHsvF", h, s, v, a);
+ break;
+ }
+ case QColor::Cmyk:
+ {
+ float c, m, y, k, a;
+ %CPPSELF.getCmykF(&c, &m, &y, &k, &a);
+ %PYARG_0 = Py_BuildValue("(ON(s(fffff)))", Py_TYPE(%PYSELF), PyTuple_New(0),
+ "setCmykF", c, m, y, k, a);
+ break;
+ }
+ case QColor::Hsl:
+ {
+ float h, s, l, a;
+ %CPPSELF.getHslF(&h, &s, &l, &a);
+ %PYARG_0 = Py_BuildValue("(ON(s(ffff)))", Py_TYPE(%PYSELF), PyTuple_New(0),
+ "setHslF", h, s, l, a);
+ break;
+ }
+ default:
+ {
+ %PYARG_0 = Py_BuildValue("(N(O))", PyObject_Type(%PYSELF), Py_None);
+ }
+}
+// @snippet qcolor-reduce
+
+// @snippet qcolor-totuple
+switch (%CPPSELF.spec()) {
+ case QColor::Rgb:
+ {
+ int r, g, b, a;
+ %CPPSELF.getRgb(&r, &g, &b, &a);
+ %PYARG_0 = Py_BuildValue("iiii", r, g, b, a);
+ break;
+ }
+ case QColor::Hsv:
+ {
+ int h, s, v, a;
+ %CPPSELF.getHsv(&h, &s, &v, &a);
+ %PYARG_0 = Py_BuildValue("iiii", h, s, v, a);
+ break;
+ }
+ case QColor::Cmyk:
+ {
+ int c, m, y, k, a;
+ %CPPSELF.getCmyk(&c, &m, &y, &k, &a);
+ %PYARG_0 = Py_BuildValue("iiiii", c, m, y, k, a);
+ break;
+ }
+ case QColor::Hsl:
+ {
+ int h, s, l, a;
+ %CPPSELF.getHsl(&h, &s, &l, &a);
+ %PYARG_0 = Py_BuildValue("iiii", h, s, l, a);
+ break;
+ }
+ default:
+ {
+ %PYARG_0 = 0;
+ }
+}
+// @snippet qcolor-totuple
+
+// @snippet qcolor
+if (%1.type() == QVariant::Color)
+ %0 = new %TYPE(%1.value<QColor>());
+else
+ PyErr_SetString(PyExc_TypeError, "QVariant must be holding a QColor");
+// @snippet qcolor
+
+// @snippet qfontmetricsf-boundingrect
+int *array = nullptr;
+bool errorOccurred = false;
+
+if (numArgs == 5) {
+ array = Shiboken::sequenceToIntArray(%PYARG_5, true);
+ if (PyErr_Occurred()) {
+ delete [] array;
+ errorOccurred = true;
+ }
+}
+
+if (!errorOccurred) {
+ %RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, array);
+
+ delete [] array;
+
+ %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](retval);
+}
+// @snippet qfontmetricsf-boundingrect
+
+// @snippet qfontmetricsf-size
+int *array = nullptr;
+bool errorOccurred = false;
+
+if (numArgs == 4) {
+ array = Shiboken::sequenceToIntArray(%PYARG_4, true);
+ if (PyErr_Occurred()) {
+ delete [] array;
+ errorOccurred = true;
+ }
+}
+
+if (!errorOccurred) {
+ %RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, array);
+
+ delete [] array;
+
+ %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](retval);
+}
+// @snippet qfontmetricsf-size
+
+// @snippet qfontmetrics-boundingrect-1
+int *array = nullptr;
+bool errorOccurred = false;
+
+if (numArgs == 8) {
+ array = Shiboken::sequenceToIntArray(%PYARG_8, true);
+ if (PyErr_Occurred()) {
+ delete [] array;
+ errorOccurred = true;
+ }
+}
+
+if (!errorOccurred) {
+ %RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, %7, array);
+
+ delete [] array;
+
+ %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](retval);
+}
+// @snippet qfontmetrics-boundingrect-1
+
+// @snippet qfontmetrics-boundingrect-2
+int *array = nullptr;
+bool errorOccurred = false;
+
+if (numArgs == 5) {
+ array = Shiboken::sequenceToIntArray(%PYARG_5, true);
+ if (PyErr_Occurred()) {
+ delete [] array;
+ errorOccurred = true;
+ }
+}
+
+if (!errorOccurred) {
+ %RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, array);
+
+ delete [] array;
+
+ %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](retval);
+}
+// @snippet qfontmetrics-boundingrect-2
+
+// @snippet qfontmetrics-size
+int *array = nullptr;
+bool errorOccurred = false;
+
+if (numArgs == 4) {
+ array = Shiboken::sequenceToIntArray(%PYARG_4, true);
+ if (PyErr_Occurred()) {
+ delete [] array;
+ errorOccurred = true;
+ }
+}
+
+if (!errorOccurred) {
+ %RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, array);
+
+ delete [] array;
+
+ %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](retval);
+}
+// @snippet qfontmetrics-size
+
+// @snippet qpixmapcache-find
+QPixmap p;
+if (%CPPSELF.%FUNCTION_NAME(%1, &p)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QPixmap](p);
+} else {
+ %PYARG_0 = Py_None;
+ Py_INCREF(%PYARG_0);
+}
+// @snippet qpixmapcache-find
+
+// @snippet qstandarditem-setchild-1
+// Clear parent from the old child
+QStandardItem *_i = %CPPSELF->child(%1, %2);
+if (_i) {
+ PyObject *_pyI = %CONVERTTOPYTHON[QStandardItem *](_i);
+ Shiboken::Object::setParent(nullptr, _pyI);
+}
+// @snippet qstandarditem-setchild-1
+
+// @snippet qstandarditem-setchild-2
+// Clear parent from the old child
+QStandardItem *_i = %CPPSELF->child(%1);
+if (_i) {
+ PyObject *_pyI = %CONVERTTOPYTHON[QStandardItem *](_i);
+ Shiboken::Object::setParent(nullptr, _pyI);
+}
+// @snippet qstandarditem-setchild-2
+
+// @snippet qkeyevent-operatornotequal
+bool ret = !(&%CPPSELF == %1);
+%PYARG_0 = %CONVERTTOPYTHON[bool](ret);
+// @snippet qkeyevent-operatornotequal
+
+// @snippet qstandarditemmodel-setitem-1
+// Clear parent from the old child
+QStandardItem *_i = %CPPSELF->item(%1, %2);
+if (_i) {
+ PyObject *_pyI = %CONVERTTOPYTHON[QStandardItem *](_i);
+ Shiboken::Object::setParent(nullptr, _pyI);
+}
+// @snippet qstandarditemmodel-setitem-1
+
+// @snippet qstandarditemmodel-setitem-2
+// Clear parent from the old child
+QStandardItem *_i = %CPPSELF->item(%1);
+if (_i) {
+ PyObject *_pyI = %CONVERTTOPYTHON[QStandardItem *](_i);
+ Shiboken::Object::setParent(nullptr, _pyI);
+}
+// @snippet qstandarditemmodel-setitem-2
+
+// @snippet qstandarditemmodel-setverticalheaderitem
+// Clear parent from the old child
+QStandardItem *_i = %CPPSELF->verticalHeaderItem(%1);
+if (_i) {
+ PyObject *_pyI = %CONVERTTOPYTHON[QStandardItem *](_i);
+ Shiboken::Object::setParent(nullptr, _pyI);
+}
+// @snippet qstandarditemmodel-setverticalheaderitem
+
+// @snippet qstandarditemmodel-clear
+Shiboken::BindingManager &bm = Shiboken::BindingManager::instance();
+SbkObject *pyRoot = bm.retrieveWrapper(%CPPSELF.invisibleRootItem());
+if (pyRoot) {
+ Shiboken::Object::destroy(pyRoot, %CPPSELF.invisibleRootItem());
+}
+
+for (int r=0, r_max = %CPPSELF.rowCount(); r < r_max; r++) {
+ QList<QStandardItem *> ri = %CPPSELF.takeRow(0);
+
+ PyObject *pyResult = %CONVERTTOPYTHON[QList<QStandardItem * >](ri);
+ Shiboken::Object::setParent(Py_None, pyResult);
+ Py_XDECREF(pyResult);
+}
+// @snippet qstandarditemmodel-clear
+
+// @snippet qclipboard-text
+%BEGIN_ALLOW_THREADS
+%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2);
+%END_ALLOW_THREADS
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG1_TYPE](%1));
+// @snippet qclipboard-text
+
+// @snippet qpainter-drawpointsnp-numpy-x-y
+const auto points = PySide::Numpy::xyDataToQPointFList(%PYARG_1, %PYARG_2);
+%CPPSELF.drawPoints(points);
+// @snippet qpainter-drawpointsnp-numpy-x-y
+
+// @snippet qpainter-drawpolygon
+%CPPSELF.%FUNCTION_NAME(%1.constData(), %1.size(), %2);
+// @snippet qpainter-drawpolygon
+
+// @snippet qpainter-enter
+Py_INCREF(%PYSELF);
+pyResult = %PYSELF;
+// @snippet qpainter-enter
+
+// @snippet qpainter-exit
+%CPPSELF.end();
+// @snippet qpainter-exit
+
+// @snippet qmatrix4x4
+// PYSIDE-795: All PySequences can be made iterable with PySequence_Fast.
+Shiboken::AutoDecRef seq(PySequence_Fast(%PYARG_1, "Can't turn into sequence"));
+if (PySequence_Size(seq) == 16) {
+ float values[16];
+ for (Py_ssize_t i = 0; i < 16; ++i) {
+ PyObject *pv = PySequence_Fast_GET_ITEM(seq.object(), i);
+ values[i] = PyFloat_AsDouble(pv);
+ }
+
+ %0 = new %TYPE(values[0], values[1], values[2], values[3],
+ values[4], values[5], values[6], values[7],
+ values[8], values[9], values[10], values[11],
+ values[12], values[13], values[14], values[15]);
+}
+// @snippet qmatrix4x4
+
+// @snippet qmatrix4x4-copydatato
+float values[16];
+%CPPSELF.%FUNCTION_NAME(values);
+%PYARG_0 = PyTuple_New(16);
+for (Py_ssize_t i = 0; i < 16; ++i) {
+ PyObject *v = PyFloat_FromDouble(values[i]);
+ PyTuple_SET_ITEM(%PYARG_0, i, v);
+}
+// @snippet qmatrix4x4-copydatato
+
+// @snippet qmatrix4x4-mgetitem
+if (PySequence_Check(_key)) {
+ Shiboken::AutoDecRef key(PySequence_Fast(_key, "Invalid matrix index."));
+ if (PySequence_Fast_GET_SIZE(key.object()) == 2) {
+ PyObject *posx = PySequence_Fast_GET_ITEM(key.object(), 0);
+ PyObject *posy = PySequence_Fast_GET_ITEM(key.object(), 1);
+ Py_ssize_t x = PyLong_AsSsize_t(posx);
+ Py_ssize_t y = PyLong_AsSsize_t(posy);
+ float ret = (*%CPPSELF)(x,y);
+ return %CONVERTTOPYTHON[float](ret);
+ }
+}
+PyErr_SetString(PyExc_IndexError, "Invalid matrix index.");
+return 0;
+// @snippet qmatrix4x4-mgetitem
+
+// @snippet qguiapplication-init
+static void QGuiApplicationConstructor(PyObject *self, PyObject *pyargv, QGuiApplicationWrapper **cptr)
+{
+ static int argc;
+ static char **argv;
+ PyObject *stringlist = PyTuple_GET_ITEM(pyargv, 0);
+ if (Shiboken::listToArgcArgv(stringlist, &argc, &argv, "PySideApp")) {
+ *cptr = new QGuiApplicationWrapper(argc, argv, 0);
+ Shiboken::Object::releaseOwnership(reinterpret_cast<SbkObject *>(self));
+ PySide::registerCleanupFunction(&PySide::destroyQCoreApplication);
+ }
+}
+// @snippet qguiapplication-init
+
+// @snippet qguiapplication-1
+QGuiApplicationConstructor(%PYSELF, args, &%0);
+// @snippet qguiapplication-1
+
+// @snippet qguiapplication-2
+PyObject *empty = PyTuple_New(2);
+if (!PyTuple_SetItem(empty, 0, PyList_New(0))) {
+ QGuiApplicationConstructor(%PYSELF, empty, &%0);
+}
+// @snippet qguiapplication-2
+
+// @snippet qguiapplication-setoverridecursor
+auto *cppResult = new QtGuiHelper::QOverrideCursorGuard();
+%PYARG_0 = %CONVERTTOPYTHON[QtGuiHelper::QOverrideCursorGuard*](cppResult);
+Shiboken::Object::getOwnership(%PYARG_0); // Ensure the guard is removed
+// @snippet qguiapplication-setoverridecursor
+
+// @snippet qguiapplication-nativeInterface
+bool hasNativeApp = false;
+#if QT_CONFIG(xcb)
+if (auto *x11App = %CPPSELF.nativeInterface<QNativeInterface::QX11Application>()) {
+ hasNativeApp = true;
+ %PYARG_0 = %CONVERTTOPYTHON[QNativeInterface::QX11Application*](x11App);
+}
+#endif
+if (!hasNativeApp) {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+}
+// @snippet qguiapplication-nativeInterface
+
+// @snippet qscreen-grabWindow
+WId id = %1;
+%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(id, %2, %3, %4, %5);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](retval);
+// @snippet qscreen-grabWindow
+
+// @snippet qscreen-nativeInterface
+bool hasNativeScreen = false;
+#ifdef Q_OS_WIN
+if (auto *winScreen = %CPPSELF.nativeInterface<QNativeInterface::QWindowsScreen>()) {
+ hasNativeScreen = true;
+ %PYARG_0 = %CONVERTTOPYTHON[QNativeInterface::QWindowsScreen*](winScreen);
+}
+#endif
+if (!hasNativeScreen) {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+}
+// @snippet qscreen-nativeInterface
+
+// @snippet qx11application-resource-ptr
+ auto *resource = %CPPSELF.%FUNCTION_NAME();
+%PYARG_0 = PyLong_FromVoidPtr(resource);
+// @snippet qx11application-resource-ptr
+
+// @snippet qwindow-fromWinId
+WId id = %1;
+%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(id);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](retval);
+// @snippet qwindow-fromWinId
+
+// @snippet set-qtkey-shortcut
+%CPPSELF.%FUNCTION_NAME(QKeyCombination(%1));
+// @snippet set-qtkey-shortcut
+
+// @snippet qshortcut-1
+%0 = new %TYPE(%1, %2);
+// @snippet qshortcut-1
+
+// @snippet qshortcut-2
+Shiboken::AutoDecRef result(PyObject_CallMethod(%PYSELF, "connect", "OsO",
+ %PYSELF, SIGNAL(activated()), %PYARG_3)
+ );
+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
+
+// @snippet qquaternion-getaxisandangle-vector3d-float
+QVector3D outVec{};
+float angle{};
+%CPPSELF.%FUNCTION_NAME(&outVec, &angle);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[QVector3D](outVec));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[float](angle));
+// @snippet qquaternion-getaxisandangle-vector3d-float
+
+// @snippet qquaternion-geteulerangles
+float pitch{}, yaw{}, roll{};
+%CPPSELF.%FUNCTION_NAME(&pitch, &yaw, &roll);
+%PYARG_0 = PyTuple_New(3);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[float](pitch));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[float](yaw));
+PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[float](roll));
+// @snippet qquaternion-geteulerangles
+
+// @snippet qregion-len
+return %CPPSELF.rectCount();
+// @snippet qregion-len
+
+// @snippet qregion-getitem
+if (_i < 0 || _i >= %CPPSELF.rectCount())
+ return PyErr_Format(PyExc_IndexError, "index out of bounds");
+
+const QRect cppResult = *(%CPPSELF.cbegin() + _i);
+return %CONVERTTOPYTHON[QRect](cppResult);
+// @snippet qregion-getitem
+
+// Some RHI functions take a std::initializer_list<>. Add functions
+// to convert from list.
+
+// @snippet qrhi-initializer-list
+%CPPSELF.%FUNCTION_NAME(%1.cbegin(), %1.cend());
+// @snippet qrhi-initializer-list
+
+// @snippet qrhi-commandbuffer-setvertexinput
+%CPPSELF.%FUNCTION_NAME(%1, %2.size(), %2.constData(), %3, %4, %5);
+// @snippet qrhi-commandbuffer-setvertexinput
+
+/*********************************************************************
+ * CONVERSIONS
+ ********************************************************************/
+
+// @snippet conversion-pylong
+%out = reinterpret_cast<%OUTTYPE>(PyLong_AsVoidPtr(%in));
+// @snippet conversion-pylong
+
+/*********************************************************************
+ * NATIVE TO TARGET CONVERSIONS
+ ********************************************************************/
+
+// @snippet return-pylong-voidptr
+return PyLong_FromVoidPtr(reinterpret_cast<void *>(%in));
+// @snippet return-pylong-voidptr
diff --git a/sources/pyside6/PySide6/glue/qtmultimedia.cpp b/sources/pyside6/PySide6/glue/qtmultimedia.cpp
new file mode 100644
index 000000000..ac8434b97
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtmultimedia.cpp
@@ -0,0 +1,28 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qvideoframe-bits
+#include "object.h"
+%BEGIN_ALLOW_THREADS
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(%1);
+%END_ALLOW_THREADS
+const auto size = %CPPSELF.mappedBytes(%1);
+%PYARG_0 = Shiboken::Buffer::newObject(%0, size, Shiboken::Buffer::ReadWrite);
+// @snippet qvideoframe-bits
+
+// @snippet qaudiobuffer-data
+unsigned char *data = %CPPSELF.%FUNCTION_NAME<unsigned char>();
+const auto size = %CPPSELF.byteCount();
+%PYARG_0 = Shiboken::Buffer::newObject(data, size, Shiboken::Buffer::ReadWrite);
+// @snippet qaudiobuffer-data
+
+// @snippet qaudiobuffer-const-data
+const unsigned char *data = %CPPSELF.%FUNCTION_NAME<unsigned char>();
+const auto size = %CPPSELF.byteCount();
+%PYARG_0 = Shiboken::Buffer::newObject(data, size);
+// @snippet qaudiobuffer-const-data
+
+// @snippet qtaudio-namespace-compatibility-alias
+Py_INCREF(pyType);
+PyModule_AddObject(module, "QtAudio", reinterpret_cast<PyObject *>(pyType));
+// @snippet qtaudio-namespace-compatibility-alias
diff --git a/sources/pyside6/PySide6/glue/qtnetwork.cpp b/sources/pyside6/PySide6/glue/qtnetwork.cpp
new file mode 100644
index 000000000..f635f4671
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtnetwork.cpp
@@ -0,0 +1,130 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qudpsocket-readdatagram
+Shiboken::AutoArrayPointer<char> data(%ARGUMENT_NAMES);
+QHostAddress ha;
+quint16 port;
+%BEGIN_ALLOW_THREADS
+%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(data, %ARGUMENT_NAMES, &ha, &port);
+%END_ALLOW_THREADS
+QByteArray ba(data, retval);
+%PYARG_0 = PyTuple_New(3);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[QByteArray](ba));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QHostAddress](ha));
+PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[quint16](port));
+// @snippet qudpsocket-readdatagram
+
+// @snippet qhostinfo-lookuphost-functor
+struct QHostInfoFunctor : public Shiboken::PyObjectHolder
+{
+public:
+ using Shiboken::PyObjectHolder::PyObjectHolder;
+
+ void operator()(const QHostInfo &hostInfo);
+};
+
+void QHostInfoFunctor::operator()(const QHostInfo &hostInfo)
+{
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ auto *pyHostInfo = %CONVERTTOPYTHON[QHostInfo](hostInfo);
+ PyTuple_SET_ITEM(arglist.object(), 0, pyHostInfo);
+ Shiboken::AutoDecRef ret(PyObject_CallObject(object(), arglist));
+ release(); // single shot
+}
+// @snippet qhostinfo-lookuphost-functor
+
+// @snippet qhostinfo-lookuphost-callable
+%CPPSELF.%FUNCTION_NAME(%1, QHostInfoFunctor(%PYARG_2));
+// @snippet qhostinfo-lookuphost-callable
+
+// @snippet qipv6address-len
+return 16;
+// @snippet qipv6address-len
+
+// @snippet qipv6address-getitem
+if (_i >= 16) {
+ PyErr_SetString(PyExc_IndexError, "index out of bounds");
+ return 0;
+}
+if (_i < 0)
+ _i = 16 - qAbs(_i);
+
+uint item = %CPPSELF.c[_i];
+return %CONVERTTOPYTHON[uint](item);
+// @snippet qipv6address-getitem
+
+// @snippet qipv6address-setitem
+if (_i >= 16) {
+ PyErr_SetString(PyExc_IndexError, "index out of bounds");
+ return -1;
+}
+if (_i < 0)
+ _i = 16 - qAbs(_i);
+quint8 item = %CONVERTTOCPP[quint8](_value);
+%CPPSELF.c[_i] = item;
+return 0;
+// @snippet qipv6address-setitem
+
+// @snippet qrestaccessmanager-functor
+class QRestFunctor
+{
+public:
+ explicit QRestFunctor(PyObject *callable) noexcept : m_callable(callable)
+ {
+ Py_INCREF(callable);
+ }
+
+ void operator()(QRestReply &restReply);
+
+private:
+ PyObject *m_callable;
+};
+
+void QRestFunctor::operator()(QRestReply &restReply)
+{
+ Q_ASSERT(m_callable);
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ auto *restReplyPtr = &restReply;
+ auto *pyRestReply = %CONVERTTOPYTHON[QRestReply*](restReplyPtr);
+ PyTuple_SET_ITEM(arglist.object(), 0, pyRestReply);
+ Shiboken::AutoDecRef ret(PyObject_CallObject(m_callable, arglist));
+ Py_DECREF(m_callable);
+ m_callable = nullptr;
+}
+// @snippet qrestaccessmanager-functor
+
+// @snippet qrestaccessmanager-callback
+auto *networkReply = %CPPSELF.%FUNCTION_NAME(%1, %2, QRestFunctor(%PYARG_3));
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](networkReply);
+// @snippet qrestaccessmanager-callback
+
+// @snippet qrestaccessmanager-data-callback
+auto *networkReply = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, QRestFunctor(%PYARG_4));
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](networkReply);
+// @snippet qrestaccessmanager-data-callback
+
+// @snippet qrestaccessmanager-method-data-callback
+auto *networkReply = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, QRestFunctor(%PYARG_5));
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](networkReply);
+// @snippet qrestaccessmanager-method-data-callback
+
+// @snippet qrestreply-readjson
+QJsonParseError jsonParseError;
+std::optional<QJsonDocument> documentOptional = %CPPSELF.%FUNCTION_NAME(&jsonParseError);
+
+PyObject *pyDocument{};
+if (documentOptional.has_value()) {
+ const auto &document = documentOptional.value();
+ pyDocument = %CONVERTTOPYTHON[QJsonDocument](document);
+} else {
+ pyDocument = Py_None;
+ Py_INCREF(Py_None);
+}
+
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SetItem(%PYARG_0, 0, pyDocument);
+PyTuple_SetItem(%PYARG_0, 1, %CONVERTTOPYTHON[QJsonParseError](jsonParseError));
+// @snippet qrestreply-readjson
diff --git a/sources/pyside6/PySide6/glue/qtnetworkauth.cpp b/sources/pyside6/PySide6/glue/qtnetworkauth.cpp
new file mode 100644
index 000000000..7877a8dd5
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtnetworkauth.cpp
@@ -0,0 +1,44 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qabstractoauth-lookuphost-functor
+struct QAbstractOAuthModifyFunctor : public Shiboken::PyObjectHolder
+{
+public:
+ using Shiboken::PyObjectHolder::PyObjectHolder;
+
+ void operator()(QAbstractOAuth::Stage stage, QMultiMap<QString, QVariant>* dictPointer);
+};
+
+void QAbstractOAuthModifyFunctor::operator()(QAbstractOAuth::Stage stage,
+ QMultiMap<QString, QVariant>* dictPointer)
+{
+ auto *callable = object();
+ if (!PyCallable_Check(callable)) {
+ qWarning("Argument 1 of setModifyParametersFunction() must be a callable.");
+ return;
+ }
+ Shiboken::GilState state;
+ QMultiMap<QString, QVariant> dict = *dictPointer;
+ Shiboken::AutoDecRef arglist(PyTuple_New(2));
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[QAbstractOAuth::Stage](stage));
+ PyTuple_SET_ITEM(arglist, 1, %CONVERTTOPYTHON[QMultiMap<QString, QVariant>](dict));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+
+ if (!ret.isNull() && PyDict_Check(ret.object()) != 0) {
+ PyObject *key{};
+ PyObject *value{};
+ Py_ssize_t pos = 0;
+ while (PyDict_Next(ret.object(), &pos, &key, &value)) {
+ QString cppKey = %CONVERTTOCPP[QString](key);
+ QVariant cppValue = %CONVERTTOCPP[QVariant](value);
+ dictPointer->replace(cppKey, cppValue);
+ }
+ }
+}
+// @snippet qabstractoauth-lookuphost-functor
+
+// @snippet qabstractoauth-setmodifyparametersfunction
+%CPPSELF.%FUNCTION_NAME(QAbstractOAuthModifyFunctor(%PYARG_1));
+// @snippet qabstractoauth-setmodifyparametersfunction
+
diff --git a/sources/pyside6/PySide6/glue/qtopengl.cpp b/sources/pyside6/PySide6/glue/qtopengl.cpp
new file mode 100644
index 000000000..cdfaafb3b
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtopengl.cpp
@@ -0,0 +1,89 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet qopenglshaderprogram_setuniformvalue_float
+float value = %2;
+%CPPSELF.setUniformValue(%1, value);
+// @snippet qopenglshaderprogram_setuniformvalue_float
+
+// @snippet qopenglshaderprogram_setuniformvalue_int
+int value = %2;
+%CPPSELF.setUniformValue(%1, value);
+// @snippet qopenglshaderprogram_setuniformvalue_int
+
+// @snippet qopenglversionfunctionsfactory-get
+QAbstractOpenGLFunctions *af = %CPPSELF.%FUNCTION_NAME(%1, %2);
+if (auto *f = dynamic_cast<QOpenGLFunctions_4_5_Core *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_5_Core *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_5_Compatibility *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_5_Compatibility *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_4_Core *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_4_Core *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_4_Compatibility *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_4_Compatibility *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_3_Core *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_3_Core *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_2_Core *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_2_Core *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_1_Core *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_1_Core *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_0_Core *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_0_Core *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_0_Compatibility *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_0_Compatibility *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_3_Core *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_3_Core *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_3_Compatibility *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_3_Compatibility *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_2_Core *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_2_Core *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_2_Compatibility *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_2_Compatibility *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_1 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_1 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_0 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_0 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_2_1 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_2_1 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_2_0 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_2_0 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_5 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_5 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_4 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_4 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_3 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_3 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_2 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_2 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_1 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_1 *](f);
+} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_0 *>(af)) {
+ %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_0 *](f);
+} else {
+ QString message;
+ QDebug(&message) << "No OpenGL functions could be obtained for" << %1;
+ PyErr_SetString(PyExc_RuntimeError, message.toUtf8().constData());
+ %PYARG_0 = Py_None;
+}
+// @snippet qopenglversionfunctionsfactory-get
+
+// @snippet glgetvreturnsize_declaration
+int glGetVReturnSize(GLenum pname);
+// @snippet glgetvreturnsize_declaration
+
+// @snippet glgeti-vreturnsize_declaration
+int glGetI_VReturnSize(GLenum pname);
+// @snippet glgeti-vreturnsize_declaration
+
+// @snippet vao-binder-enter
+Py_INCREF(%PYSELF);
+pyResult = %PYSELF;
+// @snippet vao-binder-enter
+
+// @snippet vao-binder-exit
+%CPPSELF.release();
+// @snippet vao-binder-exit
diff --git a/sources/pyside6/PySide6/glue/qtpositioning.cpp b/sources/pyside6/PySide6/glue/qtpositioning.cpp
new file mode 100644
index 000000000..91c331c74
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtpositioning.cpp
@@ -0,0 +1,14 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet darwin_location_permission_plugin
+#ifdef Q_OS_DARWIN
+#include<QtCore/qplugin.h>
+// register the static plugin and setup its metadata
+Q_IMPORT_PLUGIN(QDarwinLocationPermissionPlugin)
+#endif
+// @snippet darwin_location_permission_plugin
diff --git a/sources/pyside6/PySide6/glue/qtprintsupport.cpp b/sources/pyside6/PySide6/glue/qtprintsupport.cpp
new file mode 100644
index 000000000..39672c62a
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtprintsupport.cpp
@@ -0,0 +1,20 @@
+// Copyright (C) 2019 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet setpagesize
+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/qtqml.cpp b/sources/pyside6/PySide6/glue/qtqml.cpp
new file mode 100644
index 000000000..a56db8de6
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtqml.cpp
@@ -0,0 +1,90 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qmlerrror-repr
+const QByteArray message = %CPPSELF.toString().toUtf8();
+%PYARG_0 = Shiboken::String::fromCString(message.constData());
+// @snippet qmlerrror-repr
+
+// @snippet qmlattachedpropertiesobject
+auto *%0 = PySide::Qml::qmlAttachedPropertiesObject(%ARGUMENT_NAMES);
+%PYARG_0 = %CONVERTTOPYTHON[QObject*](%0);
+// @snippet qmlattachedpropertiesobject
+
+// @snippet qmlregistertype
+int %0 = PySide::Qml::qmlRegisterType(%ARGUMENT_NAMES);
+%PYARG_0 = %CONVERTTOPYTHON[int](%0);
+// @snippet qmlregistertype
+
+// @snippet qmlregistersingletontype_qobject_callback
+int %0 = PySide::Qml::qmlRegisterSingletonType(%ARGUMENT_NAMES, true, true);
+%PYARG_0 = %CONVERTTOPYTHON[int](%0);
+// @snippet qmlregistersingletontype_qobject_callback
+
+// @snippet qmlregistersingletontype_qobject_nocallback
+int %0 = PySide::Qml::qmlRegisterSingletonType(%ARGUMENT_NAMES, nullptr, true, false);
+%PYARG_0 = %CONVERTTOPYTHON[int](%0);
+// @snippet qmlregistersingletontype_qobject_nocallback
+
+// @snippet qmlregistersingletontype_qjsvalue
+int %0 = PySide::Qml::qmlRegisterSingletonType(nullptr, %ARGUMENT_NAMES, false, true);
+%PYARG_0 = %CONVERTTOPYTHON[int](%0);
+// @snippet qmlregistersingletontype_qjsvalue
+
+// @snippet qmlregistersingletoninstance
+int %0 = PySide::Qml::qmlRegisterSingletonInstance(%ARGUMENT_NAMES);
+%PYARG_0 = %CONVERTTOPYTHON[int](%0);
+// @snippet qmlregistersingletoninstance
+
+// @snippet qmlregisteruncreatabletype
+int %0 = PySide::Qml::qmlRegisterType(%ARGUMENT_NAMES, false);
+%PYARG_0 = %CONVERTTOPYTHON[int](%0);
+// @snippet qmlregisteruncreatabletype
+
+// @snippet init
+PySide::Qml::init(module);
+initQtQmlVolatileBool(module);
+// @snippet init
+
+// @snippet qjsengine-toscriptvalue
+%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(%1);
+return %CONVERTTOPYTHON[%RETURN_TYPE](retval);
+// @snippet qjsengine-toscriptvalue
+
+// @snippet qmlelement
+%PYARG_0 = PySide::Qml::qmlElementMacro(%ARGUMENT_NAMES);
+// @snippet qmlelement
+
+// @snippet qmlanonymous
+%PYARG_0 = PySide::Qml::qmlAnonymousMacro(%ARGUMENT_NAMES);
+// @snippet qmlanonymous
+
+// @snippet qmlsingleton
+%PYARG_0 = PySide::Qml::qmlSingletonMacro(%ARGUMENT_NAMES);
+// @snippet qmlsingleton
+
+// @snippet qqmlengine-singletoninstance-qmltypeid
+QJSValue instance = %CPPSELF.singletonInstance<QJSValue>(%1);
+if (instance.isNull()) {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+} else if (instance.isQObject()) {
+ QObject *result = instance.toQObject();
+ %PYARG_0 = %CONVERTTOPYTHON[QObject *](result);
+} else {
+ %PYARG_0 = %CONVERTTOPYTHON[QJSValue](instance);
+}
+// @snippet qqmlengine-singletoninstance-qmltypeid
+
+// @snippet qqmlengine-singletoninstance-typename
+QJSValue instance = %CPPSELF.singletonInstance<QJSValue>(%1, %2);
+if (instance.isNull()) {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+} else if (instance.isQObject()) {
+ QObject *result = instance.toQObject();
+ %PYARG_0 = %CONVERTTOPYTHON[QObject *](result);
+} else {
+ %PYARG_0 = %CONVERTTOPYTHON[QJSValue](instance);
+}
+// @snippet qqmlengine-singletoninstance-typename
diff --git a/sources/pyside6/PySide6/glue/qtquick.cpp b/sources/pyside6/PySide6/glue/qtquick.cpp
new file mode 100644
index 000000000..060418faf
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtquick.cpp
@@ -0,0 +1,27 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qtquick
+PySide::initQuickSupport(module);
+// @snippet qtquick
+
+// @snippet qsgeometry-vertexdataaspoint2d
+auto *points = %CPPSELF->vertexDataAsPoint2D();
+const Py_ssize_t vertexCount = %CPPSELF->vertexCount();
+%PYARG_0 = PyList_New(vertexCount);
+for (Py_ssize_t i = 0; i < vertexCount; ++i) {
+ QSGGeometry::Point2D p = points[i];
+ PyList_SET_ITEM(%PYARG_0, i, %CONVERTTOPYTHON[QSGGeometry::Point2D](p));
+}
+// @snippet qsgeometry-vertexdataaspoint2d
+
+// @snippet qsgeometry-setvertexdataaspoint2d
+const qsizetype vertexCount = %CPPSELF->vertexCount();
+if (vertexCount != %1.size()) {
+ PyErr_SetString(PyExc_RuntimeError, "size mismatch");
+ return {};
+}
+
+QSGGeometry::Point2D *points = %CPPSELF->vertexDataAsPoint2D();
+std::copy(%1.cbegin(), %1.cend(), points);
+// @snippet qsgeometry-setvertexdataaspoint2d
diff --git a/sources/pyside6/PySide6/glue/qtquicktest.cpp b/sources/pyside6/PySide6/glue/qtquicktest.cpp
new file mode 100644
index 000000000..f41735ddf
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtquicktest.cpp
@@ -0,0 +1,50 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet call-quick-test-main
+static int callQuickTestMain(const QString &name, QObject *setup,
+ QStringList argv, QString dir)
+{
+ if (dir.isEmpty())
+ dir = QDir::currentPath();
+ if (argv.isEmpty())
+ argv.append(name);
+
+ std::vector<QByteArray> argvB;
+ std::vector<char *> argvC;
+ const auto argc = argv.size();
+ argvB.reserve(argc);
+ argvC.reserve(argc);
+ for (const auto &arg : argv) {
+ argvB.emplace_back(arg.toUtf8());
+ argvC.push_back(argvB.back().data());
+ }
+
+ return quick_test_main_with_setup(int(argc), argvC.data(),
+ name.toUtf8().constData(),
+ dir.toUtf8().constData(), setup);
+}
+// @snippet call-quick-test-main
+
+// @snippet quick-test-main
+const int exitCode = callQuickTestMain(%1, nullptr, %2, %3);
+%PYARG_0 = %CONVERTTOPYTHON[int](exitCode);
+// @snippet quick-test-main
+
+// @snippet quick-test-main_with_setup
+Shiboken::AutoDecRef pySetupObject(PyObject_CallObject(reinterpret_cast<PyObject *>(%2), nullptr));
+if (pySetupObject.isNull() || PyErr_Occurred() != nullptr)
+ return nullptr;
+
+/// Convenience to convert a PyObject to QObject
+QObject *setupObject = PySide::convertToQObject(pySetupObject.object(), true /* raiseError */);
+if (setupObject == nullptr)
+ return nullptr;
+
+const int exitCode = callQuickTestMain(%1, setupObject, %3, %4);
+%PYARG_0 = %CONVERTTOPYTHON[int](exitCode);
+// @snippet quick-test-main_with_setup
diff --git a/sources/pyside6/PySide6/glue/qtserialbus.cpp b/sources/pyside6/PySide6/glue/qtserialbus.cpp
new file mode 100644
index 000000000..b5b491f49
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtserialbus.cpp
@@ -0,0 +1,30 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet qcanbus-available-devices
+QString errorMessage;
+const QList<QCanBusDeviceInfo> result = %CPPSELF.%FUNCTION_NAME(%1, &errorMessage);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[QList<QCanBusDeviceInfo>](result));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](errorMessage));
+// @snippet qcanbus-available-devices
+
+// @snippet qcanbus-createdevice
+PyObject *pyDevice{};
+QString errorMessage;
+if (auto *device = %CPPSELF.%FUNCTION_NAME(%1, %2, &errorMessage)) {
+ pyDevice = %CONVERTTOPYTHON[%RETURN_TYPE](device);
+ // Ownership transferences (target)
+ Shiboken::Object::getOwnership(pyDevice);
+} else {
+ pyDevice = Py_None;
+ Py_INCREF(pyDevice);
+}
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, pyDevice);
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](errorMessage));
+// @snippet qcanbus-createdevice
diff --git a/sources/pyside6/PySide6/glue/qtsql.cpp b/sources/pyside6/PySide6/glue/qtsql.cpp
new file mode 100644
index 000000000..ff0d7a7a4
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtsql.cpp
@@ -0,0 +1,60 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+
+// @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/qtstatemachine.cpp b/sources/pyside6/PySide6/glue/qtstatemachine.cpp
new file mode 100644
index 000000000..098200b14
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtstatemachine.cpp
@@ -0,0 +1,67 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet qsignaltransition
+if (PyObject_TypeCheck(%1, PySideSignalInstance_TypeF())) {
+ auto *signalInstance = reinterpret_cast<PySideSignalInstance *>(%PYARG_1);
+ PyObject *dataSource = PySide::Signal::getObject(signalInstance);
+ Shiboken::AutoDecRef obType(PyObject_Type(dataSource));
+ QObject * sender = %CONVERTTOCPP[QObject *](dataSource);
+ //XXX /|\ omitting this space crashes shiboken!
+ if (sender) {
+ const char *dataSignature = PySide::Signal::getSignature(signalInstance);
+ QByteArray signature(dataSignature); // Append SIGNAL flag (2)
+ signature.prepend('2');
+ %0 = new QSignalTransitionWrapper(sender, signature, %2);
+ }
+}
+// @snippet qsignaltransition
+
+// @snippet qstate-addtransition-1
+QByteArray signalName(%2);
+signalName.remove(0, 1);
+if (PySide::SignalManager::registerMetaMethod(%1, signalName.constData(),
+ QMetaMethod::Signal)) {
+ QSignalTransition *%0 = %CPPSELF->addTransition(%1, %2, %3);
+ %PYARG_0 = %CONVERTTOPYTHON[QSignalTransition *](%0);
+} else {
+ Py_INCREF(Py_None);
+ %PYARG_0 = Py_None;
+}
+// @snippet qstate-addtransition-1
+
+// @snippet qstate-addtransition-2
+// Obviously the label used by the following goto is a very awkward solution,
+// since it refers to a name very tied to the generator implementation.
+// Check bug #362 for more information on this
+// http://bugs.openbossa.org/show_bug.cgi?id=362
+// PYSIDE-2256: The label was removed
+if (!PyObject_TypeCheck(%1, PySideSignalInstance_TypeF()))
+ return Shiboken::returnWrongArguments(args, fullName, errInfo);
+PySideSignalInstance *signalInstance = reinterpret_cast<PySideSignalInstance *>(%1);
+auto sender = %CONVERTTOCPP[QObject *](PySide::Signal::getObject(signalInstance));
+QSignalTransition *%0 = %CPPSELF->%FUNCTION_NAME(sender, PySide::Signal::getSignature(signalInstance),%2);
+%PYARG_0 = %CONVERTTOPYTHON[QSignalTransition *](%0);
+// @snippet qstate-addtransition-2
+
+// @snippet qstatemachine-configuration
+%PYARG_0 = PySet_New(0);
+for (auto *abs_state : %CPPSELF.configuration()) {
+ Shiboken::AutoDecRef obj(%CONVERTTOPYTHON[QAbstractState *](abs_state));
+ Shiboken::Object::setParent(self, obj);
+ PySet_Add(%PYARG_0, obj);
+}
+// @snippet qstatemachine-configuration
+
+// @snippet qstatemachine-defaultanimations
+%PYARG_0 = PyList_New(0);
+for (auto *abs_anim : %CPPSELF.defaultAnimations()) {
+ Shiboken::AutoDecRef obj(%CONVERTTOPYTHON[QAbstractAnimation *](abs_anim));
+ Shiboken::Object::setParent(self, obj);
+ PyList_Append(%PYARG_0, obj);
+}
+// @snippet qstatemachine-defaultanimations
diff --git a/sources/pyside6/PySide6/glue/qttest.cpp b/sources/pyside6/PySide6/glue/qttest.cpp
new file mode 100644
index 000000000..626cc1608
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qttest.cpp
@@ -0,0 +1,24 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet qsignalspy-signal
+auto *signalInst = reinterpret_cast<PySideSignalInstance *>(%PYARG_1);
+PyObject *emitterPyObject = PySide::Signal::getObject(signalInst);
+QObject* emitter = %CONVERTTOCPP[QObject *](emitterPyObject);
+QByteArray signature = PySide::Signal::getSignature(signalInst);
+if (!signature.isEmpty())
+ signature.prepend('2'); // SIGNAL() macro
+
+if (emitter == nullptr || signature.isEmpty()) {
+ QByteArray error = QByteArrayLiteral("Wrong parameter (")
+ + (%PYARG_1)->ob_type->tp_name
+ + QByteArrayLiteral(") passed, QSignalSpy requires a signal.");
+ PyErr_SetString(PyExc_ValueError, error.constData());
+ return -1;
+}
+%0 = new QSignalSpyWrapper(emitter, signature.constData());
+// @snippet qsignalspy-signal
diff --git a/sources/pyside6/PySide6/glue/qtuitools.cpp b/sources/pyside6/PySide6/glue/qtuitools.cpp
new file mode 100644
index 000000000..1835ed096
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtuitools.cpp
@@ -0,0 +1,212 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+// @snippet uitools-loadui
+/*
+ * Based on code provided by:
+ * Antonio Valentino <antonio.valentino at tiscali.it>
+ * Frédéric <frederic.mantegazza at gbiloba.org>
+ */
+
+#include <shiboken.h>
+
+#include <QtUiTools/QUiLoader>
+#include <QtWidgets/QWidget>
+#include <QtCore/QFile>
+
+static void createChildrenNameAttributes(PyObject *root, QObject *object)
+{
+ for (auto *child : object->children()) {
+ const QByteArray name = child->objectName().toLocal8Bit();
+
+ if (!name.isEmpty() && !name.startsWith("_") && !name.startsWith("qt_")) {
+ Shiboken::AutoDecRef attrName(Py_BuildValue("s", name.constData()));
+ if (!PyObject_HasAttr(root, attrName)) {
+ Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QObject *](child));
+ PyObject_SetAttr(root, attrName, pyChild);
+ }
+ createChildrenNameAttributes(root, child);
+ }
+ createChildrenNameAttributes(root, child);
+ }
+}
+
+static PyObject *QUiLoadedLoadUiFromDevice(QUiLoader *self, QIODevice *dev, QWidget *parent)
+{
+ QWidget *wdg = self->load(dev, parent);
+
+ if (wdg) {
+ PyObject *pyWdg = %CONVERTTOPYTHON[QWidget *](wdg);
+ createChildrenNameAttributes(pyWdg, wdg);
+ if (parent) {
+ Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget *](parent));
+ Shiboken::Object::setParent(pyParent, pyWdg);
+ }
+ return pyWdg;
+ }
+
+ if (!PyErr_Occurred())
+ PyErr_Format(PyExc_RuntimeError, "Unable to open/read ui device");
+ return nullptr;
+}
+
+static PyObject *QUiLoaderLoadUiFromFileName(QUiLoader *self, const QString &uiFile, QWidget *parent)
+{
+ QFile fd(uiFile);
+ return QUiLoadedLoadUiFromDevice(self, &fd, parent);
+}
+// @snippet uitools-loadui
+
+// @snippet quiloader
+Q_IMPORT_PLUGIN(PyCustomWidgets);
+// @snippet quiloader
+
+// @snippet quiloader-registercustomwidget
+registerCustomWidget(%PYARG_1);
+%CPPSELF.addPluginPath(QString{}); // force reload widgets
+// @snippet quiloader-registercustomwidget
+
+// @snippet quiloader-load-1
+// Avoid calling the original function: %CPPSELF.%FUNCTION_NAME()
+%PYARG_0 = QUiLoadedLoadUiFromDevice(%CPPSELF, %1, %2);
+// @snippet quiloader-load-1
+
+// @snippet quiloader-load-2
+// Avoid calling the original function: %CPPSELF.%FUNCTION_NAME()
+auto str = PySide::pyPathToQString(%1);
+%PYARG_0 = QUiLoaderLoadUiFromFileName(%CPPSELF, str, %2);
+// @snippet quiloader-load-2
+
+// @snippet loaduitype
+/*
+Arguments:
+ %PYARG_1 (uifile)
+*/
+// 1. Generate the Python code from the UI file
+PyObject *strObj = PyUnicode_AsUTF8String(%PYARG_1);
+char *arg1 = PyBytes_AsString(strObj);
+QByteArray uiFileName(arg1);
+Py_DECREF(strObj);
+
+if (uiFileName.isEmpty()) {
+ qCritical() << "Error converting the UI filename to QByteArray";
+ Py_RETURN_NONE;
+}
+
+QFile uiFile(QString::fromUtf8(uiFileName));
+
+if (!uiFile.exists()) {
+ qCritical().noquote() << "File" << uiFileName << "does not exist";
+ Py_RETURN_NONE;
+}
+
+// Use the 'pyside6-uic' wrapper instead of 'uic'
+// This approach is better than rely on 'uic' since installing
+// the wheels cover this case.
+QString uicBin(QStringLiteral("pyside6-uic"));
+QStringList uicArgs = {QString::fromUtf8(uiFileName)};
+
+QProcess uicProcess;
+uicProcess.start(uicBin, uicArgs);
+if (!uicProcess.waitForStarted()) {
+ qCritical().noquote() << "Cannot run '" << uicBin << "': "
+ << uicProcess.errorString() << " - Check if 'pyside6-uic' is in PATH";
+ Py_RETURN_NONE;
+}
+
+if (!uicProcess.waitForFinished()
+ || uicProcess.exitStatus() != QProcess::NormalExit
+ || uicProcess.exitCode() != 0) {
+ qCritical().noquote() << '\'' << uicBin << "' failed: "
+ << uicProcess.errorString() << " - Exit status " << uicProcess.exitStatus()
+ << " (" << uicProcess.exitCode() << ")\n";
+ Py_RETURN_NONE;
+}
+
+QByteArray uiFileContent = uicProcess.readAllStandardOutput();
+QByteArray errorOutput = uicProcess.readAllStandardError();
+
+if (!errorOutput.isEmpty()) {
+ qCritical().noquote() << '\'' << uicBin << "' failed: " << errorOutput;
+ Py_RETURN_NONE;
+}
+
+// 2. Obtain the 'classname' and the Qt base class.
+QByteArray className;
+QByteArray baseClassName;
+
+// Problem
+// The generated Python file doesn't have the Qt Base class information.
+
+// Solution
+// Use the XML file
+if (!uiFile.open(QIODevice::ReadOnly))
+ Py_RETURN_NONE;
+
+// This will look for the first <widget> tag, e.g.:
+// <widget class="QWidget" name="ThemeWidgetForm">
+// and then extract the information from "class", and "name",
+// to get the baseClassName and className respectively
+QXmlStreamReader reader(&uiFile);
+while (!reader.atEnd() && baseClassName.isEmpty() && className.isEmpty()) {
+ auto token = reader.readNext();
+ if (token == QXmlStreamReader::StartElement && reader.name() == u"widget") {
+ baseClassName = reader.attributes().value(QLatin1StringView("class")).toUtf8();
+ className = reader.attributes().value(QLatin1StringView("name")).toUtf8();
+ }
+}
+
+uiFile.close();
+
+if (className.isEmpty() || baseClassName.isEmpty() || reader.hasError()) {
+ qCritical() << "An error occurred when parsing the UI file while looking for the class info "
+ << reader.errorString();
+ Py_RETURN_NONE;
+}
+
+QByteArray pyClassName("Ui_"+className);
+
+PyObject *module = PyImport_ImportModule("__main__");
+PyObject *loc = PyModule_GetDict(module);
+
+// 3. exec() the code so the class exists in the context: exec(uiFileContent)
+// The context of PyRun_SimpleString is __main__.
+// 'Py_file_input' is the equivalent to using exec(), since it will execute
+// the code, without returning anything.
+Shiboken::AutoDecRef codeUi(Py_CompileString(uiFileContent.constData(), "<stdin>", Py_file_input));
+if (codeUi.isNull()) {
+ qCritical() << "Error while compiling the generated Python file";
+ Py_RETURN_NONE;
+}
+PyObject *uiObj = PyEval_EvalCode(codeUi, loc, loc);
+
+if (uiObj == nullptr) {
+ qCritical() << "Error while running exec() on the generated code";
+ Py_RETURN_NONE;
+}
+
+// 4. eval() the name of the class on a variable to return
+// 'Py_eval_input' is the equivalent to using eval(), since it will just
+// evaluate an expression.
+Shiboken::AutoDecRef codeClass(Py_CompileString(pyClassName.constData(),"<stdin>", Py_eval_input));
+if (codeClass.isNull()) {
+ qCritical() << "Error while compiling the Python class";
+ Py_RETURN_NONE;
+}
+
+Shiboken::AutoDecRef codeBaseClass(Py_CompileString(baseClassName.constData(), "<stdin>", Py_eval_input));
+if (codeBaseClass.isNull()) {
+ qCritical() << "Error while compiling the base class";
+ Py_RETURN_NONE;
+}
+
+PyObject *classObj = PyEval_EvalCode(codeClass, loc, loc);
+PyObject *baseClassObj = PyEval_EvalCode(codeBaseClass, loc, loc);
+
+%PYARG_0 = PyTuple_New(2);
+if (%PYARG_0 == nullptr) {
+ qCritical() << "Error while creating the return Tuple";
+ Py_RETURN_NONE;
+}
+PyTuple_SET_ITEM(%PYARG_0, 0, classObj);
+PyTuple_SET_ITEM(%PYARG_0, 1, baseClassObj);
+// @snippet loaduitype
diff --git a/sources/pyside6/PySide6/glue/qtwebenginecore.cpp b/sources/pyside6/PySide6/glue/qtwebenginecore.cpp
new file mode 100644
index 000000000..76a7c6d73
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtwebenginecore.cpp
@@ -0,0 +1,64 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qwebenginecookiestore-functor
+struct QWebEngineCookieFilterFunctor : public Shiboken::PyObjectHolder
+{
+ using Shiboken::PyObjectHolder::PyObjectHolder;
+
+ bool operator()(const QWebEngineCookieStore::FilterRequest& filterRequest) const;
+};
+
+bool QWebEngineCookieFilterFunctor::operator()(const QWebEngineCookieStore::FilterRequest &
+ filterRequest) const
+{
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ PyTuple_SET_ITEM(arglist, 0,
+ %CONVERTTOPYTHON[QWebEngineCookieStore::FilterRequest](filterRequest));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(object(), arglist));
+ return ret.object() == Py_True;
+}
+// @snippet qwebenginecookiestore-functor
+
+// @snippet qwebenginecookiestore-setcookiefilter
+%CPPSELF.%FUNCTION_NAME(QWebEngineCookieFilterFunctor(%PYARG_1));
+// @snippet qwebenginecookiestore-setcookiefilter
+
+// @snippet qwebengineprofile-functor
+struct QWebEngineNotificationFunctor : public Shiboken::PyObjectHolder
+{
+ using Shiboken::PyObjectHolder::PyObjectHolder;
+
+ void operator()(std::unique_ptr<QWebEngineNotification> webEngineNotification);
+};
+
+void QWebEngineNotificationFunctor::operator()
+ (std::unique_ptr<QWebEngineNotification> webEngineNotification)
+{
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ auto *notification = webEngineNotification.release();
+ PyTuple_SET_ITEM(arglist.object(), 0,
+ %CONVERTTOPYTHON[QWebEngineNotification*](notification));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(object(), arglist));
+};
+// @snippet qwebengineprofile-functor
+
+// @snippet qwebengineprofile-setnotificationpresenter
+%CPPSELF.%FUNCTION_NAME(QWebEngineNotificationFunctor(%PYARG_1));
+// @snippet qwebengineprofile-setnotificationpresenter
+
+// @snippet qwebenginepage-javascriptprompt-virtual-redirect
+std::pair<bool, QString> resultPair = javaScriptPromptPyOverride(gil, pyOverride.object(), securityOrigin, msg, defaultValue);
+result->assign(resultPair.second);
+return resultPair.first;
+// @snippet qwebenginepage-javascriptprompt-virtual-redirect
+
+// @snippet qwebenginepage-javascriptprompt-return
+QString str;
+%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, &str);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](str));
+// @snippet qwebenginepage-javascriptprompt-return
diff --git a/sources/pyside6/PySide6/glue/qtwebenginewidgets.cpp b/sources/pyside6/PySide6/glue/qtwebenginewidgets.cpp
new file mode 100644
index 000000000..af15130a4
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtwebenginewidgets.cpp
@@ -0,0 +1,121 @@
+// Copyright (C) 2020 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qwebenginepage-findtext
+auto callable = %PYARG_3;
+auto callback = [callable](const QWebEngineFindTextResult &result)
+{
+ if (!PyCallable_Check(callable)) {
+ qWarning("Argument 3 of %FUNCTION_NAME must be a callable.");
+ return;
+ }
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[QWebEngineFindTextResult](result));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+ Py_DECREF(callable);
+
+};
+Py_INCREF(callable);
+%CPPSELF.%FUNCTION_NAME(%1, %2, callback);
+// @snippet qwebenginepage-findtext
+
+// @snippet qwebenginepage-print
+auto printer = %PYARG_1;
+auto callable = %PYARG_2;
+auto callback = [printer, callable](bool succeeded)
+{
+ if (!PyCallable_Check(callable)) {
+ qWarning("Argument 2 of %FUNCTION_NAME must be a callable.");
+ return;
+ }
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[bool](succeeded));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+ Py_DECREF(callable);
+ Py_DECREF(printer);
+
+};
+Py_INCREF(printer); // Add a reference to the printer until asynchronous printing has finished
+Py_INCREF(callable);
+%CPPSELF.%FUNCTION_NAME(%1, callback);
+// @snippet qwebenginepage-print
+
+// @snippet qwebenginepage-convertto
+auto callable = %PYARG_1;
+auto callback = [callable](const QString &text)
+{
+ if (!PyCallable_Check(callable)) {
+ qWarning("Argument 1 of %FUNCTION_NAME must be a callable.");
+ return;
+ }
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[QString](text));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+ Py_DECREF(callable);
+};
+
+Py_INCREF(callable);
+%CPPSELF.%FUNCTION_NAME(callback);
+// @snippet qwebenginepage-convertto
+
+// @snippet qwebenginepage-runjavascript
+auto callable = %PYARG_3;
+auto callback = [callable](const QVariant &result)
+{
+ if (!PyCallable_Check(callable)) {
+ qWarning("Argument 3 of %FUNCTION_NAME must be a callable.");
+ return;
+ }
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ switch (result.type()) {
+ case QVariant::Bool: {
+ const bool value = result.toBool();
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[QString](value));
+ }
+ break;
+ case QVariant::Int:
+ case QVariant::UInt:
+ case QVariant::LongLong:
+ case QVariant::ULongLong:
+ case QVariant::Double: {
+ const double number = result.toDouble();
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[double](number));
+ }
+ break;
+ default: {
+ const QString value = result.toString();
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[QString](value));
+ }
+ break;
+ }
+ // PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[bool](found));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+ Py_DECREF(callable);
+};
+
+Py_INCREF(callable);
+%CPPSELF.%FUNCTION_NAME(%1, %2, callback);
+// @snippet qwebenginepage-runjavascript
+
+// @snippet qwebenginepage-printtopdf
+auto callable = %PYARG_1;
+auto callback = [callable](const QByteArray &pdf)
+{
+ if (!PyCallable_Check(callable)) {
+ qWarning("Argument 1 of %FUNCTION_NAME must be a callable.");
+ return;
+ }
+ Shiboken::GilState state;
+ Shiboken::AutoDecRef arglist(PyTuple_New(1));
+ PyTuple_SET_ITEM(arglist, 0, %CONVERTTOPYTHON[QByteArray](pdf));
+ Shiboken::AutoDecRef ret(PyObject_CallObject(callable, arglist));
+ Py_DECREF(callable);
+};
+
+Py_INCREF(callable);
+%CPPSELF.%FUNCTION_NAME(callback, %2);
+// @snippet qwebenginepage-printtopdf
diff --git a/sources/pyside6/PySide6/glue/qtwidgets.cpp b/sources/pyside6/PySide6/glue/qtwidgets.cpp
new file mode 100644
index 000000000..f886106cf
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtwidgets.cpp
@@ -0,0 +1,818 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet qtreewidgetitemiterator-next
+if (**%CPPSELF) {
+ QTreeWidgetItemIterator *%0 = new QTreeWidgetItemIterator((*%CPPSELF)++);
+ %PYARG_0 = %CONVERTTOPYTHON[QTreeWidgetItemIterator *](%0);
+}
+// @snippet qtreewidgetitemiterator-next
+
+// @snippet qtreewidgetitemiterator-value
+QTreeWidgetItem *%0 = %CPPSELF.operator *();
+%PYARG_0 = %CONVERTTOPYTHON[QTreeWidgetItem *](%0);
+Shiboken::Object::releaseOwnership(%PYARG_0);
+// @snippet qtreewidgetitemiterator-value
+
+// @snippet qgraphicsitem
+PyObject *userTypeConstant = PyLong_FromLong(QGraphicsItem::UserType);
+tpDict.reset(PepType_GetDict(Sbk_QGraphicsItem_TypeF()));
+PyDict_SetItemString(tpDict.object(), "UserType", userTypeConstant);
+// @snippet qgraphicsitem
+
+// @snippet qgraphicsitem-scene-return-parenting
+if (%0) {
+ QObject *parent = %0->parent();
+ Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QObject *](parent));
+ Shiboken::Object::setParent(pyParent, %PYARG_0);
+}
+// @snippet qgraphicsitem-scene-return-parenting
+
+// @snippet qgraphicsitem-isblockedbymodalpanel
+QGraphicsItem *item_ = nullptr;
+%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&item_);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QGraphicsItem *](item_));
+// @snippet qgraphicsitem-isblockedbymodalpanel
+
+// @snippet qitemeditorfactory-registereditor
+Shiboken::Object::releaseOwnership(%PYARG_2);
+// @snippet qitemeditorfactory-registereditor
+
+// @snippet qitemeditorfactory-setdefaultfactory
+//this function is static we need keep ref to default value, to be able to call python virtual functions
+static PyObject *_defaultValue = nullptr;
+%CPPSELF.%FUNCTION_NAME(%1);
+Py_INCREF(%PYARG_1);
+if (_defaultValue)
+ Py_DECREF(_defaultValue);
+
+_defaultValue = %PYARG_1;
+// @snippet qitemeditorfactory-setdefaultfactory
+
+// @snippet qformlayout-fix-args
+int _row;
+QFormLayout::ItemRole _role;
+%CPPSELF->%FUNCTION_NAME(%ARGUMENT_NAMES, &_row, &_role);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[int](_row));
+// On the C++ side, *rolePtr is not set if row == -1, in which case on
+// the Python side this gets converted to a random value outside the
+// enum range. Fix this by setting _role to a default value here.
+if (_row == -1)
+ _role = QFormLayout::LabelRole;
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QFormLayout::ItemRole](_role));
+// @snippet qformlayout-fix-args
+
+// @snippet qfiledialog-return
+%BEGIN_ALLOW_THREADS
+%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, &%5, %6);
+%END_ALLOW_THREADS
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](%5));
+// @snippet qfiledialog-return
+
+// @snippet qwidget-addaction-glue
+static PyObject *connectAction(QAction *action, PyObject *callback)
+{
+ PyObject *pyAct = %CONVERTTOPYTHON[QAction *](action);
+ Shiboken::AutoDecRef result(PyObject_CallMethod(pyAct, "connect", "OsO",
+ pyAct,
+ SIGNAL(triggered()), callback));
+ if (result.isNull()) {
+ Py_DECREF(pyAct);
+ return nullptr;
+ }
+ return pyAct;
+}
+
+static inline PyObject *addActionWithPyObject(QWidget *self, const QString &text,
+ PyObject *callback)
+{
+ QAction *act = self->addAction(text);
+ return connectAction(act, callback);
+}
+
+static inline PyObject *addActionWithPyObject(QWidget *self, const QIcon &icon, const QString &text,
+ PyObject *callback)
+{
+ auto *act = self->addAction(icon, text);
+ return connectAction(act, callback);
+}
+
+static inline PyObject *addActionWithPyObject(QWidget *self, const QString &text,
+ const QKeySequence &shortcut,
+ PyObject *callback)
+{
+ QAction *act = self->addAction(text, shortcut);
+ return connectAction(act, callback);
+}
+
+static inline PyObject *addActionWithPyObject(QWidget *self, const QIcon &icon,
+ const QString &text,
+ const QKeySequence &shortcut,
+ PyObject *callback)
+{
+ QAction *act = self->addAction(icon, text, shortcut);
+ return connectAction(act, callback);
+}
+// @snippet qwidget-addaction-glue
+
+// FIXME PYSIDE7: Remove in favor of widgets methods
+// @snippet qmenu-glue
+inline PyObject *addMenuActionWithPyObject(QMenu *self, const QIcon &icon,
+ const QString &text, PyObject *callback,
+ const QKeySequence &shortcut)
+{
+ QAction *act = self->addAction(text);
+
+ 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, "connect", "OsO",
+ pyAct,
+ SIGNAL(triggered()), callback));
+ if (result.isNull()) {
+ Py_DECREF(pyAct);
+ return nullptr;
+ }
+
+ return pyAct;
+}
+// @snippet qmenu-glue
+
+// addAction(QString,PyObject*,QKeySequence) FIXME PYSIDE7 deprecated
+// @snippet qmenu-addaction-1
+%PYARG_0 = addMenuActionWithPyObject(%CPPSELF, QIcon(), %1, %2, %3);
+// @snippet qmenu-addaction-1
+
+// addAction(QIcon,QString,PyObject*,QKeySequence) FIXME PYSIDE7 deprecated
+// @snippet qmenu-addaction-2
+%PYARG_0 = addMenuActionWithPyObject(%CPPSELF, %1, %2, %3, %4);
+// @snippet qmenu-addaction-2
+
+// @snippet qmenu-addaction-3
+%CPPSELF.addAction(%1);
+// @snippet qmenu-addaction-3
+
+// addAction(QString,PyObject*)
+// @snippet qwidget-addaction-2
+%PYARG_0 = addActionWithPyObject(%CPPSELF, %1, %2);
+// @snippet qwidget-addaction-2
+
+// addAction(QString,QKeySequence,PyObject*) or addAction(QIcon,QString,PyObject*)
+// @snippet qwidget-addaction-3
+%PYARG_0 = addActionWithPyObject(%CPPSELF, %1, %2, %3);
+// @snippet qwidget-addaction-3
+
+// addAction(QIcon,QString,QKeySequence,PyObject*)
+// @snippet qwidget-addaction-4
+%PYARG_0 = addActionWithPyObject(%CPPSELF, %1, %2, %3, %4);
+// @snippet qwidget-addaction-4
+
+// @snippet qmenu-clear
+Shiboken::BindingManager &bm = Shiboken::BindingManager::instance();
+const auto &actions = %CPPSELF.actions();
+for (auto *act : actions) {
+ if (auto wrapper = bm.retrieveWrapper(act)) {
+ auto pyObj = reinterpret_cast<PyObject *>(wrapper);
+ Py_INCREF(pyObj);
+ Shiboken::Object::setParent(nullptr, pyObj);
+ Shiboken::Object::invalidate(pyObj);
+ Py_DECREF(pyObj);
+ }
+}
+// @snippet qmenu-clear
+
+// @snippet qmenubar-clear
+const auto &actions = %CPPSELF.actions();
+for (auto *act : actions) {
+ Shiboken::AutoDecRef pyAct(%CONVERTTOPYTHON[QAction *](act));
+ Shiboken::Object::setParent(nullptr, pyAct);
+ Shiboken::Object::invalidate(pyAct);
+}
+// @snippet qmenubar-clear
+
+// @snippet qtoolbox-removeitem
+QWidget *_widget = %CPPSELF.widget(%1);
+if (_widget) {
+ Shiboken::AutoDecRef pyWidget(%CONVERTTOPYTHON[QWidget *](_widget));
+ Shiboken::Object::setParent(0, pyWidget);
+}
+// @snippet qtoolbox-removeitem
+
+// @snippet qlayout-help-functions
+#ifndef _QLAYOUT_HELP_FUNCTIONS_
+#define _QLAYOUT_HELP_FUNCTIONS_ // Guard for jumbo builds
+
+static const char msgInvalidParameterAdd[] =
+ "Invalid parameter None passed to addLayoutOwnership().";
+static const char msgInvalidParameterRemoval[] =
+ "Invalid parameter None passed to removeLayoutOwnership().";
+
+void addLayoutOwnership(QLayout *layout, QLayoutItem *item);
+void removeLayoutOwnership(QLayout *layout, QWidget *widget);
+
+inline void addLayoutOwnership(QLayout *layout, QWidget *widget)
+{
+ if (layout == nullptr || widget == nullptr) {
+ PyErr_SetString(PyExc_RuntimeError, msgInvalidParameterAdd);
+ return;
+ }
+
+ //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(nullptr, 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).constData(),
+ 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)
+{
+ if (layout == nullptr || other == nullptr) {
+ PyErr_SetString(PyExc_RuntimeError, msgInvalidParameterAdd);
+ return;
+ }
+
+ //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).constData(),
+ 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 (layout == nullptr || item == nullptr) {
+ PyErr_SetString(PyExc_RuntimeError, msgInvalidParameterAdd);
+ return;
+ }
+
+ if (QWidget *w = item->widget()) {
+ addLayoutOwnership(layout, w);
+ } else {
+ if (QLayout *l = item->layout())
+ 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)
+{
+ if (layout == nullptr || widget == nullptr) {
+ PyErr_SetString(PyExc_RuntimeError, msgInvalidParameterRemoval);
+ return;
+ }
+
+ if (QWidget *parent = widget->parentWidget()) {
+ //give the ownership to parent
+ Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget *](parent));
+ Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget *](widget));
+ Shiboken::Object::setParent(pyParent, pyChild);
+ } else {
+ //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).constData(),
+ pyChild);
+ }
+}
+
+inline void removeLayoutOwnership(QLayout *layout, QLayoutItem *item)
+{
+ if (layout == nullptr || item == nullptr) {
+ PyErr_SetString(PyExc_RuntimeError, msgInvalidParameterRemoval);
+ return;
+ }
+
+ if (QWidget *w = item->widget()) {
+ 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 (layout == nullptr || widget == nullptr) {
+ PyErr_SetString(PyExc_RuntimeError, msgInvalidParameterRemoval);
+ 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);
+ }
+}
+#endif // _QLAYOUT_HELP_FUNCTIONS_
+// @snippet qlayout-help-functions
+
+// @snippet qlayout-setalignment
+%CPPSELF.setAlignment(%1);
+// @snippet qlayout-setalignment
+
+// @snippet addownership-item-at
+if (%0 != nullptr)
+ addLayoutOwnership(%CPPSELF, %0);
+// @snippet addownership-item-at
+
+// @snippet addownership-1
+addLayoutOwnership(%CPPSELF, %1);
+// @snippet addownership-1
+
+// @snippet addownership-2
+addLayoutOwnership(%CPPSELF, %2);
+// @snippet addownership-2
+
+// @snippet removeownership-1
+removeLayoutOwnership(%CPPSELF, %1);
+// @snippet removeownership-1
+
+// @snippet qgridlayout-getitemposition
+int a, b, c, d;
+%CPPSELF.%FUNCTION_NAME(%1, &a, &b, &c, &d);
+%PYARG_0 = PyTuple_New(4);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[int](a));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[int](b));
+PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[int](c));
+PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[int](d));
+// @snippet qgridlayout-getitemposition
+
+// @snippet qgraphicsscene-destroyitemgroup
+QGraphicsItem *parentItem = %1->parentItem();
+Shiboken::AutoDecRef parent(%CONVERTTOPYTHON[QGraphicsItem *](parentItem));
+const auto &childItems = %1->childItems();
+for (auto *item : childItems)
+ Shiboken::Object::setParent(parent, %CONVERTTOPYTHON[QGraphicsItem *](item));
+%CPPSELF.%FUNCTION_NAME(%1);
+// the arg was destroyed by Qt.
+Shiboken::Object::invalidate(%PYARG_1);
+// @snippet qgraphicsscene-destroyitemgroup
+
+// @snippet qgraphicsscene-addwidget
+%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(%1, %2);
+%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+Shiboken::Object::keepReference(reinterpret_cast<SbkObject *>(%PYARG_0), "setWidget(QWidget*)1", %PYARG_1);
+// @snippet qgraphicsscene-addwidget
+
+// @snippet qgraphicsscene-clear
+const QList<QGraphicsItem *> items = %CPPSELF.items();
+Shiboken::BindingManager &bm = Shiboken::BindingManager::instance();
+for (auto *item : items) {
+ SbkObject *obj = bm.retrieveWrapper(item);
+ if (obj) {
+ if (Py_REFCNT(reinterpret_cast<PyObject *>(obj)) > 1) // If the refcnt is 1 the object will vannish anyway.
+ Shiboken::Object::invalidate(obj);
+ Shiboken::Object::removeParent(obj);
+ }
+}
+%CPPSELF.%FUNCTION_NAME();
+// @snippet qgraphicsscene-clear
+
+// @snippet qtreewidget-clear
+QTreeWidgetItem *rootItem = %CPPSELF.invisibleRootItem();
+Shiboken::BindingManager &bm = Shiboken::BindingManager::instance();
+
+// PYSIDE-1251:
+// Since some objects can be created with a parent and without
+// being saved on a local variable (refcount = 1), they will be
+// deleted when setting the parent to nullptr, so we change the loop
+// to do this from the last child to the first, to avoid the case
+// when the child(1) points to the original child(2) in case the
+// first one was removed.
+for (int i = rootItem->childCount() - 1; i >= 0; --i) {
+ QTreeWidgetItem *item = rootItem->child(i);
+ if (SbkObject *wrapper = bm.retrieveWrapper(item))
+ Shiboken::Object::setParent(nullptr, reinterpret_cast<PyObject *>(wrapper));
+}
+// @snippet qtreewidget-clear
+
+// @snippet qtreewidgetitem
+// Only call the parent function if this return some value
+// the parent can be the TreeWidget
+if (%0)
+ Shiboken::Object::setParent(%PYARG_0, %PYSELF);
+// @snippet qtreewidgetitem
+
+// @snippet qlistwidget-clear
+Shiboken::BindingManager &bm = Shiboken::BindingManager::instance();
+for (int i = 0, count = %CPPSELF.count(); i < count; ++i) {
+ QListWidgetItem *item = %CPPSELF.item(i);
+ if (auto wrapper = bm.retrieveWrapper(item)) {
+ auto pyObj = reinterpret_cast<PyObject *>(wrapper);
+ Py_INCREF(pyObj);
+ Shiboken::Object::setParent(nullptr, pyObj);
+ Shiboken::Object::invalidate(pyObj);
+ Py_DECREF(pyObj);
+ }
+}
+%CPPSELF.%FUNCTION_NAME();
+// @snippet qlistwidget-clear
+
+// @snippet qwidget-retrieveobjectname
+#ifndef _RETRIEVEOBJECTNAME_
+#define _RETRIEVEOBJECTNAME_ // Guard for jumbo builds
+static QByteArray retrieveObjectName(PyObject *obj)
+{
+ Shiboken::AutoDecRef objName(PyObject_Str(obj));
+ return Shiboken::String::toCString(objName);
+}
+#endif
+// @snippet qwidget-retrieveobjectname
+
+// @snippet qwidget-glue
+
+// Transfer 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_count = layout->count(); i < i_count; i++) {
+ QLayoutItem *item = layout->itemAt(i);
+ if (PyErr_Occurred() || !item)
+ return;
+
+ if (QWidget *w = item->widget()) {
+ QWidget *pw = w->parentWidget();
+ if (pw != parent) {
+ Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget *](w));
+ Shiboken::Object::setParent(pyParent, pyChild);
+ }
+ } else {
+ if (QLayout *l = item->layout())
+ 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()),
+ retrieveObjectName(pyChild).constData(),
+ 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);
+ }
+}
+// @snippet qwidget-glue
+
+// @snippet qwidget-setstyle
+Shiboken::Object::keepReference(reinterpret_cast<SbkObject *>(%PYSELF), "__style__", %PYARG_1);
+// @snippet qwidget-setstyle
+
+// @snippet qwidget-style
+QStyle *myStyle = %CPPSELF->style();
+if (myStyle && qApp) {
+ bool keepReference = true;
+ %PYARG_0 = %CONVERTTOPYTHON[QStyle *](myStyle);
+ QStyle *appStyle = qApp->style();
+ if (appStyle == myStyle) {
+ Shiboken::AutoDecRef pyApp(%CONVERTTOPYTHON[QApplication *](qApp));
+ // Do not set parentship when qApp is embedded
+ if (Shiboken::Object::wasCreatedByPython(reinterpret_cast<SbkObject *>(pyApp.object()))) {
+ Shiboken::Object::setParent(pyApp, %PYARG_0);
+ Shiboken::Object::releaseOwnership(%PYARG_0);
+ keepReference = false;
+ }
+ }
+ if (keepReference)
+ Shiboken::Object::keepReference(reinterpret_cast<SbkObject *>(%PYSELF), "__style__", %PYARG_0);
+}
+// @snippet qwidget-style
+
+// @snippet qapplication-init
+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);
+ }
+}
+// @snippet qapplication-init
+
+// @snippet qapplication-setStyle
+if (qApp) {
+ Shiboken::AutoDecRef pyApp(%CONVERTTOPYTHON[QApplication *](qApp));
+ Shiboken::Object::setParent(pyApp, %PYARG_1);
+ Shiboken::Object::releaseOwnership(%PYARG_1);
+}
+// @snippet qapplication-setStyle
+
+// @snippet qwidget-setlayout
+qwidgetSetLayout(%CPPSELF, %1);
+// %FUNCTION_NAME() - disable generation of function call.
+// @snippet qwidget-setlayout
+
+// @snippet qtabwidget-removetab
+QWidget *tab = %CPPSELF.widget(%1);
+if (tab) {
+ Shiboken::AutoDecRef pyWidget(%CONVERTTOPYTHON[QWidget *](tab));
+ %CPPSELF.%FUNCTION_NAME(%1);
+}
+// @snippet qtabwidget-removetab
+
+// @snippet qtabwidget-clear
+Shiboken::BindingManager &bm = Shiboken::BindingManager::instance();
+for (int i = 0, count = %CPPSELF.count(); i < count; ++i) {
+ QWidget *widget = %CPPSELF.widget(i);
+ if (bm.hasWrapper(widget)) {
+ Shiboken::AutoDecRef pyWidget(%CONVERTTOPYTHON[QWidget *](widget));
+ Shiboken::Object::releaseOwnership(pyWidget);
+ }
+}
+%CPPSELF.%FUNCTION_NAME();
+// @snippet qtabwidget-clear
+
+// @snippet qlineedit-addaction
+%CPPSELF.addAction(%1);
+// @snippet qlineedit-addaction
+
+// addAction(QIcon,QString,const QObject*,const char*,Qt::ConnectionType)
+// @snippet qwidget-addaction-1
+QAction *action = %CPPSELF.addAction(%1, %2);
+%PYARG_0 = %CONVERTTOPYTHON[QAction *](action);
+Shiboken::AutoDecRef result(PyObject_CallMethod(%PYARG_0,
+ "connect", "OsO",
+ %PYARG_0, SIGNAL(triggered()), %PYARG_3)
+);
+// @snippet qwidget-addaction-1
+
+// addAction(QString,const QObject*,const char*,Qt::ConnectionType)
+// @snippet qwidget-addaction-2
+QAction *action = %CPPSELF.addAction(%1);
+%PYARG_0 = %CONVERTTOPYTHON[QAction *](action);
+Shiboken::AutoDecRef result(PyObject_CallMethod(%PYARG_0,
+ "connect", "OsO",
+ %PYARG_0, SIGNAL(triggered()), %PYARG_2)
+);
+// @snippet qwidget-addaction-2
+
+// @snippet qtoolbar-clear
+QList<PyObject *> lst;
+Shiboken::BindingManager &bm = Shiboken::BindingManager::instance();
+const auto &toolButtonChildren = %CPPSELF.findChildren<QToolButton *>();
+for (auto *child : toolButtonChildren) {
+ if (bm.hasWrapper(child)) {
+ PyObject *pyChild = %CONVERTTOPYTHON[QToolButton *](child);
+ Shiboken::Object::setParent(nullptr, pyChild);
+ lst << pyChild;
+ }
+}
+
+//Remove actions
+const auto &actions = %CPPSELF.actions();
+for (auto *act : actions) {
+ Shiboken::AutoDecRef pyAct(%CONVERTTOPYTHON[QAction *](act));
+ Shiboken::Object::setParent(nullptr, pyAct);
+ Shiboken::Object::invalidate(pyAct);
+}
+
+%CPPSELF.clear();
+for (auto *obj : std::as_const(lst)) {
+ Shiboken::Object::invalidate(reinterpret_cast<SbkObject *>(obj));
+ Py_XDECREF(obj);
+}
+// @snippet qtoolbar-clear
+
+// @snippet qapplication-1
+QApplicationConstructor(%PYSELF, args, &%0);
+// @snippet qapplication-1
+
+// @snippet qapplication-2
+PyObject *empty = PyTuple_New(2);
+if (!PyTuple_SetItem(empty, 0, PyList_New(0)))
+ QApplicationConstructor(%PYSELF, empty, &%0);
+// @snippet qapplication-2
+
+// @snippet qgraphicsproxywidget-setwidget
+QWidget *_old = %CPPSELF.widget();
+if (_old)
+ Shiboken::Object::setParent(nullptr, %CONVERTTOPYTHON[QWidget *](_old));
+%CPPSELF.%FUNCTION_NAME(%1);
+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
+
+// @snippet qstyleoption-typename
+const char *styleOptionType(const QStyleOption *o)
+{
+ switch (o->type) {
+ case QStyleOption::SO_Default:
+ break;
+ case QStyleOption::SO_FocusRect:
+ return "QStyleOptionFocusRect";
+ case QStyleOption::SO_Button:
+ return "QStyleOptionButton";
+ case QStyleOption::SO_Tab:
+ return "QStyleOptionTab";
+ case QStyleOption::SO_MenuItem:
+ return "QStyleOptionMenuItem";
+ case QStyleOption::SO_Frame:
+ return "QStyleOptionFrame";
+ case QStyleOption::SO_ProgressBar:
+ return "QStyleOptionProgressBar";
+ case QStyleOption::SO_ToolBox:
+ return "QStyleOptionToolBox";
+ case QStyleOption::SO_Header:
+ return "QStyleOptionHeader";
+ case QStyleOption::SO_DockWidget:
+ return "QStyleOptionDockWidget";
+ case QStyleOption::SO_ViewItem:
+ return "QStyleOptionViewItem";
+ case QStyleOption::SO_TabWidgetFrame:
+ return "QStyleOptionTabWidgetFrame";
+ case QStyleOption::SO_TabBarBase:
+ return "QStyleOptionTabBarBase";
+ case QStyleOption::SO_RubberBand:
+ return "QStyleOptionRubberBand";
+ case QStyleOption::SO_ToolBar:
+ return "QStyleOptionToolBar";
+ case QStyleOption::SO_GraphicsItem:
+ return "QStyleOptionGraphicsItem";
+ case QStyleOption::SO_Slider:
+ return "QStyleOptionSlider";
+ case QStyleOption::SO_SpinBox:
+ return "QStyleOptionSpinBox";
+ case QStyleOption::SO_ToolButton:
+ return "QStyleOptionToolButton";
+ case QStyleOption::SO_ComboBox:
+ return "QStyleOptionComboBox";
+ case QStyleOption::SO_TitleBar:
+ return "QStyleOptionTitleBar";
+ case QStyleOption::SO_GroupBox:
+ return "QStyleOptionGroupBox";
+ case QStyleOption::SO_SizeGrip:
+ return "QStyleOptionSizeGrip";
+ default:
+ break;
+ }
+ return "QStyleOption";
+}
+// @snippet qstyleoption-typename
+
+// @snippet qwizardpage-registerfield
+auto *signalInst = reinterpret_cast<PySideSignalInstance *>(%PYARG_4);
+const auto data = PySide::Signal::getEmitterData(signalInst);
+if (data.methodIndex == -1)
+ return PyErr_Format(PyExc_RuntimeError, "QWizardPage::registerField(): Unable to retrieve signal emitter.");
+const auto method = data.emitter->metaObject()->method(data.methodIndex);
+const QByteArray signature = QByteArrayLiteral("2") + method.methodSignature();
+%BEGIN_ALLOW_THREADS
+%CPPSELF.%FUNCTION_NAME(%1, %2, %3, signature.constData());
+%END_ALLOW_THREADS
+// @snippet qwizardpage-registerfield
+
+// The constructor heuristics generate setting a parent-child relationship
+// when creating a QDialog with parent. This causes the dialog to leak
+// when it synchronous exec() is used instead of asynchronous show().
+// In that case, remove the parent-child relationship.
+// @snippet qdialog-exec-remove-parent-relation
+Shiboken::Object::removeParent(reinterpret_cast<SbkObject *>(%PYSELF));
+// @snippet qdialog-exec-remove-parent-relation
+
+/*********************************************************************
+ * CONVERSIONS
+ ********************************************************************/
+
+/*********************************************************************
+ * NATIVE TO TARGET CONVERSIONS
+ ********************************************************************/
diff --git a/sources/pyside6/PySide6/glue/qtxml.cpp b/sources/pyside6/PySide6/glue/qtxml.cpp
new file mode 100644
index 000000000..120579927
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtxml.cpp
@@ -0,0 +1,17 @@
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+// @snippet qdomdocument-setcontent
+QString _errorMsg_;
+int _errorLine_ = 0;
+int _errorColumn_ = 0;
+%BEGIN_ALLOW_THREADS
+bool _ret_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &_errorMsg_, &_errorLine_,
+ &_errorColumn_);
+%END_ALLOW_THREADS
+%PYARG_0 = PyTuple_New(4);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[bool](_ret_));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](_errorMsg_));
+PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[int](_errorLine_));
+PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[int](_errorColumn_));
+// @snippet qdomdocument-setcontent
diff --git a/sources/pyside6/PySide6/licensecomment.txt b/sources/pyside6/PySide6/licensecomment.txt
new file mode 100644
index 000000000..d82c85d88
--- /dev/null
+++ b/sources/pyside6/PySide6/licensecomment.txt
@@ -0,0 +1,2 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
diff --git a/sources/pyside6/PySide6/py.typed.in b/sources/pyside6/PySide6/py.typed.in
new file mode 100644
index 000000000..0e76a07dc
--- /dev/null
+++ b/sources/pyside6/PySide6/py.typed.in
@@ -0,0 +1 @@
+# this is a marker file for mypy
diff --git a/sources/pyside6/PySide6/pysideqtesttouch.h b/sources/pyside6/PySide6/pysideqtesttouch.h
new file mode 100644
index 000000000..4b4a4a9b5
--- /dev/null
+++ b/sources/pyside6/PySide6/pysideqtesttouch.h
@@ -0,0 +1,179 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef PYSIDEQTESTTOUCH_H
+#define PYSIDEQTESTTOUCH_H
+
+#include <QtTest/qttestglobal.h>
+#include <QtTest/qtestassert.h>
+#include <QtTest/qtestsystem.h>
+#include <QtTest/qtestspontaneevent.h>
+#include <QtTest/qtesttouch.h>
+
+#include <QtCore/qmap.h>
+#include <QtGui/qevent.h>
+#include <QtGui/qwindow.h>
+#ifdef QT_WIDGETS_LIB
+#include <QtWidgets/qwidget.h>
+#endif
+
+QT_BEGIN_NAMESPACE
+
+namespace QTest
+{
+
+ class PySideQTouchEventSequence
+ {
+ public:
+ ~PySideQTouchEventSequence()
+ {
+ if (commitWhenDestroyed)
+ commit();
+ }
+ PySideQTouchEventSequence *press(int touchId, const QPoint &pt, QWindow *window = nullptr)
+ {
+ auto it = m_points.find(touchId);
+ if (it == m_points.end()) {
+ QEventPoint point(touchId, QEventPoint::Pressed, pt, mapToScreen(window, pt));
+ m_points.insert(touchId, point);
+ }
+ return this;
+ }
+ PySideQTouchEventSequence *move(int touchId, const QPoint &pt, QWindow *window = nullptr)
+ {
+ QEventPoint point(touchId, QEventPoint::Updated, pt, mapToScreen(window, pt));
+ m_points[touchId] = point;
+ return this;
+ }
+ PySideQTouchEventSequence *release(int touchId, const QPoint &pt, QWindow *window = nullptr)
+ {
+ auto it = m_points.find(touchId);
+ if (it == m_points.end()) {
+ QEventPoint point(touchId, QEventPoint::Released, pt, mapToScreen(window, pt));
+ m_points.insert(touchId, point);
+ }
+ return this;
+ }
+ PySideQTouchEventSequence *stationary(int touchId)
+ {
+ auto it = m_points.find(touchId);
+ if (it == m_points.end()) {
+ auto previous_it = m_previousPoints.find(touchId);
+ const QEventPoint point = previous_it != m_previousPoints.end()
+ ? previous_it.value()
+ : QEventPoint(touchId, QEventPoint::Stationary, QPointF(), QPointF());
+ m_points.insert(touchId, point);
+ }
+ return this;
+ }
+
+#ifdef QT_WIDGETS_LIB
+ PySideQTouchEventSequence *press(int touchId, const QPoint &pt, QWidget *widget = nullptr)
+ {
+ auto it = m_points.find(touchId);
+ if (it == m_points.end()) {
+ QEventPoint point(touchId, QEventPoint::Pressed, pt, mapToScreen(widget, pt));
+ m_points.insert(touchId, point);
+ }
+ return this;
+ }
+
+ PySideQTouchEventSequence *move(int touchId, const QPoint &pt, QWidget *widget = nullptr)
+ {
+ QEventPoint point(touchId, QEventPoint::Updated, pt, mapToScreen(widget, pt));
+ m_points[touchId] = point;
+ return this;
+ }
+
+ PySideQTouchEventSequence *release(int touchId, const QPoint &pt, QWidget *widget = nullptr)
+ {
+ auto it = m_points.find(touchId);
+ if (it == m_points.end()) {
+ QEventPoint point(touchId, QEventPoint::Released, pt, mapToScreen(widget, pt));
+ m_points.insert(touchId, point);
+ }
+ return this;
+ }
+#endif
+
+ void commit(bool processEvents = true)
+ {
+ if (!m_points.isEmpty()) {
+ if (targetWindow) {
+ qt_handleTouchEvent(targetWindow, device, m_points.values());
+ }
+#ifdef QT_WIDGETS_LIB
+ else if (targetWidget) {
+ qt_handleTouchEvent(targetWidget->windowHandle(), device, m_points.values());
+ }
+#endif
+ }
+ if (processEvents)
+ QCoreApplication::processEvents();
+ m_previousPoints = m_points;
+ m_points.clear();
+ }
+
+private:
+#ifdef QT_WIDGETS_LIB
+ PySideQTouchEventSequence(QWidget *widget, QPointingDevice *aDevice, bool autoCommit)
+ : targetWidget(widget), device(aDevice), commitWhenDestroyed(autoCommit)
+ {
+ }
+#endif
+ PySideQTouchEventSequence(QWindow *window, QPointingDevice *aDevice, bool autoCommit)
+ : targetWindow(window), device(aDevice), commitWhenDestroyed(autoCommit)
+ {
+ }
+
+#ifdef QT_WIDGETS_LIB
+ QPointF mapToScreen(const QWidget *widget, const QPointF &pt)
+ {
+ if (widget)
+ return widget->mapToGlobal(pt);
+ return targetWidget ? targetWidget->mapToGlobal(pt) : pt;
+ }
+#endif
+ QPointF mapToScreen(const QWindow *window, const QPointF &pt)
+ {
+ if(window)
+ return window->mapToGlobal(pt);
+ return targetWindow ? targetWindow->mapToGlobal(pt) : pt;
+ }
+
+ QMap<int, QEventPoint> m_previousPoints;
+ QMap<int, QEventPoint> m_points;
+#ifdef QT_WIDGETS_LIB
+ QWidget *targetWidget = nullptr;
+#endif
+ QWindow *targetWindow = nullptr;
+ QPointingDevice *device = nullptr;
+ bool commitWhenDestroyed = false;
+#ifdef QT_WIDGETS_LIB
+ friend PySideQTouchEventSequence *generateTouchEvent(QWidget *, QPointingDevice *, bool);
+#endif
+ friend PySideQTouchEventSequence *generateTouchEvent(QWindow *, QPointingDevice *, bool);
+ };
+
+#ifdef QT_WIDGETS_LIB
+ inline
+ PySideQTouchEventSequence *generateTouchEvent(QWidget *widget,
+ QPointingDevice *device,
+ bool autoCommit = true)
+ {
+ return new PySideQTouchEventSequence(widget, device, autoCommit);
+ }
+#endif
+ inline
+ PySideQTouchEventSequence *generateTouchEvent(QWindow *window,
+ QPointingDevice *device,
+ bool autoCommit = true)
+ {
+ return new PySideQTouchEventSequence(window, device, autoCommit);
+ }
+
+}
+
+QT_END_NAMESPACE
+
+#endif // PYSIDEQTESTTOUCH_H
diff --git a/sources/pyside6/PySide6/pysidewtypes.h b/sources/pyside6/PySide6/pysidewtypes.h
new file mode 100644
index 000000000..f853949ac
--- /dev/null
+++ b/sources/pyside6/PySide6/pysidewtypes.h
@@ -0,0 +1,30 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef __PYSIDEWTYPES__
+#define __PYSIDEWTYPES__
+
+using HWND = struct HWND__ *;
+using UINT = unsigned;
+using LONG = long;
+using DWORD = unsigned long;
+using WPARAM = UINT;
+using LPARAM = LONG;
+
+struct POINT
+{
+ LONG x;
+ LONG y;
+};
+
+struct MSG
+{
+ HWND hwnd;
+ UINT message;
+ WPARAM wParam;
+ LPARAM lParam;
+ DWORD time;
+ POINT pt;
+};
+
+#endif
diff --git a/sources/pyside6/PySide6/qiopipe.h b/sources/pyside6/PySide6/qiopipe.h
new file mode 100644
index 000000000..6a325f184
--- /dev/null
+++ b/sources/pyside6/PySide6/qiopipe.h
@@ -0,0 +1,36 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QIOPIPE_H
+#define QIOPIPE_H
+
+#include <QtCore/qiodevicebase.h>
+#include <QtCore/qobject.h>
+
+QT_BEGIN_NAMESPACE
+
+class QIODevice;
+
+namespace QtCoreHelper
+{
+
+class QIOPipePrivate;
+class QIOPipe : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QIOPipe)
+
+public:
+ QIOPipe(QObject *parent = nullptr);
+
+ bool open(QIODeviceBase::OpenMode mode);
+
+ QIODevice *end1() const;
+ QIODevice *end2() const;
+};
+
+} // namespace QtCoreHelper
+
+QT_END_NAMESPACE
+
+#endif // QIOPIPE_H
diff --git a/sources/pyside6/PySide6/qpydesignerextensions.h b/sources/pyside6/PySide6/qpydesignerextensions.h
new file mode 100644
index 000000000..871fa8284
--- /dev/null
+++ b/sources/pyside6/PySide6/qpydesignerextensions.h
@@ -0,0 +1,84 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QPYDESIGNEREXTENSIONS_H
+#define QPYDESIGNEREXTENSIONS_H
+
+#include <QtDesigner/QDesignerContainerExtension>
+#include <QtDesigner/QDesignerMemberSheetExtension>
+#include <QtDesigner/QDesignerPropertySheetExtension>
+#include <QtDesigner/QDesignerTaskMenuExtension>
+#include <QtUiPlugin/QDesignerCustomWidgetCollectionInterface>
+#include <QtUiPlugin/QDesignerCustomWidgetInterface>
+
+// Not automatically found since "find_package(Qt6 COMPONENTS Designer)" is not used
+
+#ifdef Q_MOC_RUN
+Q_DECLARE_INTERFACE(QDesignerContainerExtension, "org.qt-project.Qt.Designer.Container")
+Q_DECLARE_INTERFACE(QDesignerMemberSheetExtension, "org.qt-project.Qt.Designer.MemberSheet")
+Q_DECLARE_EXTENSION_INTERFACE(QDesignerPropertySheetExtension, "org.qt-project.Qt.Designer.PropertySheet")
+Q_DECLARE_INTERFACE(QDesignerTaskMenuExtension, "org.qt-project.Qt.Designer.TaskMenu")
+Q_DECLARE_INTERFACE(QDesignerCustomWidgetCollectionInterface, "org.qt-project.Qt.QDesignerCustomWidgetCollectionInterface")
+#endif
+
+struct _object; // PyObject
+
+QT_BEGIN_NAMESPACE
+
+// Extension implementations need to inherit QObject which cannot be done in Python.
+// Provide a base class (cf QPyTextObject).
+
+class QPyDesignerContainerExtension : public QObject, public QDesignerContainerExtension
+{
+ Q_OBJECT
+ Q_INTERFACES(QDesignerContainerExtension)
+public:
+ explicit QPyDesignerContainerExtension(QObject *parent = nullptr) : QObject(parent) {}
+};
+
+class QPyDesignerMemberSheetExtension : public QObject, public QDesignerMemberSheetExtension
+{
+ Q_OBJECT
+ Q_INTERFACES(QDesignerMemberSheetExtension)
+public:
+ explicit QPyDesignerMemberSheetExtension(QObject *parent = nullptr) : QObject(parent) {}
+};
+
+class QPyDesignerPropertySheetExtension : public QObject, public QDesignerPropertySheetExtension
+{
+ Q_OBJECT
+ Q_INTERFACES(QDesignerPropertySheetExtension)
+public:
+ explicit QPyDesignerPropertySheetExtension(QObject *parent = nullptr) : QObject(parent) {}
+};
+
+class QPyDesignerTaskMenuExtension : public QObject, public QDesignerTaskMenuExtension
+{
+ Q_OBJECT
+ Q_INTERFACES(QDesignerTaskMenuExtension)
+public:
+ explicit QPyDesignerTaskMenuExtension(QObject *parent = nullptr) : QObject(parent) {}
+};
+
+class QPyDesignerCustomWidgetCollection : public QDesignerCustomWidgetCollectionInterface
+{
+public:
+ ~QPyDesignerCustomWidgetCollection();
+
+ static QPyDesignerCustomWidgetCollection *instance();
+
+ QList<QDesignerCustomWidgetInterface *> customWidgets() const override;
+
+ static void addCustomWidget(QDesignerCustomWidgetInterface *c);
+
+ static bool _registerCustomWidgetHelper(_object *typeArg, _object *kwds);
+
+private:
+ QPyDesignerCustomWidgetCollection();
+
+ QList<QDesignerCustomWidgetInterface *> m_customWidgets;
+};
+
+QT_END_NAMESPACE
+
+#endif // QPYDESIGNEREXTENSIONS_H
diff --git a/sources/pyside6/PySide6/qpyqmlparserstatus.h b/sources/pyside6/PySide6/qpyqmlparserstatus.h
new file mode 100644
index 000000000..24dcdda75
--- /dev/null
+++ b/sources/pyside6/PySide6/qpyqmlparserstatus.h
@@ -0,0 +1,28 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QPYQMLPARSERSTATUS_H
+#define QPYQMLPARSERSTATUS_H
+
+#include <QtCore/QObject>
+#include <QtQml/QQmlParserStatus>
+
+#ifdef Q_MOC_RUN
+Q_DECLARE_INTERFACE(QQmlParserStatus, "org.qt-project.Qt.QQmlParserStatus")
+#endif
+
+QT_BEGIN_NAMESPACE
+
+// Inherit from QObject such that QQmlParserStatus can be found at
+// a fixed offset (RegisterType::parserStatusCast).
+class QPyQmlParserStatus : public QObject, public QQmlParserStatus
+{
+ Q_OBJECT
+ Q_INTERFACES(QQmlParserStatus)
+public:
+ explicit QPyQmlParserStatus(QObject *parent = nullptr) : QObject(parent) {}
+};
+
+QT_END_NAMESPACE
+
+#endif // QPYQMLPARSERSTATUS_H
diff --git a/sources/pyside6/PySide6/qpyqmlpropertyvaluesource.h b/sources/pyside6/PySide6/qpyqmlpropertyvaluesource.h
new file mode 100644
index 000000000..0b6a0b95c
--- /dev/null
+++ b/sources/pyside6/PySide6/qpyqmlpropertyvaluesource.h
@@ -0,0 +1,27 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QPYQMLPROPERTYVALUESOURCE_H
+#define QPYQMLPROPERTYVALUESOURCE_H
+
+#include <QtQml/QQmlPropertyValueSource>
+
+#ifdef Q_MOC_RUN
+Q_DECLARE_INTERFACE(QQmlPropertyValueSource, "org.qt-project.Qt.QQmlPropertyValueSource")
+#endif
+
+QT_BEGIN_NAMESPACE
+
+// Inherit from QObject such that QQmlPropertyValueSource can be found at
+// a fixed offset (RegisterType::valueSourceCast).
+class QPyQmlPropertyValueSource : public QObject, public QQmlPropertyValueSource
+{
+ Q_OBJECT
+ Q_INTERFACES(QQmlPropertyValueSource)
+public:
+ explicit QPyQmlPropertyValueSource(QObject *parent = nullptr) : QObject(parent) {}
+};
+
+QT_END_NAMESPACE
+
+#endif // QPYQMLPROPERTYVALUESOURCE_H
diff --git a/sources/pyside6/PySide6/qpytextobject.cpp b/sources/pyside6/PySide6/qpytextobject.cpp
new file mode 100644
index 000000000..501db2af9
--- /dev/null
+++ b/sources/pyside6/PySide6/qpytextobject.cpp
@@ -0,0 +1,14 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#include "qpytextobject.h"
+
+/*!
+ \class QPyTextObject
+ \brief Workaround to make possible use QTextObjectInterface on PySide.
+ \ingroup richtext-processing
+ Due to the technical details of how to bind C++ classes to Python, you need to use this class when you need to implement
+ your own QTextObjectInterface rather than create a class inheriting from QObject and QTextObjectInterface.
+
+ \sa QTextObjectInterface
+*/
diff --git a/sources/pyside6/PySide6/qpytextobject.h b/sources/pyside6/PySide6/qpytextobject.h
new file mode 100644
index 000000000..45bb0bd52
--- /dev/null
+++ b/sources/pyside6/PySide6/qpytextobject.h
@@ -0,0 +1,28 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QPYTEXTOBJECT
+#define QPYTEXTOBJECT
+
+#include <QtCore/QObject>
+#include <QtGui/QTextObjectInterface>
+
+// Qt5: no idea why this definition is not found automatically! It should come
+// from <QTextObjectInterface> which resolves to qabstracttextdocumentlayout.h
+#ifdef Q_MOC_RUN
+Q_DECLARE_INTERFACE(QTextObjectInterface, "org.qt-project.Qt.QTextObjectInterface")
+#endif
+
+QT_BEGIN_NAMESPACE
+class QPyTextObject : public QObject, public QTextObjectInterface
+{
+ Q_OBJECT
+ Q_INTERFACES(QTextObjectInterface)
+public:
+ QPyTextObject(QObject *parent = nullptr) : QObject(parent) {}
+};
+QT_END_NAMESPACE
+
+#endif
+
+
diff --git a/sources/pyside6/PySide6/qt.conf.in b/sources/pyside6/PySide6/qt.conf.in
new file mode 100644
index 000000000..ff5b0a30e
--- /dev/null
+++ b/sources/pyside6/PySide6/qt.conf.in
@@ -0,0 +1,2 @@
+[Paths]
+Prefix = @QT_CONF_PREFIX@
diff --git a/sources/pyside6/PySide6/qtcorehelper.h b/sources/pyside6/PySide6/qtcorehelper.h
new file mode 100644
index 000000000..589d0b295
--- /dev/null
+++ b/sources/pyside6/PySide6/qtcorehelper.h
@@ -0,0 +1,122 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QTCOREHELPER_H
+#define QTCOREHELPER_H
+
+#include <QtCore/qmutex.h>
+#include <QtCore/qobjectdefs.h>
+
+#include <memory>
+
+QT_BEGIN_NAMESPACE
+
+namespace QtCoreHelper {
+
+ using MutexLocker = QT_PREPEND_NAMESPACE(QMutexLocker<QMutex>);
+ using RecursiveMutexLocker = QT_PREPEND_NAMESPACE(QMutexLocker<QRecursiveMutex>);
+
+ // ::QMutexLocker is a template with the QMutex class as parameter which can
+ // only be represented by different type names in Python. Provide a common API.
+ class QMutexLocker
+ {
+ public:
+ Q_DISABLE_COPY_MOVE(QMutexLocker)
+
+ explicit QMutexLocker(QMutex *m)
+ : m_mutexLocker(new MutexLocker(m))
+ {
+ }
+
+ explicit QMutexLocker(QRecursiveMutex *m)
+ : m_recursiveMutexLocker(new RecursiveMutexLocker(m))
+ {
+ }
+
+ void unlock()
+ {
+ if (m_mutexLocker)
+ m_mutexLocker->unlock();
+ else
+ m_recursiveMutexLocker->unlock();
+ }
+
+ void relock()
+ {
+ if (m_mutexLocker)
+ m_mutexLocker->relock();
+ else
+ m_recursiveMutexLocker->relock();
+ }
+
+ QMutex *mutex() const
+ {
+ return m_mutexLocker ? m_mutexLocker->mutex() : nullptr;
+ }
+
+ QRecursiveMutex *recursiveMutex() const
+ {
+ return m_recursiveMutexLocker ? m_recursiveMutexLocker->mutex() : nullptr;
+ }
+
+ ~QMutexLocker()
+ {
+ delete m_mutexLocker;
+ delete m_recursiveMutexLocker;
+ }
+
+ private:
+ MutexLocker *m_mutexLocker = nullptr;
+ RecursiveMutexLocker *m_recursiveMutexLocker = nullptr;
+ };
+
+ class QGenericArgumentData;
+
+ // Return value of function Q_ARG() to be passed to QMetaObject::invokeMethod.
+ // Frees the data if it is an allocated, primitive type.
+ class QGenericArgumentHolder {
+ public:
+ QGenericArgumentHolder();
+ explicit QGenericArgumentHolder(const QMetaType &type, const void *aData);
+ QGenericArgumentHolder(const QGenericArgumentHolder &);
+ QGenericArgumentHolder(QGenericArgumentHolder &&);
+ QGenericArgumentHolder &operator=(const QGenericArgumentHolder &);
+ QGenericArgumentHolder &operator=(QGenericArgumentHolder &&);
+ ~QGenericArgumentHolder();
+
+ QGenericArgument toGenericArgument() const;
+
+ QMetaType metaType() const;
+ const void *data() const;
+
+ private:
+ std::shared_ptr<QGenericArgumentData> d;
+ };
+
+ class QGenericReturnArgumentData;
+
+ // Return value of function Q_RETURN_ARG() to be passed to QMetaObject::invokeMethod.
+ // Frees the data if it is an allocated, primitive type.
+ class QGenericReturnArgumentHolder {
+ public:
+ explicit QGenericReturnArgumentHolder(const QMetaType &type, void *aData);
+ QGenericReturnArgumentHolder(const QGenericReturnArgumentHolder &);
+ QGenericReturnArgumentHolder(QGenericReturnArgumentHolder &&);
+ QGenericReturnArgumentHolder &operator=(const QGenericReturnArgumentHolder &);
+ QGenericReturnArgumentHolder &operator=(QGenericReturnArgumentHolder &&);
+ ~QGenericReturnArgumentHolder();
+
+ QGenericReturnArgument toGenericReturnArgument() const;
+
+ QMetaType metaType() const;
+ const void *data() const;
+
+ private:
+ std::shared_ptr<QGenericReturnArgumentData> d;
+ };
+
+} // namespace QtCoreHelper
+
+QT_END_NAMESPACE
+
+#endif // QTCOREHELPER_H
diff --git a/sources/pyside6/PySide6/qtdatavisualization_helper.h b/sources/pyside6/PySide6/qtdatavisualization_helper.h
new file mode 100644
index 000000000..8fee4492d
--- /dev/null
+++ b/sources/pyside6/PySide6/qtdatavisualization_helper.h
@@ -0,0 +1,19 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QTDATAVISUALIZATION_HELPER_H
+#define QTDATAVISUALIZATION_HELPER_H
+
+#include <sbkpython.h>
+
+#include <QtDataVisualization/qsurfacedataproxy.h>
+#include <QtCore/qlist.h>
+
+namespace QtDataVisualizationHelper {
+
+QSurfaceDataArray *surfaceDataFromNp(double x, double deltaX, double z, double deltaZ,
+ PyObject *data);
+
+} // namespace QtDataVisualizationHelper
+
+#endif // QTDATAVISUALIZATION_HELPER_H
diff --git a/sources/pyside6/PySide6/qtdbushelper.h b/sources/pyside6/PySide6/qtdbushelper.h
new file mode 100644
index 000000000..7389ad815
--- /dev/null
+++ b/sources/pyside6/PySide6/qtdbushelper.h
@@ -0,0 +1,62 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QTDBUSHELPER_H
+#define QTDBUSHELPER_H
+
+#include <QtDBus/qdbusmessage.h>
+#include <QtDBus/qdbuspendingcall.h>
+#include <QtDBus/qdbusreply.h>
+
+QT_BEGIN_NAMESPACE
+namespace QtDBusHelper {
+
+// A Python-bindings friendly, non-template QDBusReply
+
+class QDBusReply {
+public:
+ QDBusReply();
+
+ // Enable constructing QDBusReply from a QDBusMessage which is returned by
+ // call().
+ explicit QDBusReply(const QDBusMessage &reply) :
+ m_error(reply),
+ m_data(reply.arguments().value(0, {}))
+ {
+ }
+
+ // Enable constructing QDBusReply from an original Qt QDBusReply for
+ // the functions we declare (QDBusConnectionInterface::registeredServiceNames())
+ template <class T>
+ explicit QDBusReply(const ::QDBusReply<T> &qr) :
+ m_error(qr.error()),
+ m_data(QVariant(qr.value()))
+ {
+ }
+
+ explicit QDBusReply(const ::QDBusReply<void> &qr) :
+ m_error(qr.error())
+ {
+ }
+
+ bool isValid() const { return !m_error.isValid(); }
+
+ QVariant value() const
+ {
+ return m_data;
+ }
+
+ const QDBusError &error() const { return m_error; }
+
+private:
+ QDBusError m_error;
+ QVariant m_data;
+};
+
+inline QDBusReply::QDBusReply() = default;
+
+} // namespace QtDBusHelper
+
+QT_END_NAMESPACE
+
+#endif // QTDBUSHELPER_H
diff --git a/sources/pyside6/PySide6/qtgraphs_helper.h b/sources/pyside6/PySide6/qtgraphs_helper.h
new file mode 100644
index 000000000..e488fc7d3
--- /dev/null
+++ b/sources/pyside6/PySide6/qtgraphs_helper.h
@@ -0,0 +1,19 @@
+// Copyright (C) 2023 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QTGRAPHS_HELPER_H
+#define QTGRAPHS_HELPER_H
+
+#include <sbkpython.h>
+
+#include <QtGraphs/qsurfacedataproxy.h>
+#include <QtCore/qlist.h>
+
+namespace QtGraphsHelper {
+
+QSurfaceDataArray surfaceDataFromNp(double x, double deltaX, double z, double deltaZ,
+ PyObject *data);
+
+} // namespace QtGraphsHelper
+
+#endif // QTGRAPHS_HELPER_H
diff --git a/sources/pyside6/PySide6/qtguihelper.h b/sources/pyside6/PySide6/qtguihelper.h
new file mode 100644
index 000000000..e537cfefa
--- /dev/null
+++ b/sources/pyside6/PySide6/qtguihelper.h
@@ -0,0 +1,35 @@
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#ifndef QTGUIHELPER_H
+#define QTGUIHELPER_H
+
+#include <QtGui/QGuiApplication>
+
+QT_BEGIN_NAMESPACE
+namespace QtGuiHelper {
+
+ class QOverrideCursorGuard
+ {
+ public:
+ Q_DISABLE_COPY_MOVE(QOverrideCursorGuard)
+
+ QOverrideCursorGuard() = default;
+ ~QOverrideCursorGuard() = default;
+
+ void restoreOverrideCursor()
+ {
+ if (m_guard) {
+ QGuiApplication::restoreOverrideCursor();
+ m_guard = false;
+ }
+ }
+
+ private:
+ bool m_guard = true;
+ };
+
+} // namespace QtGuiHelper
+QT_END_NAMESPACE
+
+#endif // QTGUIHELPER_H
diff --git a/sources/pyside6/PySide6/support/__init__.py b/sources/pyside6/PySide6/support/__init__.py
new file mode 100644
index 000000000..5127df0f4
--- /dev/null
+++ b/sources/pyside6/PySide6/support/__init__.py
@@ -0,0 +1,6 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+from shiboken6.Shiboken import VoidPtr
+
+#eof
diff --git a/sources/pyside6/PySide6/support/deprecated.py b/sources/pyside6/PySide6/support/deprecated.py
new file mode 100644
index 000000000..263dd3ed7
--- /dev/null
+++ b/sources/pyside6/PySide6/support/deprecated.py
@@ -0,0 +1,18 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+"""
+deprecated.py
+
+This module contains deprecated things that are removed from the interface.
+They are implemented in Python again, together with a deprecation warning.
+
+Functions that are to be called for
+ PySide6.<module> must be named
+ fix_for_<module> .
+
+Note that this fixing code is run after all initializations, but before the
+import is finished. But that is no problem since the module is passed in.
+"""
+
+# eof
diff --git a/sources/pyside6/PySide6/support/generate_pyi.py b/sources/pyside6/PySide6/support/generate_pyi.py
new file mode 100644
index 000000000..92808e2a5
--- /dev/null
+++ b/sources/pyside6/PySide6/support/generate_pyi.py
@@ -0,0 +1,93 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+"""
+generate_pyi.py
+
+This script generates the .pyi files for all PySide modules.
+"""
+
+import argparse
+import inspect # noqa: F401
+import logging
+import os
+import sys
+import typing # noqa: F401
+
+from pathlib import Path
+from types import SimpleNamespace # noqa: F401
+
+# Can we use forward references?
+USE_PEP563 = sys.version_info[:2] >= (3, 7)
+
+
+def generate_all_pyi(outpath, options):
+ ps = os.pathsep
+ if options.sys_path:
+ # make sure to propagate the paths from sys_path to subprocesses
+ normpath = lambda x: os.fspath(Path(x).resolve()) # noqa: E731
+ sys_path = [normpath(_) for _ in options.sys_path]
+ sys.path[0:0] = sys_path
+ pypath = ps.join(sys_path)
+ os.environ["PYTHONPATH"] = pypath
+
+ # now we can import
+ global PySide6, inspect, typing, HintingEnumerator, build_brace_pattern
+ import PySide6
+ from PySide6.support.signature.lib.enum_sig import HintingEnumerator
+ from PySide6.support.signature.lib.tool import build_brace_pattern
+ from PySide6.support.signature.lib.pyi_generator import generate_pyi
+
+ # propagate USE_PEP563 to the mapping module.
+ # Perhaps this can be automated?
+ PySide6.support.signature.mapping.USE_PEP563 = USE_PEP563
+
+ outpath = Path(outpath) if outpath and os.fspath(outpath) else Path(PySide6.__file__).parent
+ name_list = PySide6.__all__ if options.modules == ["all"] else options.modules
+ errors = ", ".join(set(name_list) - set(PySide6.__all__))
+ if errors:
+ raise ImportError(f"The module(s) '{errors}' do not exist")
+ for mod_name in name_list:
+ import_name = "PySide6." + mod_name
+ if hasattr(sys, "pypy_version_info"):
+ # PYSIDE-535: We cannot use __feature__ yet in PyPy
+ generate_pyi(import_name, outpath, options)
+ else:
+ from PySide6.support import feature
+ feature_id = feature.get_select_id(options.feature)
+ with feature.force_selection(feature_id, import_name):
+ generate_pyi(import_name, outpath, options)
+
+
+if __name__ == "__main__":
+ parser = argparse.ArgumentParser(
+ description="This script generates the .pyi file for all PySide modules.")
+ parser.add_argument("modules", nargs="+",
+ help="'all' or the names of modules to build (QtCore QtGui etc.)")
+ parser.add_argument("--quiet", action="store_true", help="Run quietly")
+ parser.add_argument("--outpath",
+ help="the output directory (default = binary location)")
+ parser.add_argument("--sys-path", nargs="+",
+ help="a list of strings prepended to sys.path")
+ parser.add_argument("--feature", nargs="+", choices=["snake_case", "true_property"], default=[],
+ help="""a list of feature names. """
+ """Example: `--feature snake_case true_property`. """
+ """Currently not available for PyPy.""")
+ options = parser.parse_args()
+
+ qtest_env = os.environ.get("QTEST_ENVIRONMENT", "")
+ log_level = logging.DEBUG if qtest_env else logging.INFO
+ if options.quiet:
+ log_level = logging.WARNING
+ logging.basicConfig(level=log_level)
+ logger = logging.getLogger("generate_pyi")
+
+ outpath = options.outpath
+ if outpath and not Path(outpath).exists():
+ os.makedirs(outpath)
+ logger.info(f"+++ Created path {outpath}")
+ options._pyside_call = True
+ options.logger = logger
+ options.is_ci = qtest_env == "ci"
+ generate_all_pyi(outpath, options=options)
+# eof
diff --git a/sources/pyside6/PySide6/templates/common.xml b/sources/pyside6/PySide6/templates/common.xml
new file mode 100644
index 000000000..44ed931e7
--- /dev/null
+++ b/sources/pyside6/PySide6/templates/common.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2022 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem>
+ <template name="const_char_pybuffer">
+ PyObject *%out = Shiboken::Buffer::newObject(%in, size);
+ </template>
+
+ <template name="pybuffer_const_char">
+ Py_ssize_t bufferLen;
+ char *%out = reinterpret_cast&lt;char*&gt;(Shiboken::Buffer::getPointer(%PYARG_1, &amp;bufferLen));
+ </template>
+
+ <template name="uint_remove">
+ uint %out = bufferLen;
+ </template>
+
+ <template name="pybytes_const_uchar">
+ const uchar *%out = reinterpret_cast&lt;const uchar*>(PyBytes_AS_STRING(%PYARG_1));
+ </template>
+
+ <template name="pybytes_uint">
+ uint %out = static_cast&lt;uint>(PyBytes_Size(%PYARG_1));
+ </template>
+</typesystem>
diff --git a/sources/pyside6/PySide6/templates/core_common.xml b/sources/pyside6/PySide6/templates/core_common.xml
new file mode 100644
index 000000000..07bafc6ff
--- /dev/null
+++ b/sources/pyside6/PySide6/templates/core_common.xml
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem>
+
+ <template name="tuple_ok_retval">
+ %PYARG_0 = PyTuple_New(2);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[bool](ok_));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+ </template>
+
+ <template name="bool*_fix,arg">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2);
+ <insert-template name="tuple_ok_retval"/>
+ </template>
+
+ <template name="bool*_fix,arg,arg,arg,arg">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3, %4, %5);
+ <insert-template name="tuple_ok_retval"/>
+ </template>
+
+ <!-- Templates to fix bool* parameters -->
+ <template name="tuple_retval_ok">
+ %PYARG_0 = PyTuple_New(2);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[bool](ok_));
+ </template>
+
+ <template name="fix_bool*">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_);
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_args,bool*">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;ok_);
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_args,arg,bool*">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &amp;ok_);
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_arg,bool*,arg">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &amp;ok_, %3);
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_bool*,arg">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2);
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_bool*,arg,arg">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3);
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_bool*,arg,arg,arg">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3, %4);
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_bool*,arg,arg,arg,arg">
+ bool ok_;
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3, %4, %5);
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <!-- QInputDialog: these should allow threads -->
+ <template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg">
+ bool ok_;
+ %RETURN_TYPE retval_;
+ Py_BEGIN_ALLOW_THREADS
+ retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, %7, &amp;ok_, %9);
+ Py_END_ALLOW_THREADS
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg,arg">
+ bool ok_;
+ %RETURN_TYPE retval_;
+ Py_BEGIN_ALLOW_THREADS
+ retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, %7, &amp;ok_, %9, %10);
+ Py_END_ALLOW_THREADS
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_arg,arg,arg,arg,arg,arg,bool*,arg">
+ bool ok_;
+ %RETURN_TYPE retval_;
+ Py_BEGIN_ALLOW_THREADS
+ retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, &amp;ok_, %8);
+ Py_END_ALLOW_THREADS
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_arg,arg,arg,arg,arg,bool*,arg">
+ bool ok_;
+ %RETURN_TYPE retval_;
+ Py_BEGIN_ALLOW_THREADS
+ retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, &amp;ok_, %7);
+ Py_END_ALLOW_THREADS
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+
+ <template name="fix_arg,arg,arg,arg,bool*,arg,arg">
+ bool ok_;
+ %RETURN_TYPE retval_;
+ Py_BEGIN_ALLOW_THREADS
+ retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, &amp;ok_, %6, %7);
+ Py_END_ALLOW_THREADS
+ <insert-template name="tuple_retval_ok"/>
+ </template>
+ <!-- End of QInputDialog templates -->
+
+ <template name="fix_char*">
+ char val_{};
+ %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;val_);
+ %PYARG_0 = PyTuple_New(2);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[char](val_));
+ </template>
+
+ <template name="tuple_abcd_same_type">
+ %PYARG_0 = PyTuple_New(4);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b));
+ PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[$TYPE](c));
+ PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[$TYPE](d));
+ </template>
+
+ <template name="fix_number*,number*,number*,number*">
+ $TYPE a, b, c, d;
+ %CPPSELF->::%TYPE::%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d);
+ <insert-template name="tuple_abcd_same_type"/>
+ </template>
+
+ <template name="fix_number*,number*,number*,number*,args">
+ $TYPE a, b, c, d;
+ %CPPSELF->::%TYPE::%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d, %ARGUMENT_NAMES);
+ <insert-template name="tuple_abcd_same_type"/>
+ </template>
+
+ <template name="fix_native_return_number*,number*,number*,number*">
+ PyObject* _obj = %PYARG_0.object();
+ if (!PySequence_Check(_obj)
+ || PySequence_Fast_GET_SIZE(_obj) != 4
+ || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 0))
+ || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 1))
+ || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 2))
+ || !PyNumber_Check(PySequence_Fast_GET_ITEM(_obj, 3))) {
+ PyErr_SetString(PyExc_TypeError, "Sequence of 4 numbers expected");
+ } else {
+ *%1 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 0));
+ *%2 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 1));
+ *%3 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 2));
+ *%4 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 3));
+ }
+ </template>
+
+ <template name="fix_number*,number*,number*,number*,number*">
+ $TYPE a, b, c, d, e;
+ %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d, &amp;e);
+ %PYARG_0 = PyTuple_New(5);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b));
+ PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[$TYPE](c));
+ PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[$TYPE](d));
+ PyTuple_SET_ITEM(%PYARG_0, 4, %CONVERTTOPYTHON[$TYPE](e));
+ </template>
+
+ <template name="fix_args,number*,number*">
+ $TYPE a, b;
+ %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;a, &amp;b);
+ %PYARG_0 = PyTuple_New(2);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b));
+ </template>
+
+ <template name="fix_arg,int*,int*">
+ %RETURN_TYPE _ret;
+ int a, b;
+ _ret = %CPPSELF.%FUNCTION_NAME(%1, &amp;a, &amp;b);
+ %PYARG_0 = PyTuple_New(3);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](_ret));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[int](a));
+ PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[int](b));
+ </template>
+
+ <template name="return_tuple_QValidator_QString_int">
+ %RETURN_TYPE retval_ = %RETURN_TYPE(%CPPSELF.%FUNCTION_NAME(%1, %2));
+ %PYARG_0 = PyTuple_New(3);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG1_TYPE](%1));
+ PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[%ARG2_TYPE](%2));
+ </template>
+
+ <template name="repr_code">
+ QString format = QString::asprintf("%s(%REPR_FORMAT)",
+ Py_TYPE(%PYSELF)->tp_name, %REPR_ARGS);
+ %PYARG_0 = Shiboken::String::fromCString(qPrintable(format));
+ </template>
+
+ <template name="repr_qdebug">
+ QString result;
+ QDebug(&amp;result).nospace() &lt;&lt; "&lt;PySide6.MODULE." &lt;&lt; %CPPSELF &lt;&lt; '>';
+ %PYARG_0 = Shiboken::String::fromCString(qPrintable(result));
+ </template>
+
+ <template name="repr_qdebug_gui">
+ <insert-template name="repr_qdebug">
+ <replace from="MODULE" to="QtGui"/>
+ </insert-template>
+ </template>
+
+ <template name="return_internal_pointer">
+ %PYARG_0 = reinterpret_cast&lt;PyObject*>(%CPPSELF.%FUNCTION_NAME());
+ if (!%PYARG_0)
+ %PYARG_0 = Py_None;
+ Py_INCREF(%PYARG_0);
+ </template>
+
+ <!-- Helpers for modifying "bool nativeEventFilter(QByteArray, void*, long *result)"
+ to return a tuple of bool,long -->
+ <template name="return_native_eventfilter_conversion_variables">
+ qintptr resultVar{0};
+ qintptr *%out = &amp;resultVar;
+ </template>
+ <template name="return_native_eventfilter_conversion">
+ %RETURN_TYPE %out = false;
+ if (PySequence_Check(%PYARG_0) &amp;&amp; (PySequence_Size(%PYARG_0) == 2)) {
+ Shiboken::AutoDecRef pyItem(PySequence_GetItem(%PYARG_0, 0));
+ %out = %CONVERTTOCPP[bool](pyItem);
+ if (result) {
+ Shiboken::AutoDecRef pyResultItem(PySequence_GetItem(pyResult, 1));
+ *result = %CONVERTTOCPP[long](pyResultItem);
+ }
+ }
+ </template>
+
+ <template name="return_native_eventfilter">
+ %PYARG_0 = PyTuple_New(2);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](%0));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[long](*result_out));
+ </template>
+
+ <!-- templates for __reduce__ -->
+ <template name="reduce_code">
+ %PYARG_0 = Py_BuildValue("(N(%REDUCE_FORMAT))", PyObject_Type(%PYSELF), %REDUCE_ARGS);
+ </template>
+
+ <!-- Replace '#' for the argument number you want. -->
+ <template name="return_argument">
+ Py_INCREF(%PYARG_#);
+ %PYARG_0 = %PYARG_#;
+ </template>
+
+ <!-- Iterator -->
+ <template name="__iter__">
+ Py_INCREF(%PYSELF);
+ %PYARG_0 = %PYSELF;
+ </template>
+
+ <template name="to_tuple">
+ %PYARG_0 = Py_BuildValue("%TT_FORMAT", %TT_ARGS);
+ </template>
+
+ <template name="checkPyCapsuleOrPyCObject_func">
+ static bool checkPyCapsuleOrPyCObject(PyObject* pyObj)
+ {
+ return PyCapsule_CheckExact(pyObj);
+ }
+ </template>
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/templates/datavisualization_common.xml b/sources/pyside6/PySide6/templates/datavisualization_common.xml
new file mode 100644
index 000000000..6d5861322
--- /dev/null
+++ b/sources/pyside6/PySide6/templates/datavisualization_common.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem>
+ <template name="cppqlistofptrtoqlists_to_py_conversion">
+ const Py_ssize_t rowCount = %in.size();
+ PyObject* %out = PyList_New(rowCount);
+ for (Py_ssize_t r = 0; r &lt; rowCount; ++r) {
+ const QList&lt;%INTYPE_0&gt; *row = %in.at(r);
+ const Py_ssize_t columnCount = row->size();
+ PyObject *pyRow = PyList_New(columnCount);
+ for (Py_ssize_t c = 0; c &lt; columnCount; ++c) {
+ const %INTYPE_0 &amp;cppItem = row->at(c);
+ PyList_SET_ITEM(pyRow, c, %CONVERTTOPYTHON[%INTYPE_0](cppItem));
+ }
+ PyList_SET_ITEM(%out, r, pyRow);
+ }
+ return %out;
+ </template>
+
+ <template name="py_to_cppqlistofptrtoqlists_conversion">
+ const Py_ssize_t rowCount = PySequence_Size(%in);
+ %OUTTYPE &amp;result = %out;
+ result.reserve(rowCount);
+ for (Py_ssize_t r = 0; r &lt; rowCount; ++r) {
+ Shiboken::AutoDecRef rowItem(PySequence_GetItem(%in, r));
+ const Py_ssize_t columnCount = PySequence_Size(rowItem);
+ auto *row = new QList&lt;%OUTTYPE_0&gt;;
+ row->reserve(columnCount);
+ for (Py_ssize_t c = 0; c &lt; columnCount; ++c) {
+ Shiboken::AutoDecRef pyItem(PySequence_GetItem(rowItem, c));
+ %OUTTYPE_0 v = %CONVERTTOCPP[%OUTTYPE_0](pyItem);
+ row->append(v);
+ }
+ result.append(row);
+ }
+ </template>
+</typesystem>
diff --git a/sources/pyside6/PySide6/templates/gui_common.xml b/sources/pyside6/PySide6/templates/gui_common.xml
new file mode 100644
index 000000000..6a7404507
--- /dev/null
+++ b/sources/pyside6/PySide6/templates/gui_common.xml
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem>
+ <template name="QFontCharFix">
+ int size = Shiboken::String::len(%PYARG_1);
+ if (size == 1) {
+ const char *str = Shiboken::String::toCString(%PYARG_1);
+ const QChar ch(static_cast&lt;unsigned short&gt;(str[0]));
+ %RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(ch);
+ %PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "String must have only one character");
+ }
+ </template>
+
+ <template name="load_xpm">
+ Shiboken::AutoDecRef strList(PySequence_Fast(%PYARG_1, "Invalid sequence."));
+ Py_ssize_t lineCount = PySequence_Fast_GET_SIZE(strList.object());
+ for (Py_ssize_t line = 0; line &lt; lineCount; ++line) {
+ if (!Shiboken::String::check(PySequence_Fast_GET_ITEM(strList.object(), line))) {
+ PyErr_SetString(PyExc_TypeError, "The argument must be a sequence of strings.");
+ break;
+ }
+ }
+ // PySIDE-1735: Enums are now implemented in Python, so we need to avoid asserts.
+ if (PyErr_Occurred())
+ break;
+
+ auto xpm = new const char*[lineCount];
+ for (Py_ssize_t line = 0; line &lt; lineCount; ++line)
+ xpm[line] = Shiboken::String::toCString(PySequence_Fast_GET_ITEM(strList.object(), line));
+
+ %0 = new %TYPE(xpm);
+
+ delete [] xpm;
+ </template>
+
+ <template name="qmatrix_map">
+ %ARG1_TYPE a, b;
+ %CPPSELF.%FUNCTION_NAME(%1, %2, &amp;a, &amp;b);
+ %PYARG_0 = PyTuple_New(2);
+ PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%ARG1_TYPE](a));
+ PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG1_TYPE](b));
+ </template>
+
+ <template name="qimage_buffer_constructor">
+ Py_INCREF(%PYARG_1);
+ auto ptr = reinterpret_cast&lt;uchar*&gt;(Shiboken::Buffer::getPointer(%PYARG_1));
+ %0 = new %TYPE(ptr, %ARGS, imageDecrefDataHandler, %PYARG_1);
+ </template>
+
+ <template name="qcolor_repr">
+ switch(%CPPSELF.spec()) {
+ case QColor::Rgb:
+ {
+ float r, g, b, a;
+ %CPPSELF.getRgbF(&amp;r, &amp;g, &amp;b, &amp;a);
+ QString repr = QString::asprintf("PySide6.QtGui.QColor.fromRgbF(%.6f, %.6f, %.6f, %.6f)", r, g, b, a);
+ %PYARG_0 = Shiboken::String::fromCString(qPrintable(repr));
+ break;
+ }
+ case QColor::Hsv:
+ {
+ float h, s, v, a;
+ %CPPSELF.getHsvF(&amp;h, &amp;s, &amp;v, &amp;a);
+ QString repr = QString::asprintf("PySide6.QtGui.QColor.fromHsvF(%.6f, %.6f, %.6f, %.6f)", h, s, v, a);
+ %PYARG_0 = Shiboken::String::fromCString(qPrintable(repr));
+ break;
+ }
+ case QColor::Cmyk:
+ {
+ float c, m, y, k, a;
+ %CPPSELF.getCmykF(&amp;c, &amp;m, &amp;y, &amp;k, &amp;a);
+ QString repr = QString::asprintf("PySide6.QtGui.QColor.fromCmykF(%.6f, %.6f, %.6f, %.6f, %.6f)", c, m, y, k, a);
+ %PYARG_0 = Shiboken::String::fromCString(qPrintable(repr));
+ break;
+ }
+ case QColor::Hsl:
+ {
+ float h, s, l, a;
+ %CPPSELF.getHslF(&amp;h, &amp;s, &amp;l, &amp;a);
+ QString repr = QString::asprintf("PySide6.QtGui.QColor.fromHslF(%.6f, %.6f, %.6f, %.6f)", h, s, l, a);
+ %PYARG_0 = Shiboken::String::fromCString(qPrintable(repr));
+ break;
+ }
+ default:
+ {
+ %PYARG_0 = Shiboken::String::fromCString("PySide6.QtGui.QColor()");
+ }
+ }
+ </template>
+
+ <template name="validator_conversionrule">
+ QValidator::State %out;
+
+ if (PySequence_Check(%PYARG_0)) {
+ Shiboken::AutoDecRef seq(PySequence_Fast(%PYARG_0, 0));
+ const Py_ssize_t size = PySequence_Fast_GET_SIZE(seq.object());
+
+ if (size > 1) {
+ if (%ISCONVERTIBLE[QString](PySequence_Fast_GET_ITEM(seq.object(), 1)))
+ %1 = %CONVERTTOCPP[QString](PySequence_Fast_GET_ITEM(seq.object(), 1));
+ else
+ qWarning("%TYPE::%FUNCTION_NAME: Second tuple element is not convertible to unicode.");
+ }
+
+ if (size > 2) {
+ if (%ISCONVERTIBLE[int](PySequence_Fast_GET_ITEM(seq.object(), 2)))
+ %2 = %CONVERTTOCPP[int](PySequence_Fast_GET_ITEM(seq.object(), 2));
+ else
+ qWarning("%TYPE::%FUNCTION_NAME: Second tuple element is not convertible to int.");
+ }
+ %PYARG_0.reset(PySequence_Fast_GET_ITEM(seq.object(), 0));
+ Py_INCREF(%PYARG_0); // we need to incref, because "%PYARG_0 = ..." will decref the tuple and the tuple will be decrefed again at the end of this scope.
+ }
+
+ // check retrun value
+ if (%ISCONVERTIBLE[QValidator::State](%PYARG_0)) {
+ %out = %CONVERTTOCPP[QValidator::State](%PYARG_0);
+ } else {
+ PyErr_Format(PyExc_TypeError, "Invalid return value in function %s, expected %s, got %s.",
+ "QValidator.validate",
+ "PySide6.QtGui.QValidator.State, (PySide6.QtGui.QValidator.State,), (PySide6.QtGui.QValidator.State, unicode) or (PySide6.QtGui.QValidator.State, unicode, int)",
+ Py_TYPE(pyResult)->tp_name);
+ return QValidator::State();
+ }
+ </template>
+
+ <template name="qpainter_drawlist">
+ %CPPSELF.%FUNCTION_NAME(%1.constData(), %1.size());
+ </template>
+
+ <template name="inplace_add">
+ *%CPPSELF += %1;
+ return %CONVERTTOPYTHON[%RETURN_TYPE](*%CPPSELF);
+ </template>
+
+ <template name="inplace_sub">
+ *%CPPSELF -= %1;
+ return %CONVERTTOPYTHON[%RETURN_TYPE](*%CPPSELF);
+ </template>
+
+ <template name="inplace_mult">
+ *%CPPSELF *= %1;
+ return %CONVERTTOPYTHON[%RETURN_TYPE](*%CPPSELF);
+ </template>
+
+ <template name="inplace_div">
+ *%CPPSELF /= %1;
+ return %CONVERTTOPYTHON[%RETURN_TYPE](*%CPPSELF);
+ </template>
+
+ <template name="return_QString_native">
+ if (%ISCONVERTIBLE[QString](%PYARG_0))
+ %1 = %CONVERTTOCPP[QString](%PYARG_0);
+ else
+ qWarning("%TYPE::%FUNCTION_NAME: Argument is not convertible to unicode.");
+ </template>
+
+ <template name="repr_code_matrix">
+ QByteArray format(Py_TYPE(%PYSELF)->tp_name);
+ format += QByteArrayLiteral("((");
+
+ QList&lt; %MATRIX_TYPE &gt; cppArgs;
+ %MATRIX_TYPE data[%MATRIX_SIZE];
+ %CPPSELF.copyDataTo(data);
+ int matrixSize = %MATRIX_SIZE;
+ for(int size=0; size &lt; matrixSize; size++) {
+ if (size > 0)
+ format += ", ";
+ format += QByteArray::number(data[size]);
+ }
+ format += "))";
+
+ %PYARG_0 = Shiboken::String::fromStringAndSize(format, format.size());
+ </template>
+
+ <template name="reduce_code_matrix">
+ QList&lt; %MATRIX_TYPE &gt; cppArgs;
+ %MATRIX_TYPE data[%MATRIX_SIZE];
+ %CPPSELF.copyDataTo(data);
+ int matrixSize = %MATRIX_SIZE;
+ for(int size=0; size &lt; matrixSize; size++)
+ cppArgs.append(data[size]);
+
+ PyObject *type = PyObject_Type(%PYSELF);
+ PyObject *args = Py_BuildValue("(N)",
+ %CONVERTTOPYTHON[QList&lt;%MATRIX_TYPE&gt; ](cppArgs));
+ %PYARG_0 = Py_BuildValue("(NN)", type, args);
+ </template>
+
+ <template name="matrix_data_function">
+ const float* data = %CPPSELF.constData();
+ PyObject *pyData = PyTuple_New(%MATRIX_SIZE);
+ if (data) {
+ for(int i=0; i &lt; %MATRIX_SIZE; i++)
+ PyTuple_SET_ITEM(pyData, i, %CONVERTTOPYTHON[float](data[i]));
+ }
+ return pyData;
+ </template>
+
+ <template name="matrix_constructor">
+ // PYSIDE-795: All PySequences can be made iterable with PySequence_Fast.
+ Shiboken::AutoDecRef seq(PySequence_Fast(%PYARG_1, "Can't turn into sequence"));
+ if (PySequence_Size(seq) == %SIZE) {
+ Shiboken::AutoDecRef fast(PySequence_Fast(seq,
+ "Failed to parse sequence on %TYPE constructor."));
+ float values[%SIZE];
+ for(int i=0; i &lt; %SIZE; i++) {
+ PyObject *pv = PySequence_Fast_GET_ITEM(fast.object(), i);
+ values[i] = %CONVERTTOCPP[float](pv);
+ }
+ %0 = new %TYPE(values);
+ }
+ </template>
+
+ <template name="fix_args,QRectF*">
+ QRectF rect_;
+ %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;rect_);
+ %PYARG_0 = %CONVERTTOPYTHON[QRectF](rect_);
+ </template>
+
+ <template name="fix_args,QRect*">
+ QRect rect_;
+ %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;rect_);
+ %PYARG_0 = %CONVERTTOPYTHON[QRect](rect_);
+ </template>
+
+ <template name="__next__">
+ if (!%CPPSELF.atEnd()) {
+ %PYARG_0 = %CONVERTTOPYTHON[%CPPSELF_TYPE](*%CPPSELF);
+ ++(*%CPPSELF);
+ }
+ </template>
+
+ <template name="__iter_parent__">
+ %CPPSELF_TYPE _tmp = %CPPSELF.begin();
+ %PYARG_0 = %CONVERTTOPYTHON[%CPPSELF_TYPE](_tmp);
+ </template>
+
+ <template name="const_char_pybuffer">
+ PyObject *%out = Shiboken::Buffer::newObject(%in, size);
+ </template>
+
+ <template name="pybuffer_const_char">
+ Py_ssize_t bufferLen;
+ char *%out = reinterpret_cast&lt;char*&gt;(Shiboken::Buffer::getPointer(%PYARG_1, &amp;bufferLen));
+ </template>
+
+ <template name="uint_remove">
+ uint %out = bufferLen;
+ </template>
+
+ <template name="pybytes_const_uchar">
+ const uchar *%out = reinterpret_cast&lt;const uchar*>(PyBytes_AS_STRING(%PYARG_1));
+ </template>
+
+ <template name="pybytes_uint">
+ uint %out = static_cast&lt;uint>(PyBytes_Size(%PYARG_1));
+ </template>
+
+
+</typesystem>
diff --git a/sources/pyside6/PySide6/templates/opengl_common.xml b/sources/pyside6/PySide6/templates/opengl_common.xml
new file mode 100644
index 000000000..566ebe6ee
--- /dev/null
+++ b/sources/pyside6/PySide6/templates/opengl_common.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem>
+ <template name="callArrayFunction">
+ Py_ssize_t _size = PySequence_Size(%PYARG_2);
+ if (_size) {
+ $ATTR_TYPE *_list = new $ATTR_TYPE[_size];
+ if (_size) {
+ Shiboken::AutoDecRef fast(PySequence_Fast(%PYARG_2,
+ "Failed to parse sequence with type %VECTOR_TYPE."));
+ for(Py_ssize_t i=0; i &lt; _size; i++) {
+ PyObject* pv = PySequence_Fast_GET_ITEM(fast.object(), i);
+ _list[i] = %CONVERTTOCPP[$ATTR_TYPE](pv);
+ }
+ }
+ %CPPSELF.%FUNCTION_NAME(%1, _list, $ARG0);
+ delete[] _list;
+ } else {
+ %CPPSELF.%FUNCTION_NAME(%1, reinterpret_cast&lt;$ATTR_TYPE*&gt;(nullptr), $ARG1);
+ }
+ </template>
+ <template name="glGetString_return_QString">
+ const GLubyte *us = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES);
+ const QString s = QString::fromLocal8Bit(reinterpret_cast&lt;const char *&gt;(us));
+ %PYARG_0 = %CONVERTTOPYTHON[QString](s);
+ </template>
+</typesystem>
diff --git a/sources/pyside6/PySide6/templates/widgets_common.xml b/sources/pyside6/PySide6/templates/widgets_common.xml
new file mode 100644
index 000000000..b0dee43cd
--- /dev/null
+++ b/sources/pyside6/PySide6/templates/widgets_common.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+// Copyright (C) 2018 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+-->
+<typesystem>
+
+ <template name="replace_child">
+ $CHILD_TYPE* oldChild = %CPPSELF.$FUNCTION_GET_OLD();
+ if (oldChild &amp;&amp; (oldChild != $CPPARG)) {
+ Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[$CHILD_TYPE*](oldChild));
+ Shiboken::Object::setParent(nullptr, pyChild);
+ Shiboken::Object::releaseOwnership(pyChild);
+ }
+ Shiboken::Object::setParent(%PYSELF, $PYARG);
+ </template>
+
+ <template name="qgraphicsitem_pysequence">
+ const Py_ssize_t numItems = PySequence_Size(%PYARG_1);
+ Shiboken::AutoArrayPointer&lt;QGraphicsItem*&gt; %out(numItems);
+ for (Py_ssize_t i = 0; i &lt; numItems; ++i) {
+ %out[i] = %CONVERTTOCPP[QGraphicsItem*](PySequence_Fast_GET_ITEM(%PYARG_1, i));
+ }
+ </template>
+
+ <template name="qgraphicsitem_pyobject">
+ Shiboken::AutoDecRef object(PyList_New(0));
+ for (int i=0, max=numItems; i &lt; max; i++) {
+ PyList_Append(object, %CONVERTTOPYTHON[QGraphicsItem*](%in[i]));
+ }
+ PyObject *%out = object.object();
+ </template>
+
+ <template name="qstyleoptiongraphicsitem_pyobject">
+ Shiboken::AutoDecRef option_object(PyList_New(0));
+ for (int i=0, max=numItems; i &lt; max; i++) {
+ const QStyleOptionGraphicsItem* item = &amp;%in[i];
+ PyList_Append(option_object, %CONVERTTOPYTHON[QStyleOptionGraphicsItem](item));
+ }
+ PyObject* %out = option_object.object();
+ </template>
+
+ <template name="pysequence_qstyleoptiongraphicsitem">
+ const Py_ssize_t numOptions = PySequence_Size(%PYARG_2);
+ Shiboken::AutoArrayPointer&lt;QStyleOptionGraphicsItem&gt; %out(numOptions);
+ for (Py_ssize_t i=0; i &lt; numOptions; ++i) {
+ %out[i] = %CONVERTTOCPP[QStyleOptionGraphicsItem](PySequence_Fast_GET_ITEM(%PYARG_1, i));
+ }
+ </template>
+
+ <template name="pysequencesize_int">
+ int %out = PySequence_Size(%PYARG_1);
+ </template>
+
+</typesystem>